sgbd 2

Download SGBD 2

If you can't read please download the document

Upload: deepspace77

Post on 11-Jun-2015

507 views

Category:

Documents


4 download

TRANSCRIPT

Arhitectura ANSI-SPARC pe 3 nivele pentru bazele de const din: nivelul extern, nivelul conceptual si nivelul intern Arhitectura unui instrument OLAP este o arhitectura pe: 3 niveluri Arhitectura unui instrument OLAP include: un motor analitic pe post de server pentru aplicatiile desktop Arhitectura unui instrument OLAP include: una sau mai multe baze de date Arhitectura unui instrument OLAP include: uneltele utilizatorului final pentru operatii de raportare etc. si un motor analitic pe post de server pentru aplicatiile desktop Autorul conceptului de "data warehouse" (depozit de date) este: William Inmon Cardinalul relatiei rezultate din produsul cartezian de relatii este: mai mare dect cardinalul relatiei rezultate Cel mai simplu mod de vizualizare a datelor dintr-un depozit de date este reprezentat de: un cub n-dimensional CGI nseamn: Common Gateway Interface Cunostintele sunt: informatii contextualizate Datele dintr-un sistem OLTP: ) sunt date dinamice, detaliate, incosistente, fragmentate, redundante constituie o surs de date pentru depozitele de date Datele sunt: informatii primare Depozitele de date constituie baza informational a: sistemelor de suport pentru decizii (DSS) Depozitele de date difer fat de sistemele informatice clasice din punctul de vedere al ciclului de dezvoltare si de viat si difer fat de sistemele OLTP din punctul de vedere al frecventei si tipului de tranzactii permise Fluxul de intrare a datelor n depozitul de date const din operatii de: actualizare n loturi Forma normal Boyce-Codd este o variant mai tare a: FN3 n algebra relational exist: operatii unare si binare Independenta fat de strategiile de acces la datele dintr-o baz de date este: Necesar Informatiile sunt: date validate, organizate si relationate Integritatea referential a bazei de date se refer la: relatiile din baza de date Interogrile de actiune sunt interogri de: actualizare, adugare, stergere si creare de table Intr-o baz de date este necesar : si independenta fizic si independenta logic a datelor Intr-un depozit de date este necesar s existe: un sistem coerent de codificare si reprezentare a informatiilor un sistem consistent de unitti de msur un sistem stabil de reprezentare fizic a datelor Mecanismul charge-back pentru utilizarea resurselor este o caracteristic a: ) depozitelor de date Metadatele care intr n componenta unui depozit de date pot fi: metadate administrative Metadatele care intr n componenta unui depozit de date pot fi: metadate pentru optimizare MIDI inseamn:: Musical Instrument Digital Interface Modelul relational se bazeaz pe: ) noiunea matematic de submultime Nivelul conceptual; descrie datele si relatiile dintre ele, fr detalii de implementare Nivelul extern: reprezint modurile diferite n care diferiti utilizatori ai bazei de date percep datele stocate n aceasta O baz de date este: c) un model al microuniversului la care se refer O baz de date este:= c) si (a) si (b) O baz de date multimedia este o baz de date care inglobeaz informatie de tip: text, grafic, sonor, animat, video

O cheie de acces: pentru depozitele de date cuprinde si o variabil temporal O relatie este n FN2 dac este n FN1 si dac : ) oricare dintre atributele sale care nu fac parte din cheia primar este complet dependent functional de cheia primar O relatie este n FN3 dac este n FN2 nici unul dintre atributele sale care nu fac parte din cheia primar nu este, prin tranzitivitate, dependent funcional de cheia primar OLTP nseamn: on line transactional processing Operatiile de actualizare a depozitelor de date sunt: de tip adugare Pentru optimizarea interogrilor pe baze de date relatioanle se recomand: toate cele de mai sus Principalele activitti care compun asa-numitul out-flow din depozitele de date sunt: accesarea si livrarea datelor Printre componentele unui depozit de date se numr: componenta back-end Printre componentele unui depozit de date se numr: componenta front-end si managerul depozitului de date Printre componentele unui depozit de date se numr: componenta front-end si componenta backend Printre componentele unui depozit de date se numr: datele detaliate si metadatele Printre componentele unui depozit de date se numr: datele operationale si metadatele; Printre componentele unui depozit de date se numr: datele sintetizate si metadatele Printre componentele unui depozit de date se numr: managerul depozitului de date Printre componentele unui depozit de date se numr: metadatele Printre componentele unui depozit de date se numr: unelte de dezvoltare a aplicatiilor Printre componentele unui depozit de date se numr: unelte pentru sisteme de informatii executive Printre componentele unui depozit de date se numr: uneltele de data mining si OLAP si uneltele de raportare si interogare Printre regulile cu care W. Inmon a definit depozitele de date se numr: depozitul de date si mediul operational trebuie s fie separate, depozitul de date conine date istorice referitoare la o lung perioad de timp Printre regulile cu care W. Inmon a definit depozitele de date se numr: datele din depozitul de date trebuie s fie integrate Printre regulile cu care W. Inmon a definit depozitele de date se numr: datele din depozitul de date sunt orientate spre obiect Procesul de ierarhizare si relocare a datelor intrate ntr un data warehouse down-flow Procesul de sintetizare, mpachetare si distribuire a datelor intrate ntr un data warehouse poart numele de up-flow Proiectarea bazei de date la nivel logic const din realizarea: schemei externe si a schemei conceptuale a bazei de date Redundanta datelor: este creat n mod intentionat n depozitele de date Reprezentarea fizic a datelor din baza de date este descris la nivelul: intern Rezolutia monitorului VGA este de 640x480 pixeli Schema clasic a unui depozit de date este: de tip stea Sistemele de gestiune a bazelor de date prerelationale sunt: sistemele ierahice si sistemele de tip retea Sistemele de gestiune a bazelor de date relationale comerciale sunt sistemele de gestiune care respect: b) cele 12 reguli ale lui E.F. Codd Sistemele de gestiune post-relationale ale bazelor de date sunt ) sistemele orientate obiect si sistemele hibride; Transformrile si circuitul datelor n depozitele de date sunt descrise prin urmtoarele tipuri de fluxuri:: in-flow, meta-flow, out-flow, down-flow, up-flow Un depozit de date este: o colectie tematic si integrat de date si o colectie de date nevolatil dar dinamic n timp Un index se poate sterge cu clauza: DROP INDEX Un model de date este: o colectie de concepte care descriu structura bazei de date si un set de operatii de baz care descriu modul de lucru cu baza de date Un sistem de gestiune a bazei de date este o component: software

Un sistem de gestiune a bazei de date este: si (a) si (b) Valorificarea informatiei de date se din depozitele poate face prin analiza multidimensional Valorificarea informatiei din depozitele de date se poate face prin: mecanismul OLAP Valorificarea informatiei din depozitele de date se poate face prin: mecanismul OLAP si analiza multidimensional

Cap. 8 - Aplicarea controalelor de securitate folosind DCL 1. Legislatia referitoare la securitate A. Impune utilizarea rolurilor in administrarea securitatii bazei de date B. Restrictioneaza utilizarea datelor personale C. Impune administratorilor de baze de date sa protejeze reteaua de calculatoare D. Impune plasarea identitatilor furate in internet E. Impune avertizarea fiecarei personae individuale care ar putea avea date compromise. Raspuns B, E 2. Securitatea este necesara pentru ca: A. Persoanele oneste fac greseli B. Controalele de securitae ale aplicatiilor nu sunt adecvate C. 80% dintre fraude sunt comise de hackeri din exterior D. Bazele de date conectate la internet sunt vulnerabile E. Controalele de securitate mentin onestitatea persoanelor Raspuns A, B, D, E 3. Intre intrusii care incearca sa penetreze sistemele conectate la internet se numara A. Auditori bancari B. Spioni ai concurentei C. Autori de jurnale web D. Hackeri E. Angajati nemultumiti Raspuns B, D, E 4. Componentele care trebuie protejate sunt: A. Statiile de lucru client B. Serverele C. Bazele de date D. Sistemele de operare E. Retelele Raspuns A, B, C, D, E 5. In Microsoft SQL Server, un cont de acces (cont de utilizator) A. Poate sa se conecteze la oricate baze de date B. Primeste automat privilegii de acces la baza de date C. Poate folosi autentificarea Windows D. Poate fi autentificat de Microsoft SQL Server E. Detine o schema a bazei de date Raspuns A, C, D 6. In SQL Server , o baza de date A. Este detinuta de un cont de acces B. Poate avea alocati unu sau mai multi utilizatori C. Poate obtine date de system (de exemplu, master) si date de utilizator (aplicatie). D. Poate avea attribute privilegii E. Exista o colectie logica de obiecte de baze de date Raspuns B, C, E 7. In Oracle, un cont de utilizator A. Se poate conecta la oricate baze de date B. Primeste automat privilegii la baze de date C. Poate folosi autentificarea sistemului de operare D. Poate fi autentificat de sistemul DBSM Oracle E. Detine o schema a bazei de date Raspuns B, C, D, E

1

8. In Oracle, o baza de date A. Este detinuta de un utilizator B. Poate avea definite unul sau mai multe conturi de utilizator C. Poate contine date system (de exemplu, schema sistemului) si date de utilizator (aplicatie) D. Este acelasi lucru cu o schema E. Este gestionata de o instanta Oracle Raspuns B, C, E 9. Privilegiile de system A. Sunt acordate intr-o maniera similara Oracle, Sybase si Microsoft SQL Server B. Sunt specifice unui obiect al bazei de date C. Permit beneficiarului sa efectueze o serie de functii administrative pe server, cum ar fi oprirea serverului D. Sunt anulate cu ajutorul instructiunii SQL REMOVE E. Variaza intre bazele de date provenite de la producatori diferiti Raspuns A, C, E 10. Privilegiile de obiecte A. Sunt acordate intr-o maniera sililara in Oracle, Sybase si Microsoft SQL Server B. Sunt specifice unui obiect al bazei de date C. Permit beneficiarului sa efectueze o serie de functii administrative pe server, cum ar fi oprirea serverului D. Sunt anulate cu ajutorul instructiunii SQL REMOVE E. Sunt atribuite cu ajutorul instructiunii SQL GRANT Raspuns A, B, E 11. Utilizarea clauzei WITH GRANT OPTION la atribuirea privilegiilor de obiecte A. Permite beneficiarului sa acorde privilegiul altor utilizatori B. Acorda privilegiile DBA ale beneficiarului intregii baze de date C. Poate conduce la probleme de securitate D. Va fi revocata in cascada daca privilegiul este ulterior revocat E. Este o procedura recomandata pe scara larga pentru ca este comoda in utilizare Raspuns A, C, D 12. Rolurile A. Pot fi atribuite unui singur utilizator B. Pot fi partajate de mai multi utilizatori C. Pot exista inainte de existenta utilizatorilor D. Pot contine oricate privilegii de obiecte E. Pot contine un singur privilegiu de obiecte Raspuns B, C, D 13. Posibilele dezavantaje ale utilizarii rolurilor pentru securitate sunt A. Sunt mai dificil de administrat decat privilegiile individuale B. Sunt eliminate atunci cand este sters utilizatorul C. Sunt eliminate atunci cand sunt sterse privilegiile D. Pot fi atribuite fara a lua in considerare toate privilegiile continute E. Este necesara o perioada suplimentara de instruire pentru administratorii care trebuie sa le foloseasca Raspuns D, E 14. Vizualizarile pot ajuta la implementarea politicii de securitate prin restrictionarea coloanelor dintr-un table la care are acces un utilizator A. Restrictionarea coloanelor dintr-un tavel la care are acces un utilizator B. Restrictionarea bazelor de date la care are acces un utilizator C. Restrictionarea randurilor dintr-un table la care acces un utilizator D. Stocarea rezultatelor auditarii bazei de date E. Monitorizarea intrusilor la baza de date Raspuns A, C2

15. Rolurile sunt create in Microsoft SQL Server si Sybase Adaptive Server utilizand A. Procedura memorata sp_create_role B. Procedura memorata sp_add_role C. Procedura memorata sp_addrole D. Instructiunea CREATE TABLE E. Instructiunea GRANT Raspuns C 16. Rolurile sunt create in Oracle folosind A. Procedura memorata sp_create_role B. Procedura memorata sp_add_role C. Procedura memorata sp_addrole D. Instructiunea CREATE ROLE E. Instructiunea GRANT Raspuns D 17. Privilegiile de roluri sunt atribuite utilizatorilor de baze de date in Microsoft SQL Server si Sybase Adaptive Server folosind A. Procedura memorata sp_create_role_member B. Procedura memorata sp_add_role_member C. Procedura memorata sp_addrolemember D. Instructiunea CREATE ROLE MEMBER E. Instructiunea GRANT Raspuns C 18. Privilegiile de roluri sunt atribuite utilizatorilor de baze de date in Oracle folosind A. Procedura memorata sp_create_role_member B. Procedura memorataq sp_add-role_member C. Procedura memorata sp_addrolemember D. Instructiunea CREATE ROLE MEMBER E. Instructiunea GRANT Raspuns E 19. Scrieti instructiunea SQL pentru a acorda utilizarorilor manager_1 si manager_2 privilegiile SELECT, INSERT si DELETE pentru randurile din tabelul EMPLOYESS. Daca vreti sa tastati instructiunea, la inceput va trebui sa creati utilizatorii manager_1 si manager_1 Raspuns GRANT SELECT, INSERT, DELETE ON EMPLOYEE TO manager_1, manager_2< 20. Scrieti instructiunea SQL pentru a adauga privilegiile INSERT, UPDATE si DELETE ale utilizatorului clerk_127 la tabelul MOVIE. Daca vreti sa testati instructiunea, la inceput va trebui sa creati utilizatorul clerk_127 Raspuns REVOKE INSERT, UPDATE, DELETE ON MOVIE FROM clerk_127;

3

Cap. 9 - Mentinerea integritatii bazei de date cu ajutorul tranzactiilor

1. O tranzactie A. Poate fi procesata partial B. Nu poate fi procesata partial C. Schimba baza de date dintr-o stare consistenta in alta D. Este denumita uneori unitate de lucru E. Are proprietatile deschise de acronimul ACID Raspuns B, C, D, E 2. Litera A din acronimul ACID provine de la A. Automat B. Auxiliar C. Atomicitate D. Augumentat E. Administrare Raspuns C 3. Litera C din acronimul ACID provine de la A. Corelat B. Consistenta C. Codificare D. Calculat E. Consolidat Raspuns B 4. Litera I din acronimul ACID provine de la A. Integrare B. Instructiune C. Iconic D. Izolare E. Informatie Raspuns D 5. Litera D de la acronimul ACID provine de la A. Durabilitate B. Dedicatie C. Dualitate D. Date E. Distributie Raspuns A 6. Procesul care anuleaza modificarile efectuate de o tranzactie esuata este numit A. Inregistrarea tranzactiei B. Finalizare C. Refacere D. Recuperare E. Crearea unui punct de salvare Raspuns C 7. Procesul care face permanente modificarile efectuate de o tranzactie este numit A. Inregistrarea tranzactiei B. Finalizare C. Refacere D. Crearea unui punct de salvare E. Salvarea tranzactiei Raspuns B4

8. Suportul pentru tranzactii in bazele de date relationale include: A. Identificarea inceputului fiecarei tranzactii B. Identificarea sfarsitului fiecarei tranzactii C. Managementul bazei de date dristibuite D. Salvari periodice ale bazei de date E. Jurnalul de tranzactii Raspuns A, B, E 9. Microsoft SQL Server suporta urmatoarele moduri de tranzactii: A. Finalizare automata B. Automat C. Durabil D. Explicit E. Implicit Raspuns A, D, E 10. Oracle suporta urmatoarele moduri de tranzactii: Finalizare auiomata A. Finalizarea automata B. Automat C. Durabil D. Explicit E. Implicit Raspuns A, E 11. In modul implicit pentru tranzactii din Microsoft SQl Server, o tranzactie noua este initiata de A. Conectarea la baza de date B. O instructiune COMMIT C. O instructiune ROLLBACK D. O Instructiune INSERT E. O instructiune SELECT Raspuns D 12. In modul implicit pentru tranzactii in Oracle, o tranzactie noua este initiata de A. Conectarea la baza de date B. O instructiune COMMIT C. O instructiune ROLLBACK D. O Instructiune INSERT E. O instructiune SELECT Raspuns A, B, C 13. Instructiunile SQL utilizate pentru gestionarea tranzactiilor in Microsoft SQL Server si Sybase Adaptive Server sunt A. BEGIN TRANSACTION B. END TRANSACTION C. COMMIT D. ROLLBACK E. SET AUTOCOMMIT Raspuns A, C, E 14. Instructiunile SQL utilizate pentru gestionarea tranzactiilor in Oracle sunt A. BEGIN TRANSACTION B. END TRANSACTION C. COMMIT D. ROLLBACK E. SET AUTOCOMMIT Raspuns C, D, E5

15. In My SQL, suportul pentru tranzactii A. Se aplica doar motoarelor de stocare ISAM si MyISAM B. Se aplica doar motoarelor de stocare InnoDB si BDB C. Include modulele finalizare automata, implicit si explicit D. Include modurile finalizare automata si implicit E. Include modurile finalizare automata si explicit Raspuns B, D 16. Instructiunile SQL utilizate pentru gestionarea tranzactiilor in DB2 UDB sunt A. BEGIN TRANSACTION B. END TRANSACTION C. COMMIT D. ROLLBACK E. SAVE POINT Raspuns C, D, E 17. Cantitatea de date afectata de o blocare (granularitatea blocarii) poate fi A. O baza de date B. Un tabel C. Un rand D. O coloana E. Un bloc sau o pagina Raspuns A, B, C, D, E 18. Probelma actualizarii concurente A. Este o consecinta a partajarii simultane a datelor B. Nu poate aparea cand este activata (ON) optiunea AUTOCOMIT C. Este motivul pentru care trebuie asigurat suport pentru blocarea tranzactiilor D. Apare cand doi utilizatori ai bazei de date initiaza instructiuni SELECT care intra in conflict E. Apare cand doi utilizatori ai bazei de date efectueaza actualizari conflictuale acelorasi date Raspuns A, C, E 19. O blocare A. Este un element de control atasat datelor pentru a le rezerva in scopul actualizarii de catre utilizator B. Este anulata de obicei atunci cand are loc o operatie COMMIT sau ROLLBACK C. Are setat un interval de asteptare in sistemul DB2 si alte produse RDBMS D. Poate provoca aparitia unor conflicte atunci cand alti utilizatori incearca sa actualizeze datele blocate E. Poate avea niveluri si un protocol de extindere in unele produse RDBMS Raspuns B, C, D, E 20. O interblocare A. Este o blocare care a depasit intervalul de asteptare si din acest motiv nu mai este necesara B. Apare cand doi utilizatori ai bazei de date solicita simultar blocarea unor date blocate de celalalt utilizator C. Poate, teoretic, sa plaseze doi sau mai multi utilizatori intr-o stare de asteptare finita D. Poate fi rezolvata prin detectarea interblocarilor in unele sisteme RDBMS E. Poate fi rezolvata prin intervale de asteptare a blocarii in unele sisteme EDBMS Raspuns B, D, E

6

Capitolul 10 - Integrarea limbajului SQL in aplicatii 1. Un cursor este A. Colectia de randuri returnate de o interograre la baza de date B. Un pointer(indicator) intr-un set de rezultate C. Acelasi lucru cu un set de rezultate D. Un buffer care pastreaza randurile extrase din baza de date E. O metoda de analiza a performantei instructiunilor SQL Raspuns B 2. Un set de rezultate este: A. Colectia de randuri returnate de o interogare la baze de date B. Un pointer (indicator) intr-un cursor C. Acelasi lucru cu un cursor D. Un buffer care pastraza randurile extrase din baza de date E. O metoda de analiza a performantei instructiunilor SQL Raspuns A 3. Inainte ca randurile sa poate fi extrase dintr-un cursor, cursor trebuie sa fie: A. Declarat B. Finalizat C. Deschis D. Inchis E. Dezalocat F. Raspus A, C 4. Cursoanele sunt: A. Destinate sa anuleze nepotrivirea dintre modul in care trateaza rezultatele unei interogari limbajele orientate pe obiecte si bazele de date relationale B. Destinate sa anuleze nepotrivirea dintre modul in care trateaza rezultatele unei interogori limbajele procedurale si bazele de date relationale C. Incluse in limbajul Oracle PL/SQL D. Incluse in limbajul Sybase Transact-SQL E. Incluse in limbajul Microsoft Transact-SQL Raspuns B, C, D, E 5. Numele cursorului este inclus in: A. Instructiunea DECLARE CURSOR B. Instructiunea SELECT C. Instructiunea OPEN D. Instructiunea FETCH E. Instructiunea CLOSE Raspuns A, C, D, E 6. Numele cursorului trebuie sa fie unic in A. Un tabel B. Un rand C. Un set de rezultate D. O baza de tate E. Un program Raspuns E 7. O instrctiune OPEN pentru cursor A. Determina intodeauna rularea interogarii si completarea setului de rezultate cu date B. Pentru a determina rularea interogarii si plasarea unor date in setul de rezultate C. Trebuie sa inclusa o clauza INTO D. Trebuie sa includa numele cursorului E. Trebuie sa includa numele tabelului (tabelelor) Raspuns B, D7

8. ODBC este A. O interfata API standars pentru conectarea la sistemele DBMS B. Independent de orice limbaj, sistem de operare sau sistem DBMS C. Un standard Micrososft D. Utilizat in programele Java E. Flexibil in tratarea limbajelor SQL proprietare Raspuns A, B, E 9. JDBC este: A. O interfata API standard pentru conectarea la sistemele DBMS B. Independent de orice limbaj, sistem de operare sau sistem DBMS C. Un standard Microsift D. Utilizat de programele java E. Flexibil in tratarea limbajelor SQL proprietate Raspuns A, D, E 10. JSQL este A. Un standard Sun Microsystems B. O metoda de inglobare a instructiunilor in java C. O extensie a unui standard ISO/ANSI D. O solutie middleware E. Independent de orice limbaj, sistem de operare sau sistem DBMS Raspuns B, C 11. Solutiile middleware pentru conexiunile java A. Folosesc metode java standard pentru a crea un sistem RDBMS B. Fac sistemul RDBMS sa arate la fel ca o baza de date orientata pe obiecte C. Ofera o metoda de inglobare a instructiunilor SQL in codul Java D. Sunt independente de orice limbaj, sistem de operare sau sistem DBMS E. Ruleaza de obicei intr-un server situat la distanta Raspuns A, B, E 12. Microsoft .NET Frameworks include A. Limbajul Transact-SQL B. Common Language Rutime (CLR) C. Common Gateway Interface (CGI) D. Framework Class Libraries (FCL) E. Infrastructura de suport pentru diferite specificatii de retea, limbaje de programare si platforme Raspuns B, D, E 13. Limbajul SQL complet computational include instructiuni pentru A. Scrierea de rapoarte B. Tratarea erorilor C. Cicluri D. Ramificari E. Procesarea cursorului Raspuns B, C, D, E 14. O procedura de declansare este A. Executata doar atunci cand este apelata B. Executata automat pe baza unui eveniment din baza de date C. Scrisa intr-un limbaj neprocedural D. Scrisa intr-un limbaj procedural E. Stocata in baza de date Raspuns B, D, E

8

15. O procedura memorata este: A. Executata doar atunci cand este apelata B. Executata automat pe baza unui eveniment din baza de date C. Scrisa intr-un limbaj neprocedural D. Scrisa intr-un limbaj procedural E. Stocata in baza de date Raspuns A, D, E 16. Transact-SQL A. Apare in Oracle si Microsoft SQL Server B. A aparut prima data in 1987 C. Include limbajul SQL standard insotit de extensii procedurale D. A fost dezvoltat in partenereriat de oracle si Sybase E. Este limbajul folosit pentru numeroase proceduri memorate oferite de Microsoft si sybase Raspuns C, E 17. Elementele de limbaj incluse in Transact-SQL sunt A. BEGIN si END pentru a incepe si incheia blocurile de instructiuni B. WHILE pentru repetarea instructiunilor C. Instructiunile SQL DDL, DQL, DML si DCL D. DECLARE pentru definirea variabilelor E. GOTO si EXIT pentru iesirea din cicluri Raspuns A, B, C, D 18. PL/SQL A. A fost cunoscut initial ca Ada B. A fost lansat prima data in 1991 C. A fost dezvoltat de CIA D. Nu include instruciuni SQL standard E. A aparut prima data in sistemul Oracle versiunea 6 Raspuns B, D, E 19. Elementele de limbaj incluse in PL/SQL sunt A. DECLARE pentru definirea variabilelor B. WAITFOR pentru intarzierea executarilor instructiunilor C. EXCEPTION pentru tratarea exceptiilor D. FOR LOOP si WHILE pentru formarea ciclurilor E. instructiunea SELECT Raspuns A, C, D 20. Elementele de limbaj incluse atat in PL/SQL, cat si in TRANSACT-SQL sunt A. BACKUP si RESTORE pentru salvarea si restaurarea elementelor din baza de date B. IFELSE pentru executarea conditionata a instructiunilor C. NULL ca indicator care nu executa nici o actiune D. DECLARARE pentru definirea variabilelor E. RETURN pentru iesirea dintr-un bloc de instructiuni Raspuns B, D, E

9

Cap.11 Elemente de ajustare si performanta ale limbajului SQL 1. Cerintele pentru performanta A. Ar trebui stabilite dupa ajustarea instructiunilor SQL B. Asigura o cale de identificare a instructiunilor ce necesita ajustare C. Sunt mai bune atunci cand contin criterii complexe D. Asigura o cale de a afla cand se incheie particularizarea unei interograri E. Sunt dezvoltate doar pentru a-I face pe auditori fericiti Raspuns B, D 2. Criteriile si scrierile efectuate pe disc pot fi diminuate A. Alocand buffere de capacitate suficienta B. Plasand toate fisierele bazei de dte pe o singura unitate de disc C. Introducand toata baza de date in memorie D. Adaugand indexuri pentru toate coloanele importante din tabel E. Dispersand fisierele pe toate unitatile de disc disponibile Raspuns A, C, E 3. Sistemul calculatorului poate fi ajustat A. Colectand date statistice ale bazei de date B. Aplicand actualizarile de securitate disponibile C. Selectand componente hardware rapide si fiabile D. Respectand recomandarile de ajustare ale sistemului SGBD E. Consultand un ghid de ajustare al sistemului de operare Raspuns C, E 4. Un proiect eficient de tabel include A. Folosirea tipului VARCHAR pentru toate de tip caracter cu lungime variabila B. Folosirea celui mai mic tip de data numerica posibil care retine valorile datelor C. Folosind proceduri de declansare oricand este posibil D. Folosind tipuri de date identice pentru cheile externe corespunzatoare E. Folosind tipuri de date identice pentru toate coloanele cu cheie primara Raspuns B, D 5. Planul de executie a unei interogari A. Descrie modul in care va rula sistemul DBMS o interogare B. Este stocat in zona de cache SQL C. este creat folosind utilitarul pentru planuri explicative al sistemului RDBMS D. Necesita un tabel de planuri pentru stocarea rezultatelor explicative E. Necesita folosirea unei proceduri memorate Rezultat A, C, D 6. Optimizatorul de interogari A. Creaza un plan de executie a interogarii in tabelul de planuri B. Determina cea mai buna cale de executie a unei instructiuni SQL C. Poate folosi date statistice adunate din baza de date D. Poate folosi reguli aplicate modului in care a fost scrisa instructiunea E. Poate fi bazat pe cost sau bazat pe reguli Raspuns B, C, D, E 7. Pentru a scrie interogari proiectate corect, dezvoltatorul trebuie A. Sa stie caracteristicile datelor din baza de date B. Sa potriveasca tipurile de date in predicate C. Sa foloseasca indicii cat mai des posibil D. Sa evite coloanele si tabelele care nu sunt necesare E. Sa maximizeze numarul de randuri din fiecare set de rezultate Raspuns A, B, D

10

8. Scanarile unui tabel pot fi evitate A. Incluzand o clauza WHERE care refera o coloana indexata B. Folosind GROUP BY in loc de DISTINCT C. Asigurandu-va ca datele statistice sunt actualizate D. Configurand cel putin un predicat sa faca referire la coloana principala a unui index E. Evitand coloanele care nu sunt folositoare Raspuns A, C, D 9. Un index nu poate fi folosit cand A. Clauza WHERE face referire la a doua coloana a unui index B. Exista o clauza LIKE care face referire la un sir de comparatie care contine un caracter de inlocuire (cu exceptia primei pozitii a sirului) C. Operatorul NOT este folosit intr-un predicat D. O functie SQL este inclusa intr-o comparatie de coloane (exceptand cazul in care corespunde unui index bazat pe functii) E. Operatorul NOT EQUAL este folosit intr-un predicat. Raspuns A, C, D, E 10. Aspectele privind folosirea indexurilor includ A. Amplasarea de indexuri pentru toate coloanele actualizate frecvent B. Amplasarea de indexuri pentru coloanele cu cheie externa C. Evitarea suprapunerii indexurilor D. Crearea de indexuri pentru coloanele care au doar cateva valori posibile E. Evitarea indexurilor unice Raspuns B, C 11. Aspectele de ajustare privitoare la MySQL include A. Indexuri bazate pe functii B. Indexuri rezumat C. Indexuri organizate pe grupuri D. Optiunile motorului de stocare E. Indexuri bit-map Raspuns B, D 12 Aspecte de ajustare privitoare la Oracle include A. Indexuri bazate pe functii B. Indexuri rezumat C. Indexuri organizate pe grupuri D. Optiunile motorului de stocare E. Indexuri bit-map Raspuns A, E 13. Aspectele de ajustare privitoare la Microsoft SQL Sercer include A. Indexuri bazate pe functii B. Indexuri rezumat C. Indexuri organizate pe grupuri D. Optiunile motorului de stocare E. Indexuri bit-map Raspuns C 14. Un plan explicativ in Oracle A.Necesita folosirea unui tabel de planuri B. Contine o coloana PLAN_ID pentru o identificare unica C. Poate fi vizualizat folosind intrumentul Entreprinse Manager D. Poate fi vizualizat folosind limbajul SQL prin selectarea din tabelul de planuri E. Este creat folosind instructiunea CREATE_PLAN Raspuns A, C, D 15. Un plan de executie In Microsoft SQL Server A. Necesita folosirea unui tabel de planuri11

B. Poate fi afisat folosind o optiune din utilitarul SQL Query Analyzer C. Afiseaza planul de executie intr-un format text D. Afiseaza planul de executie intr-un format grafic E. Poate fi vizualizat in SQL prin selectarea din tabelul de planuri Raspuns B, D

16. La ajustarea instructiunii INSERT , ar trebui luata in consideratie A. Intretinerea indexului B. Expansiunea randului C. Optiunea CASCADE D. Spatiul liber adecvat E. Rescrierile interogarilor Raspuns A, D 17. La ajustarea interactiunii UPDATE, ar trebui luata in consideratie A. Intretinerea indexului B. Expasnsiunea randului C. Optiunea CASCADE D. Spatiul liber adecvat E. Rescrierea interogarilor Raspuns A, B 18. La ajustarea instructiunii DELETE, ar trebui sa die luata in consideratie A. Intretinerea indexului B. Expansiunea randului C. Optiunea CASCADE D. Spatiul liber adecvat E. Rescrierile interogarilor Raspuns A, C 19. Tipurile de date ar trebui sa corespunda A. pentru toate coloanele cu cheie primara B. Intre cheia primara si coloanele corespunzatoare cu cheie secundara C. Intre cheia primara si coloanele corespunzatoare cu cheie externa D. Intre valorile din coloana si valorile literale comparate in predicate E. Pentru toate indexurile bazate pe functii Raspuns C, D 20. Principala cauza a problemelor legate de performantele interogarilor este A. un sistem de operare slab ajustat B. O instructiune SQL redactata neprofesionist C. Supraincarcarea procedurii de declansare D. Supraancarcarea intretinerii indexurilor E. Expansiunea randului Raspuns B

GMX

12

SISTEME DE GESTIUNE A BAZELOR DE DATE 2007-2008 1) O baz de date este: a) o colectie de date aflate n relatie unele cu altele si structurat astfel nct s poat servi unui anumit scop b) un set de date corelate si organizate n scopul prelucrrii lor rapide si concomitente de ctre mai multe persoane. c) si (a) si (b) d) nici (a) nici (b) Raspuns C 2) O baz de date este: a) un tabel organizat pe coloane b) o list organizat pe linii c) un model al microuniversului la care se refer Raspuns C 3) Datele sunt: a) informatii contextualizate b) cunostinte care au suferit prea putine prelucrari c) informatii primare Raspuns C 4) Informatiile sunt: a) date contextualizate b) date validate, organizate si relationate c) cunostinte care au suferit doar putine prelucrari Raspuns B 5) Cunostintele sunt: a) informatii contextualizate b) date contextualizate c) informatii validate, organizate si relationate Raspuns A 6) Un model de date este: a) o colectie de concepte care descriu tipurile de date din baza de date si un set de operatii de baz care descriu modul de interogare si actualizare a acestora b) o colectie de concepte care descriu structura bazei de date si un set de operatii de baz care descriu modul de lucru cu baza de date c) o colectie de concepte care descriu datele, informatiile si cunostintele nmagazinate n baza de date si un set de operatii de baz care descriu modul actualizare a acestora Raspuns B 7) Sistemele de gestiune a bazelor de date prerelationale sunt: a) sistemele grafice b) sistemele de fisiere c) sistemele ierahice si sistemele de tip retea Raspuns C 8) Sistemele de gestiune a bazelor de date relationale comerciale sunt sistemele de gestiune care respect: a) cele 12 reguli ale lui Chuck Kelly b) cele 12 reguli ale lui E.F. Codd c) cele 12 reguli restrictii ale lui D.L. Childs Raspuns B1

9) Modelul relational se bazeaz pe: a) notiunea matematic de relatie binar ntre multimi b) noiunea matematic de submultime a unui produs cartezian de mulimi c) noiunea matematic de relaie ternar ntre mulimi Raspuns B 10) Tabelul este reprezentarea conventional si comod a: a) entittilor b) entittilor si a relatiilor n-m dintre entitti c) entittilor si relatiilor 1-m dintre entitti d) entittilor si relatiilor dintre entitti D sau B? Reamintim faptul c n modelul relaional, orice entitate si relaie dintre entiti este modelat matematic prin conceptul de relaie si reprezentat convenional printr-o tabel Rezolvarea relatiilor n-m In acest caz, ne bazm pe faptul c n modelul relaional nu numai entitile ci si relaiile dintre ele sunt relaii n sens matematic si, ca urmare, pot fi reprezentate prin tabele. 11) Sistemele de gestiune post-relationale ale bazelor de date sunt a) sistemele orientate obiect si sistemele hibride; b) sistemele obiect-relatioanle; c) sistemele orientate obiect; Raspuns A 12) Un sistem de gestiune a bazei de date este o component: a) software b) hardware c) si (a) si (b) Raspuns A 13) Un sistem de gestiune a bazei de date este: a) o interfat ntre baza de date si utilizatorii ei b) o interfa ntre baza de date si administratorul ei c) si (a) si (b) Raspuns C 14) Intr-o baz de date este necesar : a) numai independenta fizic a datelor b) numai independenta logic a datelor c) si independenta fizic si independenta logic a datelor Raspuns C 15) Independenta fat de strategiile de acces la datele dintr-o baz de date este: a) necesar b) interzis c) optional Raspuns A 16) Arhitectura ANSI-SPARC pe 3 nivele pentru bazele de const din: a) nivelul extern, nivelul hibrid si nivelul intern b) nivelul fizic, nivelul conceptual si nivelul hibrid c) nivelul extern, nivelul conceptual si nivelul intern; Raspuns C2

17) Reprezentarea fizic a datelor din baza de date este descris la nivelul: a) hibrid; b) intern; c) conceptual; Raspuns B 18) Nivelul extern: a) reprezint modurile diferite n care diferiti utilizatori ai bazei de date percep datele stocate n aceasta b) reprezint modul unic n care datele din baza de date sunt percepute de ctre proprietarul, administratorul si proiectantul bazei de date c) permite sistemului de operare s interogheze baza de date Raspuns A 19) Nivelul conceptual a) descrie datele si relatiile dintre ele, precum si modul de implementare a acestora la nivelul fizic b) descrie datele si relatiile dintre ele, fr detalii de implementare c) const exclusiv din schema conceptual a bazei de date Raspuns B 20) Proiectarea bazei de date la nivel logic const din realizarea: a) schemei interne si a schemei conceptuale a bazei de date; b) schemei externe si a schemei conceptuale a bazei de date; c) schemei externe si a schemei interne a bazei de date; Raspuns B 21) Integritatea referential a bazei de date se refer la: a) relatiile din baza de date b) entittile din baza de date c) si la relatiile si la entittile din baza de date Raspuns A 22) Forma normal Boyce-Codd este o variant mai tare a: a) FN1 b) FN3 c) FN5 Raspuns B 23) O relatie este n FN2 dac este n FN1 si dac : a) oricare dintre atributele sale care nu fac parte din cheia primar este complet dependent functional de cheia primar b) oricare dintre atributele sale care nu fac parte din cheia primar ia cte o singur valoare pentru fiecare instant a sa c) oricare dintre atributele sale care nu fac parte din cheia primar ia valoarea NULL Raspuns A 24) O relatie este n FN3 dac a) este n FN1 si n FN2 simultan b) este n FN1 si nici unul dintre atributele sale care nu fac parte din cheia primar nu este, prin tranzitivitate, dependent functional de cheia primar c) este n FN2 nici unul dintre atributele sale care nu fac parte din cheia primar nu este, prin tranzitivitate, dependent funcional de cheia primar Raspuns C 25) Interogrile de actiune sunt interogri de: a) creare de tabel, actualizare si adugare b) actualizare, adugare si stergere3

c) actualizare, adugare, stergere si creare de table Raspuns C 26) Un index se poate sterge cu clauza: a) DELETE INDEX b) DROP INDEX c) REMOVE INDEX Raspuns B 27) n algebra relational exist: a) numai operatii unare b) numai operatii binare c) operatii unare si binare Raspuns C 28) Cardinalul relatiei rezultate din produsul cartezian de relatii este: a) mai mare dect cardinalul relatiei rezultate din .-jonctiunea acelorasi relatii b) egal cu cardinalul relatiei rezultate din . -jonctiunea acelorasi relatii c) mai mic dect cardinalul relatiei rezultate din .-jonciunea acelorasi relatii Raspuns A? 29) Pentru optimizarea interogrilor pe baze de date relatioanle se recomand: a) utilizarea clauzei WHERE n detrimentul clauzei HAVING pentru a filtra nregistrrile returnate de clauza SELECT b) utilizarea cuvntului-cheie DISTINCT n detrimentul clauzei GROUP BY pentru a gsi o list de nregistrri distincte c) toate cele de mai sus Raspuns C 30) Pentru optimizarea interogrilor pe baze de date relaioanle se recomand: a) evitarea clauzei LEFT JOIN si a valorii NULL pentru atribute b) utilizarea cererilor imbricate c) toate cele de mai sus Raspuns C 31) Autorul conceptului de "data warehouse" (depozit de date) este: a) E.F. Codd b) William Inmon c) Earl Hadden Raspuns B 32) Un depozit de date este: a) o colectie tematic si integrat de date b) o colectie de date nevolatil dar dinamic n timp c) si (a )si (b) Raspuns C 33) Depozitele de date constituie baza informational a: a) sistemelor de management a informatiilor (MIS) b) sistemelor de suport pentru decizii (DSS) c) sistemelor de suport pentru management (MSS) Raspuns B 34) Redundanta datelor:4

a) este creat n mod intentionat n depozitele de date b) este minimizat n bazele de date relationale c) este maximizat n bazele de date obiect-relationale d) este minimizat n depozitele de date Raspuns A 35) Intr-un depozit de date este necesar s existe: a) un sistem coerent de codificare si reprezentare a informatiilor b) un sistem consistent de unitti de msur c) un sistem stabil de reprezentare fizic a datelor d) toate cele de mai sus Raspuns D 36) O cheie de acces: a) pentru bazele de date relationale este nemodificabil pe ntreaga perioad de existent a bazei de date; b) pentru bazele de date orientate obiect este o instant a obiectului access key c) pentru depozitele de date cuprinde si o variabil temporal; Raspuns C 37) Operatiile de actualizare a depozitelor de date sunt: a) de tip stergere b) de tip adugare c) si (a) si (b) Raspuns B 38) OLTP nseamn: a) on line timing and processing b) object linking and trigger parsing c) on line transactional processing Raspuns C 39) Datele dintr-un sistem OLTP: a) sunt date dinamice, detaliate, incosistente, fragmentate, redundante b) constituie o surs de date pentru depozitele de date, c) si (a) si (b) d) nici (a) nici (b) Raspuns C 40) Printre regulile cu care W. Inmon a definit depozitele de date se numr: a) depozitul de date si mediul operational trebuie s fie separate, b) depozitul de date conine date istorice referitoare la o lung perioad de timp c) si (a) si (b) Raspuns C 41) Printre regulile cu care W. Inmon a definit depozitele de date se numr: a) datele din depozitul de date trebuie s fie de tip relational b) datele din depozitul de date trebuie s fie integrate, c) si (a) si (b) Raspuns B 42) Printre regulile cu care W. Inmon a definit depozitele de date se numr: a) sunt permise actualizari online b) datele din depozitul de date sunt orientate spre obiect c) si (a) si (b) Raspuns B5

43) Depozitele de date: a) difer fat de sistemele informatice clasice din punctul de vedere al ciclului de dezvoltare si de viat b) difer fat de sistemele OLTP din punctul de vedere al frecventei si tipului de tranzactii permise c) si (a) si (b) Raspuns C 44) Mecanismul charge-back pentru utilizarea resurselor este o caracteristic a: a) sistemelor OLTP b) sistemelor de fisiere c) depozitelor de date Raspuns C 45) Printre componentele unui depozit de date se numr: a) datele operationale; b) metadatele; c) si (a) si (b) Raspuns C 46) Printre componentele unui depozit de date se numr: a) managerul depozitului de date; b) sistemul de intrari si iesiri; c) managerul read/write online Raspuns A 47) Printre componentele unui depozit de date se numr: a) componenta front-end; b) managerul depozitului de date; c) si (a) si (b) Raspuns C 48) Printre componentele unui depozit de date se numr: a) componenta front-end b) componenta back-end c) si (a) si (b) Raspuns C 49) Printre componentele unui depozit de date se numr: a) componenta front-line b) componenta back-end c) si (a) si (b) Raspuns B 50) Printre componentele unui depozit de date se numr: a) uneltele de data mining si OLAP b) uneltele de raportare si interogare c) si (a) si (b) Raspuns C 51) Printre componentele unui depozit de date se numr: a) uneltele de data mining si OLTP b) unelte de dezvoltare a aplicatiilor c) si (a) si (b) Raspuns B

6

52) Printre componentele unui depozit de date se numr: a) uneltele de OLAP si OLTP b) unelte pentru sisteme de informatii executive c) si (a) si (b) Raspuns B 53) Printre componentele unui depozit de date se numr: a) datele sintetizate b) metadatele c) si (a) si (b) Raspuns C 54) Printre componentele unui depozit de date se numr: a) datele detaliate b) metadatele c) si (a) si (b) Raspuns C 55) Printre componentele unui depozit de date se numr: a) macrodatele b) metadatele c) si (a) si (b) Raspuns B 56) Metadatele care intr n componenta unui depozit de date pot fi: a) metadate administrative b) metadate de actualizare c) metadate calendaristice Raspuns A 57) Metadatele care intr n componenta unui depozit de date pot fi: a) metadate pentru optimizare b) metadate pentru minimizarea timpului de scriere n depozit c) metadate fragmentate Raspuns A 58) Valorificarea informatiei din depozitele de date se poate face prin: a) analiza multirelational b) mecanismul OLAP c) mecanismul OLTP Raspuns B 59) Valorificarea informatiei din depozitele de date se poate face prin: a) analiza multidimensional b) analiza multirelational c) mecanismul OLTP Raspuns A 60) Valorificarea informatiei din depozitele de date se poate face prin: a) mecanismul OLAP b) analiza multidimensional c) si (a) si (b) Raspuns C 61) Arhitectura unui instrument OLAP este o arhitectura pe:7

a) 3 niveluri b) 2 niveluri c) 4 niveluri Raspuns A 62) Arhitectura unui instrument OLAP include: a) una sau mai multe baze de date b) o componenta OLTP c) metadate pentru optimizare Raspuns A 63) Arhitectura unui instrument OLAP include: a) un manager pentru datele sintetizate b) un motor analitic pe post de server pentru aplicatiile desktop c) metadate pentru optimizare Raspuns B 64) Arhitectura unui instrument OLAP include: a) uneltele utilizatorului final pentru operatii de raportare etc. b) un motor analitic pe post de server pentru aplicatiile desktop c) si (a) si (b) Raspuns C 65) Fluxul de intrare a datelor n depozitul de date const din operatii de: a) stergere b) actualizare n loturi c) suprascriere Raspuns B 66) Procesul de sintetizare, mpachetare si distribuire a datelor intrate ntr un data warehouse poart numele de: a) up-flow b) in-flow c) down-flow Raspuns A 67) Procesul de ierarhizare si relocare a datelor intrate ntr un data warehouse poart numele de: a) up-flow b) in-flow c) down-flow Raspuns C 8) Principalele activitti care compun asa-numitul out-flow din depozitele de date sunt: a) integrarea si interogarea datelor b) accesarea si livrarea datelor c) sintetizarea si abstractizarea datelor Raspuns B 69) Transformrile si circuitul datelor n depozitele de date sunt descrise prin urmtoarele tipuri de fluxuri:: a) in-flow, up-flow, out-flow, meta-flow, alfa-flow, beta-flow; b) out-flow, up-flow, beta-flow, down-flow, in-flow; c) in-flow, meta-flow, out-flow, down-flow, up-flow Raspuns C 70) Schema clasic a unui depozit de date este:8

a) de tip retea b) de tip stea c) de tip ierarhic Raspuns B 71) Cel mai simplu mod de vizualizare a datelor dintr-un depozit de date este reprezentat de: a) un cub n-dimensional; b) o stea; c) si (a) si (b) Raspuns A 72) O baz de date multimedia este o baz de date care inglobeaz informatie de tip: a) text, sunet, grafic; b) sunet, imagini fixe si video c) text, grafic, sonor, animat, video; Raspuns C 73) MIDI inseamn:: a) Microsoft Interchange Digital Interface b) Musical Instrument Digital Interface c) Musical Interface for Digital Interchange Raspuns B 74) Rezolutia monitorului VGA este de : a) 640x480 pixeli; b) 800600 pixeli; c) 1024768 pixeli; Raspuns A 75) CGI nseamn: a) Common Graphical Interface b) Common Gateway Interface; c) Common Graphical Interchange; Raspuns B

9

1. Creati tabelul salariat_*** avnd urmtoarea structur: Nume cod_ang nume prenume functia sef data_angajarii varsta email salariu Caracteristici NOT NULL Tip NUMBER(4) VARCHAR2(25) VARCHAR2(25) VARCHAR2(20) NUMBER(4) DATE NUMBER(2) CHAR(50) NUMBER(9,2)

Valoare implicit data curent

Valoare implicit 0

2. Afisati structura tabelului creat anterior. DESCRIBE salariat; 3. Se dau urmtoarele valori: COD_AN NUME PRENUME FUNCTIA G 1 ..... ..... director 2 ..... ..... fuctionar 3 ..... ..... economist 4 ..... ..... functionar

SEF null 1 1 1

DATA_ANG ........ ..... ..... .....

VARSTA 30 25 45 35

EMAIL ..... ..... ..... .....

SALARIU 5500 0 3000 1000

4. Inserati n tabelul salariat_*** prima nregistrare din tabelul de mai sus fr s precizati lista de coloane n comanda INSERT. INSERT INTO salariat VALUES ( 1, '.....', '.....', 'director', null ,' , 30, '.....', 5500 ); 5. Inserati a doua nregistrare folosind o list de coloane din care excludeti data_angajarii si salariul care au valori implicite. Observati apoi rezultatul. COD_ANG NUME PRENUME FUNCTIA SEF DATA_ANG VARSTA EMAIL SALARIU 2 ..... ..... fuctionar 1 ..... 25 ..... 0 INSERT INTO salariat (cod_ang, nume, prenume, functia, sef, varsta, email) VALUES (2, '...', '...', 'functionar', 1, 25, '...' ); 6. Inserati nregistrrile 3 si 4. INSERT INTO salariat (cod_ang, nume, prenume, functia, sef, varsta, email, salariu) VALUES (3, '...', '...', 'economist', 1, 45, '...', 3000 ); INSERT INTO salariat (cod_ang, nume, prenume, functia, sef, varsta, email, salariu) VALUES (4, '...', '...', 'functionar', 1, 35, '...', 1000 ); 7. Creati tabelul functionar_*** care s contin functionarii din tabelul salariat_***, avnd urmtoarele coloane: codul, numele, salariul anual si data angajrii. Verificati cum a fost creat tabelul si ce date contine. CREATE TABLE functionar AS SELECT cod_ang, nume, prenume, salariu, data_angajarii FROM salariat WHERE functia = 'functionar'; DESCRIBE functionar; SELECT * FROM functionar; 8. Adugati o nou coloan tabelului salariat_*** care s contin data nasterii. ALTER TABLE salariat ADD (datan DATE); 9. Modificati dimensiunea coloanei nume la 30 si pe cea a salariului la 12 cu 3 zecimale.

1

ALTER TABLE salariat MODIFY (nume VARCHAR2(30), salariu NUMBER(12,3)); 10. Modificati tipul coloanei email la VARCHAR2. ALTER TABLE salariat MODIFY (email VARCHAR2(50)); 11. Modificati valoarea implicit a coloanei data_angajarii la data sistemului + o zi. ALTER TABLE salariat MODIFY (data_angajarii DATE DEFAULT SYSDATE + 1); 12. Eliminati coloana varsta din tabelul salariat_***. ALTER TABLE salariat DROP COLUMN varsta; 13. Redenumiti tabelul functionar_*** cu funct_***. RENAME functionar to funct; 14. Recreati tabelul functionar_*** utiliznd tabelul funct_***.. CREATE TABLE functionar AS SELECT cod_ang, nume, prenume, salariu, data_angajarii FROM funct; 15. Eliminati tabelul funct_***. DROP TABLE funct; 16. Stergeti si apoi creati din nou tabelul salariat_*** cu urmtoarea structur. NUME TIP CONSTRNGERE cod_ang NUMBER(4) Cheie primar nume VARCHAR2(25) NOT NULL prenume VARCHAR2(25) data_nasterii DATE data_nasterii0 cod_dept NUMBER(4) Combinaia NUME + PRENUME s fie unic Observatie: Constrngerile de tip CHECK se pot implementa la nivel de coloan doar dac nu refer o alt coloan a tabelului. cod_dept NUMBER(4) DROP TABLE salariat; CREATE TABLE salariat ( cod_ang NUMBER(4) PRIMARY KEY, nume VARCHAR2(25) NOT NULL, prenume VARCHAR2(25), data_nasterii DATE, functia VARCHAR2(9) NOT NULL, sef NUMBER(4) REFERENCES salariat (cod_ang), data_angajarii DATE DEFAULT SYSDATE, email VARCHAR2(20) UNIQUE, salariu NUMBER(9,2) CHECK (salariu > 0), cod_dep NUMBER(4), CONSTRAINT const_c CHECK (data_angajarii > data_nasterii), CONSTRAINT const_u UNIQUE (nume, prenume, data_nasterii)); 17. Stergeti tabelul salariat_***, iar apoi recreati-l implementnd toate constrngerile la nivel de tabel. Observatie: Constrngerea de tip NOT NULL se poate declara doar la nivel de coloan. DROP TABLE salariat; CREATE TABLE salariat (

2

cod_ang NUMBER(4), nume VARCHAR2(25) NOT NULL, prenume VARCHAR2(25), data_nasterii DATE, functia VARCHAR2(9) NOT NULL, sef NUMBER(4), data_angajarii DATE DEFAULT SYSDATE, email VARCHAR2(20), salariu NUMBER(9,2), cod_dep NUMBER(4), CONSTRAINT ccp PRIMARY KEY (cod_ang), CONSTRAINT cce FOREIGN KEY (sef) REFERENCES salariat (cod_ang), CONSTRAINT cu1 UNIQUE (email), CONSTRAINT cc1 CHECK (data_angajarii > data_nasterii), CONSTRAINT cc2 CHECK (salariu > 0), CONSTRAINT cu2 UNIQUE (nume,prenume,data_nasterii)); 18. Creati tabelul departament_*** care s aib urmtoarea structur. NUME TIP CONSTRNGERI COD_DEP NUMBER(4) Cheie primar NUME VARCHAR2(20) Not null ORAS VARCHAR2(25) CREATE TABLE departament ( cod_dep NUMBER(4) PRIMARY KEY, nume VARCHAR2(20) NOT NULL, oras VARCHAR2(25)); Adugarea constrngerilor ulterior crerii tabelului, eliminarea, activarea sau dezactivarea constrngerilor (ALTER TABLE) - adaug constrngeri ALTER TABLE nume_tabel ADD [CONSTRAINT nume_constr] tip_constr (coloana); - elimin constrngeri ALTER TABLE nume_tabel DROP [CONSTRAINT nume_constr] tip_constr (coloana); - activare/dezactivare constrngere ALTER TABLE nume_tabel MODIFY CONSTRAINT nume_constr ENABLE|DISABLE; sau ALTER TABLE nume_tabel ENABLE| DISABLE nume_constr; 19. Inserati o nou nregistrare n salariat_*** de forma: cod nume prenume data_n functia sef data_ang email salariu cod_dep 2 N2 P2 11-JUN-1960 economist 1 Sysdate E2 2000 10 INSERT INTO salariat VALUES ( 2, 'N2' , 'P2' , '11-06-1960' , 'ECONOMIST', 1, SYSDATE, 'E2', 2000, 10 ); /*EROARE la linia 1: ORA-02291: constrngere de integritate (SCOTT.CCE) violata - cheia parinte negasita Ce observati? Introduceti nregistrarea dar specificnd valoarea NULL pentru coloana sef. INSERT INTO salariat VALUES ( 2, 'N2' , 'P2' , '11-06-1960' , 'ECONOMIST', Null, SYSDATE, 'E2', 2000, 10 ); /*1 nregistrare creat.*/ 20. ncercati s adugati o constrngere de cheie extern pe cod_dep din salariat_***. Ce observati? ALTER TABLE salariat ADD CONSTRAINT cce2 FOREIGN KEY (cod_dep) REFERENCES departament (cod_dep); /*EROARE la linia 2: ORA-02298: (SCOTT.CCE2) nu a putut fi validata - nu au fost gasite cheile parinte 21. Inserati o nou nregistrare n departament_***. Apoi adugati constrngerea de cheie extern definit anterior. cod_dep nume Loc 10 Economic Bucuresti

3

INSERT INTO departament VALUES ( 10, 'Ecomomic', 'Bucuresti' ); Adaugam constrangerea de la ex.20: ALTER TABLE salariat ADD CONSTRAINT cce2 FOREIGN KEY (cod_dep) REFERENCES departament (cod_dep); 22. Inserati noi nregistrri n salariat_***, respectiv n departament_***. Care trebuie s fie ordinea de inserare? cod nume prenume data_n functia sef data_ang email salariu cod_dep 3 N3 P3 11JUN1967 jurist 2 Sysdate E3 2500 20

cod_dep

nume

loc

20 Juridic Constanta INSERT INTO departament VALUES ( 20, 'Juridic', 'Constanta' ); INSERT INTO salariat VALUES ( 3, N3, P3 , 11-06-1967, JURIST , 2, , E3, 2500, 20 ); 23. Stergeti departamentul 20 din tabelul departament_***. Ce observati? DELETE FROM departament WHERE cod_dep=20; /*EROARE la linia 1: ORA-02292: constrngerea de integritate (SCOTT.CCE2) violata gasita nregistrarea copil 24. Stergeti constrngerea cce2_***. Recreati aceast constrngere adugnd optiunea ON DELETE CASCADE. ALTER TABLE salariat DROP CONSTRAINT cce2; ALTER TABLE salariat ADD CONSTRAINT cce2 FOREIGN KEY (cod_dep) REFERENCES departament (cod_dep) ON DELETE CASCADE; 25. Stergeti departamentul 20 din tabelul departament_***. Ce observati n tabelul salariat_***? Anulati modificrile. DELETE FROM departament WHERE cod_dep=20; ROLLBACK; 26. Stergeti constrngerea cce2_***. Recreati aceast constrngere adugnd optiunea ON DELETE SET NULL. ALTER TABLE salariat DROP CONSTRAINT cce2; ALTER TABLE salariat ADD CONSTRAINT cce2 FOREIGN KEY (cod_dep) REFERENCES departament (cod_dep) ON DELETE SET NULL; 27. ncercati s stergeti departamentul 10 din tabelul departament_***. Ce observati? DELETE FROM departament WHERE cod_dep=10; /*1 nregistrare stears. Verificam continutul tabelului departament SELECT * FROM departament; Consultarea dictionarului datelor Informatii despre tabelele create se gsesc n vizualizrile :

4

USER_TABLES informatii complete despre tabelele utilizatorului curent. ALL_TABLES informatii complete despre tabelele tuturor utilizatorilor. COLS informatii despre coloane. TAB informatii de baz despre tabelele existente n schema utilizatorului curent. Informatii despre constrngeri gsim n : USER_CONSTRAINTS informatii despre constrngerile definite de utilizatorul curent; ALL_CONSTRAINTS informatii despre cosntrngerile definite de toti Sintaxa simplificat a comenzii CREATE VIEW este: CREATE [OR REPLACE] [FORCE | NOFORCE] VIEW nume_view [(alias, alias, ..)] AS subcerere [WITH CHECK OPTION [CONSTRAINT nume_constr]] [WITH READ ONLY [CONSTRAINT nume_constr]]; - FORCE permite crearea vizualizarea nainte de a defini tabelele de baz; - subcererea poate fi orict de complex dar nu poate conine clauza ORDER BY; - WITH CHECK OPTION permite inserarea si modificarea prin intermediul vizualizrii numai a liniilor ce sunt accesibile vizualizrii; dac lipseste numele constrngerii atunci sistemul asociaz un nume implicit de tip SYS_Cn acestei constrngeri; - WITH READ ONLY asigur c prin intermediul vizualizrii nu se pot executa operatii LMD. Eliminarea unei vizualizri se face prin comanda DROP VIEW : DROP VIEW nume_viz; 1. S se creeze vizualizarea v_emp_*** care s contin codul si numele salariatilor din tabelul emp_***. S se afiseze continutul acesteia. S se insereze o nou nregistrare n aceast vizualizare. Ce observati? S se stearg vizualizarea v_emp_***. Se creaza tabelul emp CREATE TABLE emp ( employee_id NUMBER(4) PRIMARY KEY, last_name VARCHAR2(64), email VARCHAR2(64), hire_date DATE DEFAULT SYSDATE, salary NUMBER(8,2) DEFAULT 1000, job_id VARCHAR2(10)); Se creaza vizualizarea v_emp CREATE VIEW v_emp (cod, nume) AS SELECT employee_id, last_name FROM emp; Se afiseaza continutul vizualizarii select * from v_emp; /*nici o nregistrare selectat Inseram o noua inregistrare INSERT INTO v_emp VALUES (400,N1); Se sterge vizualizarea v_emp DROP VIEW v_emp; 2. S se creeze vizualizarea v_emp_*** care s contin codul, numele, emailul, data angajrii, salariul si codul jobului salariatilor din tabelul emp_***. S se analizeze structura si continutul vizualizrii. S se insereze o nou nregistrare n aceast vizualizare. S se verifice c noua nregistrare a fost inserat si n tabelul de baz. CREATE VIEW v_emp AS SELECT employee_id, last_name, email, hire_date, salary,job_id FROM emp; DESC v_emp SELECT * FROM v_emp; INSERT INTO v_emp

5

VALUES (400,N1,E1,SYSDATE,5000,SA_REP); SELECT employee_id, last_name, email, hire_date, salary, job_id FROM emp; /* restrictia unica (SCOTT.SYS_C002806) nu este respectata linia 5 si 6 3. S se mreasc cu 1000 salariul angajatului avnd codul 400 din vizualizarea creat anterior. Ce efect va avea aceast actiune asupra tabelului de baz? UPDATE v_emp SET salary = salary + 1000 WHERE employee_id = 400; SELECT * FROM v_emp; SELECT * FROM emp; /* salariul angajatului cu codul 400 devine 2000, in rest nu se schimba nimic 4. S se stearg angajatul avnd codul 400 din vizualizarea creat anterior. Ce efect va avea aceast actiune asupra tabelului de baz? DELETE FROM v_emp WHERE employee_id =400; /* tabelul emp nu mai contine nici o inregistrare 5.a) S se creeze vizualizarea v_emp_dept_*** care s contin employee_id, last_name, hire_date, job_id, department_id din tabelul emp_*** si coloana department_name din tabelul dept_***. Cream tabelul dept CREATE TABLE dept ( department_id NUMBER(2) PRIMARY KEY, department_descriere VARCHAR2(128)); Inseram in tabelul dept coloana department_name Alter table dept Add (department_name VARCHAR2(20)); Tabelul emp nu are coloana department_id asa ca trebuie creata pentru a putea continua ALTER TABLE emp ADD department_id NUMBER(2); Se creaza vizualizarea CREATE VIEW v_emp_dept AS SELECT e.employee_id, e.last_name, e.hire_date, e.job_id, e.department_id, d.department_name FROM emp e, dept d WHERE e.department_id =d.department_id; 5.b) S ncerce inserarea nregistrrii (500, 'N2', 'E2',SYSDATE,SA_REP,30, 'Administrativ') n vizualizarea creat anterior. INSERT INTO v_emp_dept VALUES ( 500, 'N2', 'E2', SYSDATE,'SA-REP',30, 'Administrativ'); /*EROARE la linia 1: ORA-00913: prea multe valori 5.c) Care dintre coloanele vizualizrii v_emp_dept_*** sunt actualizabile? SELECT column_name, updatable FROM user_updatable_columns WHERE UPPER(table_name) = UPPER('v_emp_dept'); /* Toate sunt actualizabile in afara de departament_name 5.d) Adugati tabelului emp_*** constrngerea de cheie extern care refer tabelul dept_***, apoi verificati ce coloane din vizualizarea v_emp_dept_*** sunt actualizabile. ALTER TABLE emp ADD CONSTRAINT dep FOREIGN KEY (department_id) REFERENCES dept1(department_id); SELECT column_name, updatable FROM user_updatable_columns WHERE UPPER(table_name) = UPPER('v_emp_dept'); /* Toate sunt actualizabile in afara de departament_name 5.e) Recreati vizualizarea v_emp_dept_***, apoi verificati ce coloane sunt actualizabile. CREATE OR REPLACE VIEW v_emp_dept AS SELECT e.employee_id, e.last_name, e.hire_date, e.job_id, e.department_id, d.departament_name

6

FROM emp e, dept d WHERE e.department_id =d.department_id; SELECT column_name, updatable FROM user_updatable_columns WHERE UPPER(table_name) = UPPER('v_emp_dept'); /* Toate sunt actualizabile in afara de departament_name 6. S se creeze vizualizarea v_dept_*** care s contine codul si numele departamentului, numrul de angajati din departamentul respectiv si suma alocat pentru plata salariilor. Aceast vizualizare permite actualizri? CREATE VIEW v_dept (cod, nume, nr_angajati, val_salarii) AS SELECT e.department_id, department_name, COUNT(*) nr_angajati, SUM(salary) val_salarii FROM emp e, dept d WHERE e.department_id = d.department_id GROUP BY e.department_id, department_name; SELECT column_name, updatable FROM user_updatable_columns WHERE UPPER(table_name) = UPPER('v_dept'); /*Aceasta vizualizare nu permite actializari 7. a) S se creeze vizualizarea v_emp30_*** care s contin numele, emailul, data angajrii, salariul, codul jobului si codul departamentului celor care lucreaz n departamentul 30. n aceast vizualizare nu se va permite modificarea sau inserarea liniilor ce nu sunt accesibile ei. Dati un nume constrngerii. CREATE VIEW v_emp30 AS SELECT employee_id, last_name, email, hire_date, salary, job_id, department_id FROM emp WHERE department_id=30 WITH CHECK OPTION CONSTRAINT ck_option1; 7. b) S se listeze structura si continutul vizualizrii v_emp30_***. DESCRIBE v_emp30; SELECT * FROM v_emp30; /*nici o inregistrare selectata 7. c) S se ncerce prin intermediul vizualizrii inserarea unui angajat n departamentul 10 si a unui angajat n departamentul 30 INSERT INTO v_emp30 VALUES ( 600, 'N5', 'E5', SYSDATE, 4000, 'ADMIN', 10); EROARE la linia 1: ORA-01402: n vizualizarea WITH CHECK OPTION clauza where este nclcat INSERT INTO v_emp30 VALUES ( 600, 'N5', 'E5', SYSDATE, 4000, 'ADMIN', 30); /*Daca department_id este 30 se face inserarea, inregistrarea de regaseste in tabela emp. 7. d) S se ncerce prin intermediul vizualizrii modificarea departamentului unui angajat. UPDATE v_emp30 SET department_id =20 WHERE employee_id = 11; /*0 nregistrri actualizate. 8. S se creeze o vizualizare (v_dept_***) asupra tabelului dept_*** s nu permit efectuarea nici unei operatii LMD. Testati operatiile de inserare, modificare si stergere asupra acestei vizualizri. CREATE VIEW v_dept AS SELECT * FROM dept WITH READ ONLY; /* EROARE la linia 1: ORA-00955: numele este deja utilizat de un obiect existent CREATE OR REPLACE VIEW v_dept AS SELECT * FROM dept WITH READ ONLY;

7

9. S se consulte informatii despre vizualizarea v_dept_***. Folositi vizualizarea dictionarului datelor USER_VIEWS (coloanele VIEW_NAME si TEXT). Obs: Coloana TEXT este de tip LONG. n cazul selectrii unei coloane de tip LONG trebuie utilizat comanda SET LONG n pentru a seta numrul de caractere afisate. SET LONG 200 SELECT view_name, text FROM user_views WHERE UPPER(view_name)=UPPER(v_dept);

Definirea secventelor Sintaxa comenzii CREATE SEQUENCE este: CREATE SEQUENCE nume_secvent [INCREMENT BY n] [START WITH valoare_start] [ {MAXVALUE valoare_maxim | NOMAXVALUE} ] [ {MINVALUE valoare_minim | NOMINVALUE} ] [ {CYCLE | NOCYCLE} ] [ {CACHE n | NOCACHE} ]; Stergerea secventelor se realizeaz cu ajutorul comenzii DROP SEQUENCE. DROP SEQUENCE nume_secv; 10. S se creeze o secvent care are pasul de incrementare 10 si ncepe de la 10, are ca valoare maxim 10000 si nu cicleaz. CREATE SEQUENCE sec INCREMENT BY 10 START WITH 10 MAXVALUE 10000 NOCYCLE; 11. S se modifice toate liniile din tabelul emp_***, regenernd codul angajatilor astfel nct s utilizeze secventa sec_emp***. S se anuleze modificrile. UPDATE emp SET employee_id = sec_emp.NEXTVAL; ROLLBACK; 12. S se introduc un nou salariat n tabelul emp_*** folosindu-se pentru codul salariatului secventa creat. INSERT INTO emp VALUES ( sec_emp.NEXTVAL, 'N5', 'E5', SYSDATE, 2500, 'admin', 30); 13. S se afiseze valoarea curent a secventei. SELECT sec_emp.CURRVAL valoare FROM DUAL; Exercitiu a) Creati o secvent pentru generarea codurilor de departamente, seq_dept_***. Secventa va ncepe de la 200, va creste cu 10 la fiecare pas si va avea valoarea maxim 20000, nu va cicla. CREATE SEQUENCE seq_dept START WITH 200 INCREMENT BY 10 MAXVALUE 20000 NOCYCLE; b) S se selecteze informatii despre secventele utilizatorului curent (nume, valoare minim, maxim, de incrementare, ultimul numr generat). Se va utiliza vizualizarea user_sequences. SELECT * FROM user_sequences WHERE sequence_name='SEQ_DEPT'; c) S se insereze o nregistrare nou n DEPT_*** utiliznd secventa creat. INSERT INTO departments VALUES ( seq_dept.NEXTVAL, 'contabil');

8

d) S se selecteze valoarea curent a secventei. SELECT seq_dept.CURRVAL valoare FROM DUAL; e) S se stearg secventa. DROP SEQUENCE seq_dept;

Definirea indecsilor Sintaxa comenzii CREATE INDEX: CREATE [UNIQUE] INDEX nume_index ON tabel (coloana1 [, coloana2]); Modificarea unui index se face prin comanda ALTER INDEX. Eliminarea unui index se face prin comanda: DROP INDEX nume_index; 14. S se creeze un index neunic, emp_last_name_idx_***, asupra coloanei last_name din tabelul emp_***. CREATE INDEX emp_last_name_idx ON EMP (last_name); 15. S se creeze indecsi unici asupra codului angajatului (employee_id) si asupra combinatiei last_name, first_name, hire_date. CREATE UNIQUE INDEX employee_id_idx ON emp (employee_id); CREATE UNIQUE INDEX employee_id_idx1 ON emp (last_name, hire_date); 16. Creati un index neunic asupra coloanei department_id din emp_*** pentru a eficientiza joinurile dintre acest tabel si dept_***. CREATE INDEX emp_department_idx ON EMP(department_id);

Definirea sinonimelor Comanda pentru crearea sinonimelor este: CREATE [PUBLIC] SYNONYM nume_sinonim FOR obiect; Eliminarea sinonimelor se face prin comanda DROP SYNONYM nume_sinonim; 17. Creati un sinonim public se_*** pentru tabelul emp_***. CREATE SYNONYM se for emp; 18. Creati un sinonim pentru vizualizarea v_dept_***. CREATE SYNONYM sy_dept FOR v_dept; 19. Utiliznd sinonimele create anterior, afisati informatii depre salariti si despre departamente. SELECT * FROM se; SELECT * FROM sy_dept;

Limbajul de interogare al datelor (DQL). SELECT CERERI MONOTABEL 1. Analizati sintaxa simplificat a comenzii SELECT. Care dintre clauze sunt obligatorii? SELECT { [ {DISTINCT | UNIQUE} | ALL] lista_campuri | *} FROM [nume_schem.]nume_obiect ] [, [nume_schem.]nume_obiect ] [WHERE condiie_clauza_where] [GROUP BY expresie [, expresie ] [HAVING condiie_clauza_having] ] [ORDER BY {expresie | poziie} [, {expresie | poziie} ] ] 2. S se listeze structura tabelelor din schema HR (EMPLOYEES, DEPARTMENTS, JOB_HISTORY, JOBS, LOCATIONS, COUNTRIES, REGIONS), observnd tipurile de date ale coloanelor. Obs: Se va utiliza comanda SQL*Plus DESCRIBE nume_tabel

9

Se creaza tabelele: 1. REGIONS TABLE din fisierul hr_create.sql 2. COUNTRIES TABLE din fisierul hr_create.sql 3. LOCATIONS TABLE din fisierul hr_create.sql 4. DEPARTAMENTS TABLE din fisierul hr_create.sql 5. JOBS TABLE din fisierul hr_create.sql 6. EMPLOYYES TABLE din fisierul hr_create.sql 7. JOB_HISTORY TABLE din fisierul hr_create.sql 8. JOB_GRADES TABLE din fisierul hr_create.sql 2. S se listeze structura tabelelor din schema HR (EMPLOYEES, DEPARTMENTS, JOB_HISTORY, JOBS, LOCATIONS, COUNTRIES, REGIONS), observnd tipurile de date ale coloanelor. Obs: Se va utiliza comanda SQL*Plus DESCRIBE nume_tabel DESCRIBE employees; DESCRIBE departments; DESCRIBE jobs; DESCRIBE job_history; DESCRIBE locations; DESCRIBE countries; DESCRIBE regions; 3.S se listeze continutul tabelelor din schema considerat, afisnd valorile tuturor cmpurilor. Obs: Se va utiliza comanda SQL SELECT * FROM nume_tabel; SELECT * FROM employees; SELECT * FROM departments; SELECT * FROM jobs;

10

SELECT * FROM job_history; SELECT * FROM locations; SELECT * FROM countries; SELECT * FROM regions; /*nici o nregistrare selectat trebuie sa inseram valori in fiecare tabel 1. Inseram datele in tabelul REGIONS din fisierul hr_insert.sql 2. Inseram datele in tabelul COUNTRIES din fisierul hr_insert.sql 3. Inseram date in tabelul LOCATIONS din fisierul hr_insert.sql 4. Inseram date in tabelul DEPARTMENTS din fisierul hr_insert.sql 5.Inseram date in tabelul JOBS din fisierul hr_insert.sql 6. Inseram date in tabelul EMPLOYEES din fisierul hr_insert.sql 7. Inseram date in tabelul JOB_HISTORY - din fisierul hr_insert.sql 8. Inseram datele in tabelul JOB_GRADES - din fisierul hr_insert.sql Reluam exercitiul SELECT * FROM employees; /*106 nregistrri selectate.*/ SELECT * FROM departments; /*27 nregistrri selectate.*/ SELECT * FROM jobs;*/ /*19 nregistrri selectate.*/ SELECT * FROM job_history; /*10 nregistrri selectate.*/ SELECT * FROM locations; */22 nregistrri selectate. SELECT * FROM countries; */22 nregistrri selectate. SELECT * FROM regions; */4 inregistrari */ 4. S se obtin nc o dat rezultatul cererii precedente, fr a rescrie cererea. Obs: Ultima comand SQL lansat de ctre client este pstrat n buffer-ul SQL. Pentru rularea acesteia se utilizeaz / sau RUN. RUN sau / /* Acelasi rezultat ca la ex. 3 5. Listati structura tabelului EMPLOYEES si apoi dati comanda RUN (sau /). Ce observati? Comenzile SQL*Plus sunt pstrate n buffer? DESC employees RUN /*Comenzile sunt pastrate in buffer. 6. S se afiseze codul angajatului, numele, codul job-ului, data angajrii. Salvati instruciunea SQL ntr-un fisier numit p1_14.sql. Obs: Pentru salvarea ultimei comenzi SQL se utilizeaz comanda SAVE. Precizarea extensiei .sql a fisierului nu este obligatorie. SELECT employee_id, last_name, job_id, hire_date FROM employees; SAVE z:\\ p1_14.sql SELECT employee_id, last_name, job_id, hire_date FROM employees; SAVE E:\Oracle\p1_14.sql 7. Reexecutati cererea folosind fisierul p1_14.sql. START z:\\ p1_14.sql sau @ z:\\ p1_14.sql START E:\Oracle\p1_14.sql; @ E:\Oracle\p1_14.sql; 8. Editati fisierul p1_14.sql, adugnd coloanelor cte un alias (cod, nume, cod job, data angajarii). EDIT z:\\ p1_14.sql EDIT E:\Oracle\p1_14.sql; SELECT employee_id cod, last_name nume, job_id "cod job", hire_date "data angajarii"

11

FROM employees; 9. S se listeze, cu si fr duplicate, codurile job-urilor din tabelul EMPLOYEES. Obs. DISTINCT = UNIQUE SELECT DISTINCT job_id FROM employees; sau SELECT UNIQUE job_id FROM employees; SELECT job_id FROM employees; 10. S se afiseze numele concatenat cu prenumele, separate prin spatiu. Etichetati coloana Nume si prenume. Obs: Operatorul de concatenare este ||. Sirurile de caractere se specific ntre apostrofuri (NU ghilimele, caz n care ar fi interpretate ca alias-uri). SELECT last_name||' '||first_name "Nume si prenume" FROM employees; 11. S se listeze numele si salariul angajatilor care cstig mai mult de 10000 $. SELECT last_name, salary FROM employees WHERE salary > 10000; 12. S se modifice cererea anterioar astfel nct s afiseze numele si salariul pentru toti angajatii al cror salariu este cuprins ntre 5000$ si10000$. Obs: Pentru testarea apartenentei la un domeniu de valori se poate utiliza operatorul [NOT] BETWEEN valoare1 AND valoare2 SELECT last_name, salary FROM employees WHERE salary BETWEEN 5000 AND 10000; 13. S se creeze o cerere pentru a afisa numele angajatului si numrul departamentului pentru angajatul 104. SELECT last_name, department_id FROM employees WHERE employee_id = 104; 14. S se afiseze numele si salariul pentru toti angajatii din departamentele 10 sau 30, n ordine alfabetic a numelor. Obs: Apartenenta la o multime finit de valori se poate testa prin intermediul operatorului IN, urmat de lista valorilor ntre paranteze si separate prin virgule: expresie IN (valoare_1, valoare_2, , valoare_n)SELECT last_name, salary FROM employees WHERE department_id IN (10, 30) ORDER BY last_name; /*afiseaza numai numele salariatilor in ordine alfabetica Sau SELECT last_name||' '||first_name "Nume complet", salary FROM employees WHERE department_id IN (10,30) ORDER BY last_name, first_name; /* afiseaza last_mame si frist_name (numele complet) in ordine alfabetica. 15. S listeze numele si salariile angajatilor care cstig mai mult de 10000 $ si lucreaz n departamentul 10 sau 30. Se vor eticheta coloanele drept Angajat si Salariu lunar. SELECT last_name "Angajat", salary "Salariu lunar" FROM employees WHERE department_id IN(10,30); 16. Care este data curent? Obs: Pseudocoloana care returneaz data curent este SYSDATE. Pentru completarea sintaxei obligatorii a comenzii SELECT, se utilizeaz tabelul DUAL: SELECT SYSDATE FROM dual; Datele calendaristice pot fi formatate cu ajutorul functiei TO_CHAR(data, format), unde formatul poate fi alctuit dintr-o combinatie a urmtoarelor elemente:

12

Element D DD DDD DY DAY MM MON MONTH Y YY, YYY, YYYY YEAR HH12, HH24 MI SS SSSSS

Semnificaie Numrul zilei din sptmn (duminic=1; luni=2; smbt=6). Numrul zilei din lun. Numrul zilei din an. Numele zilei din sptmn, printr-o abreviere de 3 litere (MON, THU etc.) Numele zilei din sptmn, scris n ntregime. Numrul lunii din an. Numele lunii din an, printr-o abreviere de 3 litere (JAN, FEB etc.) Numele lunii din an, scris n ntregime. Ultima cifr din an Ultimele 2, 3, respectiv 4 cifre din an. Anul, scris n litere (ex: two thousand four). Orele din zi, ntre 0-12, respectiv 0-24. Minutele din or. Secundele din minut. Secundele trecute de la miezul nopii.

SELECT sysdate FROM DUAL; 17. S se afiseze numele si data angajrii pentru fiecare salariat care a fost angajat n 1987. Se cer 2 solutiiuna n care se lucreaz cu formatul implicit al datei si alta prin care se formateaz data. Varianta1- cu formatul implicit al datei SELECT last_name, hire_date FROM employees WHERE hire_date LIKE ('%87'); Varianta 2 cu data formatata SELECT last_name, hire_date FROM employees WHERE TO_CHAR(hire_date, 'YYYY' ) = 1987; Sunt obligatorii ghilimelele de la sirul 1987? Ce observati? Nu sunt obligatorii. 18. S se afiseze numele si job-ul pentru toti angajatii care nu au manager. SELECT last_name, job_id FROM employees WHERE manager_id IS NULL; 19. S se afiseze numele, salariul si comisionul pentru toti salariatii care cstig comisioane. S se sorteze datele n ordine descresctoare a salariilor, iar pentru cei care au acelasi salariu n ordine cresctoare a comisioanelor. SELECT last_name, salary, commission_pct FROM employees WHERE commission_pct IS NOT NULL ORDER BY salary DESC, commission_pct ASC; 20. S se listeze numele tuturor angajatilor care au a treia litera din nume 'a'. Obs: Pentru a forma mstile de caractere utilizate mpreun cu operatorul LIKE cu scopul de a compara sirurile de caractere, se utilizeaz: % - reprezentnd orice sir de caractere, inclusiv sirul vid; _ (underscore) reprezentnd un singur caracter. SELECT DISTINCT last_name FROM employees WHERE last_name LIKE '__a%'; 21. Folosind data curent s se afiseze urmtoarele informatii: - numele zilei, numrul zilei din sptmn, numrul zilei din luna, respectiv numrul zilei din an;

13

SELECT TO_CHAR(SYSDATE,'DAY,D,DD,DDD') FROM DUAL; - numrul lunii din an, numele lunii cu abreviere la 3 caractere, respectiv numele complet al lunii; SELECT TO_CHAR(SYSDATE,'MM-MON-MONTH') FROM DUAL; - ora curent (ora, minute, secunde). SELECT TO_CHAR(SYSDATE,'HH24:MI:SS') FROM DUAL; 22. S se listeze numele departamentelor care functioneaz n locatia avnd codul 1700 si al cror manager este cunoscut. SELECT department_name FROM departments WHERE location_id=1700 AND manager_id IS NOT NULL; 23. S se afiseze codurile departamentelor n care lucreaz salariati. SELECT DISTINCT department_id FROM employees WHERE department_id IS NOT NULL ORDER BY department_id; 24. S se afiseze numele si prenumele salariatilor angajati n luna mai 1987. SELECT last_name, first_name FROM employees WHERE TO_CHAR(hire_date, 'MON,YYYY') = 'may-1987'; Sau SELECT last_name, first_name FROM employees WHERE TO_CHAR (hire_date, 'mm-YYYY') = '05-1987'; 25. S se listeze codurile angajatilor care au avut si alte joburi fat de cel prezent. S se ordoneze rezultatul descresctor dup codul angajatului. SELECT department_name FROM departments WHERE manager_id IS NOT NULL; 26. S se afiseze numele si data angajrii pentru cei care lucreaz n departamentul 80 si au fost angajati n luna martie a anului 1997. SELECT last_name, hire_date FROM employees WHERE TO_CHAR(hire_date, 'MON-YYYY') = 'MAR-1987' AND department_id = 80; 27. S se afiseze numele joburilor care permit un salariu cuprins ntre 8300$ si 14000$. SELECT DISTINCT j.job_title, s.salary FROM jobs j, employees s WHERE j.job_id = s.job_id and salary BETWEEN 8300 AND 14000 ORDER BY salary DESC; 28. Care este grila de salarizare pentru un salariu de 10000$? DELECT * FROM employees WHERE salary = 10000; 29. S se listeze numele tuturor angajatilor care au 2 litere 'L' n nume si lucreaz n departamentul 30 sau managerul lor este 123. SELECT last_name||' '||first_name "Numele si prenumele" FROM employees WHERE last_name LIKE '%L%L%' AND department_id = 30 OR manager_id = 123; 30. S se afiseze numele, job-ul si salariul pentru toti salariatii al cror job contine sirul 'CLERK' sau 'REP' si salariul nu este egal cu 1000, 2000 sau 3000 $. 31. S se afiseze numele, salariul si comisionul pentru toti angajatii al cror salariu este mai mare dect de 5 ori valoarea comisionului (salary*commission_pct*5). SELECT last_name||' '||first_name "Numele si prenumele", commission_pct FROM employees WHERE salary > commission_pct*5; FUNCII SQL (single-row)

14

Principalele functii SQL pot fi clasificate n urmtoarele categorii: Functii single-row Functii multiple-row (functii agregat) Functiile single-row returneaz cte o linie rezultat pentru fiecare linie a tabelului sau vizualizrii interogate. Aceste functii pot aprea n listele SELECT, clauzele WHERE, START WITH, CONNECT BY si HAVING. 1. Analizati urmtoarele functii pentru prelucrarea sirurilor de caractere: 2. LOWER (expresie) - Converteste un sir de caractere la minuscule. LOWER ('AbCdE') = 'abcde' UPPER (expresie) - Converteste un sir de caractere UPPER ('AbCdE') = 'ABCDE' INITCAP (expresie) - Converteste un sir de caractere la un sir care ncepe cu majuscul si continu cu INITCAP ('AbCdE') = 'Abcde' INITCAP (expresie) - Converteste un sir de caractere la un sir care ncepe cu majuscul si continu cu minuscule. INITCAP ('AbCdE') = 'Abcde' SUBSTR (expresie, m[, n]) - Extrage din expresia de tip sir de caractere, n caractere ncepnd cu pozitia m. Dac lipseste argumentul n, atunci extrage toate caracterele pn la sfrsitul sirului. Dac m este negativ numrtoarea poziiilor ncepe de la sfrsitul sirului de caractere spre nceput. SUBSTR ('AbCdE', 2) = 'bCdE' SUBSTR ('AbCdE', -3,2) = 'Cd' SUBSTR ('AbCdE', -3) = 'CdE' LENGTH (expresie) - Returneaz numrul de caractere al expresiei. LENGTH ('AbCdE') = 5 INSTR (expresie, expr1[, m][, n]) - Returneaz pozitia la care se gseste a n-a ocurent a expresiei 'expr1' n cadrul expresiei 'expresie', cutarea ncepnd de la poziia m. Daca m sau n lipsesc, valorile implicite sunt 1 pentru ambele. INSTR (LOWER('AbCdE aBcDe'), 'ab', 5) = 7 INSTR (LOWER('AbC aBcDe'), 'ab', 5, 2) = 0 LTRIM (expresie[, expr1]) sau RTRIM (expresie[, expr1]) - Reversul functiilor LPAD, RPAD. Truncheaz expresia RTRIM (expresie[, expr1]) caracter la stnga sau la dreapta prin eliminarea succesiv a caracterelor din expresia expr1. Implicit, daca lipseste, expr1 = 'abcde' RTRIM ('abcdeXXXX', 'X') = 'abcde' LTRIM (' abcde') = 'abcde' TRIM (LEADING | TRAILING | BOTH caractere_trim FROM expresie) - Permite eliminarea caracterelor specificate (caractere_trim) de la nceputul (leading) , sfrsitul (trailing) sau din ambele prti, dintr-o expresie caracter data. TRIM (LEADING 'X' FROM 'XXXabcdeXXX') = 'abcdeXXX' TRIM (TRAILING 'X' FROM 'XXXabcdeXXX') = 'XXXabcde' TRIM ( BOTH 'X' FROM XXXabcdeXXX') = 'abcde' TRIM (' abcde ') = 'abcde' 2. S se afiseze pentru fiecare angajat din departamentul 20 un sir de caractere de forma "Functia salariatului {prenume} {nume} este {cod functie}". S se afiseze prenumele cu initiala litera mare, iar numele cu litere mari (Stephen KING), iar codul functiei s se afiseze cu litere mici. SELECT 'Functia salariatului ' || INITCAP(first_name)||' '||UPPER(last_name) ||' este ' ||LOWER(job_id)||' .' AS "Angajatul si codul functiei" FROM employees WHERE department_id = 20; 3. S se afiseze pentru angajatul cu numele 'HIGGINS' codul, numele si codul departamentului. Cum se scrie conditia din WHERE astfel nct s existe siguranta ca angajatul 'HIGGINS' va fi gsit oricum ar fi fost introdus numele acestuia? Cutarea trebuie s nu fie case-sensitive, iar eventualele blank-uri care preced sau urmeaz numelui trebuie ignorate.

15

SELECT employee_id, last_name, department_id FROM employees WHERE UPPER(TRIM(last_name)) = 'HIGGINS'; 4. S se afiseze pentru toti angajatii al cror nume se termin n 'n', codul, numele, lungimea numelui si pozitia din nume n care apare prima data litera 'a'. Asociati aliasuri coloanelor returnate de cerere. SELECT employee_id, last_name, LENGTH(last_name), INSTR(UPPER(last_name), 'A') FROM employees WHERE SUBSTR(last_name,-1)='n'; 5. Analizati urmtoarele functii aritmetice: ROUND (expresie [, n]) - Returneaz valoarea rotunjit a expresiei pn la n zecimale. Daca n este negativ sunt rotunjite cifre din stnga virgulei. Valoarea implicit pentru n este 0. ROUND(1.6) = 2 ROUND(1.4) = 1 ROUND (1234.56,1) = 1234.6 ROUND (1230.56, -2) = 1200 ROUND (1260.56, -2) = 1300 MOD (m,n) - Returneaz restul mprtirii lui m la n. MOD (11, 4) = MOD (11, -4) = 3 MOD(-11, 4) = MOD (-11, -4) = -3 7. S se afiseze numele, salariul si numrul de mii al salariului rotunjit la 2 zecimale pentru cei care nu au salariul divizibil cu 1000. SELECT last_name, salary, ROUND(salary/1000 ,2) "MII LEI" FROM employees WHERE MOD(salary,1000) !=0; 8. Analizati urmtoarele operatii pe expresii de tip dat calendaristic: date -/+ number - Date - Scade/Adaug un numr de zile dintr-o / la o dat. date1 - date2 - Number - ntoarce numrul de zile dintre dou date calendaristice. date +/- number/24 Date - Scade/Adaug un numr de ore la o / dintr-o dat calendaristic. 9. S se afiseze data (luna, ziua, ora, minutul si secunda) de peste 10 zile. SYSDATE+10 SELECT TO_CHAR(SYSDATE+30, MONTH DD HH24:MM:SS) Data FROM DUAL; 10. S se afiseze numrul de zile rmase pn la sfrsitul anului. ROUND(TO_DATE(31-DEC-2009)SYSDATE) SELECT ROUND(TO_DATE('31-DEC-2009') - SYSDATE) FROM DUAL; 11. a. S se afiseze data de peste 12 ore. SYSDATE+12/24 SELECT SYSDATE + 12/24 FROM DUAL; Sau SELECT TO_CHAR(SYSDATE+12/24, DD/MM HH24:MM:SS) Data FROM DUAL; 11. b. S se afiseze data de peste 5 minute. SYSDATE+1/288 SELECT SYSDATE + 1/288 FROM DUAL; Sau data, incluziv minutele si secundele SELECT TO_CHAR(SYSDATE+1/288, DD/MM HH24:MM:SS) Data FROM DUAL; 12. Analizati urmtoarele functii pentru prelucrarea datelor calendaristice: SYSDATE - ntoarce data si timpul curent MONTHS_BETWEEN (date1, date2) - Returneaz numrul de luni dintre data date1 si data date2. Rezultatul poate fi pozitiv sau negativ dup cum date1 este mai recent sau nu fat de date2. Zecimalele reprezint parti dintr-o luna! ROUND(MONTHS_BETWEEN (SYSDATE + 31, SYSDATE)) = 1 ADD_MONTHS (date, n) - Adaug n luni la o data specificat. Valoarea n trebuie s fie ntreag (pozitiv sau negativ). ADD_MONTHS (date, n) MONTHS_BETWEEN

16

(ADD_MONTHS(SYSDATE, 3), SYSDATE) = 3 NEXT_DAY (date, char) - Returneaz data corespunztoare primei zile a sptmnii specificate (char) care urmeaz dup date. NEXT_DAY('15-dec-2006','Monday') = '18-dec-2006' NEXT_DAY ('15-dec-2006',1) = '18-dec-2006' 13. S se afiseze numele angajatului, data angajrii si data negocierii salariului, care a avut loc n prima zi de Luni, dup 6 luni de serviciu. Etichetati aceast coloan Negociere. NEXT_DAY(ADD_MONTHS(hire_date, 6), Monday) SELECT last_name, hire_date, NEXT_DAY(ADD_MONTHS(hire_date, 6), 'Luni') "Negociere" FROM employees; 14. Pentru fiecare angajat s se afiseze numele si numrul de luni de la data angajrii. Etichetati coloanaLuni lucrate. S se ordoneze rezultatul dup numrul de luni lucrate. Se va rotunji numrul de luni la cel mai apropiat numr ntreg. SELECT last_name, ROUND(MONTHS_BETWEEN(SYSDATE, hire_date)) Luni lucrate FROM employees ORDER BY MONTHS_BETWEEN(SYSDATE, hire_date); SELECT last_name, ROUND(MONTHS_BETWEEN(SYSDATE, hire_date)) Luni lucrate FROM employees ORDER BY Luni lucrate; SELECT last_name, ROUND(MONTHS_BETWEEN(SYSDATE, hire_date)) Luni lucrate FROM employees ORDER BY 2; 15. Analizati urmtoarele functii de conversie: Obs. Conversiile implicite asigurate de server-ul Oracle sunt: de la VARCHAR2 sau CHAR la NUMBER; de la VARCHAR2 sau CHAR la DATE; de la NUMBER la VARCHAR2 sau CHAR; de la DATE la VARCHAR2 sau CHAR. SELECT last_name FROM employees WHERE TO_CHAR(hire_date,'yyyy')=1994; /* afiseaza o singura coloana cu numele salariatilor care au fost angajati in anul 1994*/ SELECT last_name FROM employees WHERE hire_date='07-IUN-1994'; /*afiseaza numele salariatilor care au fost angajati in 7 iunie 1994*/ SELECT employee_id||' '||last_name||' '||hire_date FROM employees WHERE department_id=10; /* afiseaza id angajat, numele si data angajarii salariatilor din departamentul cu id 10*/ 16. S se afiseze numele si prenumele pentru toti angajatii care s-au angajat n luna mai. SELECT last_name, first_name FROM employees WHERE TO_CHAR(hire_date,'MON') = 'MAY'; sau SELECT last_name, first_name FROM employees WHERE TO_CHAR(hire_date,'mm') = 05; 18. S se afiseze numele angajatilor si comisionul. Dac un angajat nu cstig comision, s se scrie Fara comision. Etichetati coloana Comision. NVL(TO_CHAR(commission_pct), Fara comision) UPDATE employees SET commission_pct = NULL WHERE last_name = ' Kochhar'; SELECT last_name, NVL(TO_CHAR(commission_pct),'Fara comision') "Comision" FROM employees;

17

19. S se listeze numele, salariul si comisionul tuturor angajatilor al cror venit lunar depseste 10000$. salary * NVL(commission_pct, 0) venit_lunar SELECT last_name, salary, commission_pct FROM employees WHERE salary * NVL(commission_pct, 0) >10000; 21. S se afiseze numele, codul functiei, salariul si o coloana care s arate salariul dup mrire. Se stie c pentru IT_PROG are loc o mrire de 10%, pentru ST_CLERK 15%, iar pentru SA_REP o mrire de 20%. Pentru ceilalti angajati nu se acord mrire. S se denumeasc coloana "Salariu revizuit". IT_PROG >> 44 ST_CLERK >> 55 SA_REP >> 99 SELECT last_name, job_id, salary, DECODE(job_id, IT_PROG, salary*1.1, ST_CLERK, salary*1.15, SA_REP, salary*1.2, salary ) salariu revizuit FROM employees; SELECT last_name, job_id, salary, CASE job_id WHEN IT_PROG THEN salary* 1.1 WHEN ST_CLERK THEN salary*1.15 WHEN SA_REP THEN salary*1.2 ELSE salary END salariu revizuit FROM employees; SELECT last_name, job_id, salary, CASE WHEN job_id= IT_PROG THEN salary* 1.1 WHEN job_id=ST_CLERK THEN salary*1.15 WHEN job_id =SA_REP THEN salary*1.2 ELSE salary END salariu revizuit FROM employees; 22. S se afiseze numele salariatului si codul departamentului n care acesta lucreaz. Dac exist salariati care nu au un cod de departament asociat, atunci pe coloana id_depratment s se afiseze: textul fara departament; valoarea zero. SELECT last_name, NVL(TO_CHAR(department_id) , 'Fara departament') "department" FROM employees; SELECT last_name, NVL(TO_CHAR(department_id) , 0) "department" FROM employees; SELECT last_name, CASE WHEN department_id IS NULL THEN 'Fara departament' ELSE TO_CHAR(department_id) END "DEPARTAMENT" FROM employees; SELECT last_name, CASE WHEN department_id IS NULL THEN 0 ELSE department_id END "DEPARTAMENT" FROM employees; 23. a. S se afiseze numele angajatilor care nu au manager. SELECT last_name FROM employees WHERE manager_id IS NULL; sau SELECT last_name||' '||first_name FROM employees WHERE manager_id IS NULL; 23.b. S se afiseze numele angajatilor si codul managerilor lor. Pentru angajatii care nu au manager s apar textul nu are sef. SELECT last_name, CASE WHEN manager_id IS NULL THEN 'Nu are sef' ELSE TO_CHAR(manager_id)

18

END "manager" FROM employees; Sau SELECT last_name||' '||first_name, CASE WHEN manager_id IS NULL THEN 'Nu are sef' ELSE TO_CHAR(manager_id) END "manager" FROM employees; 24. S se afiseze numele salariatului si: venitul anual dac are comision; salariul dac nu are comision. Se va utiliza functia NVL2. Functie NVL2 (expr1, expr2, expr3) Explicatie Dac expr1 este nenul atunci returneaz expr2, altfel Returneaz expr3 Exemplu NVL2 (1, 2, 3) = 2 NVL2 (NULL, 2, 3) = 3 24. S se afiseze numele salariatului si: venitul anual dac are comision; salariul dac nu are comision. Se va utiliza functia NVL2. /*si aici voi aduna salariul cu comisionul*/ SELECT last_name NVL2(commission_pct, salary+commission_pct, 0) "It's about money" FROM employees; /*nu am inteles exact ce ar trebui sa facem asa ca am pus sa afiseze si separat pe doua coloane */ SELECT last_name, NVL2(commission_pct, salary+commission_pct, 0) "astia au comision", NVL2(commission_pct, 0, salary) "astia nu au comision" FROM employees; ????????? 25. S se afiseze numele salariatului, salariul si salariul revizuit astfel: - dac lucreaz de mai mult de 200 de luni atunci salariul va fi mrit cu 20%; - dac lucreaz de mai mult de 150 de luni, dar mai putin de 200 de luni, atunci salariul va fi mrit cu 15%; - dac lucreaz de mai mult de 100 de luni, dar mai puin de 150 de luni, atunci salariul va fi mrit cu 10%; - altfel, salariul va fi mrit cu 5%. SELECT last_name, salary, CASE WHEN ROUND(MONTHS_BETWEEN(SYSDATE, hire_date)) > 200 THEN salary*1.2 WHEN ROUND(MONTHS_BETWEEN(SYSDATE, hire_date)) > 150 THEN salary*1.15 WHEN ROUND(MONTHS_BETWEEN(SYSDATE, hire_date)) > 100 THEN salary*1.1 ELSE salary*1.05 END "SALARIU REVIZUIT" FROM employees;

CERERI MULTITABEL, SUBCERERI Tipuri de join: - equijoin (se mai numeste inner join sau simple join) - compunerea a dou tabele diferite dup o conditie ce contine operatorul de egalitate. SELECT last_name, department_name, location_id, e.department_id FROM employees e, departments d WHERE e.department_id = d.department_id; Obs: Numele sau alias-urile tabelelor sunt obligatorii n dreptul coloanelor care au acelasi nume n mai multe tabele.

19

- nonequijoin - compunerea a dou relatii tabele dup o conditie oarecare, ce NU contine operatorul de egalitate. SELECT last_name, salary, grade_level FROM employees, job_grades WHERE salary BETWEEN lowest_sal AND highest_sal; - outerjoin - compunerea extern a dou tabele diferite completnd una dintre relatii cu valori NULL acolo unde nu exist n aceasta nici un tuplu ce ndeplineste conditia de corelare. Relatia completat cu valori NULL este cea n dreptul creia apare (+). Operatorul (+) poate fi plasat n orice parte a conditiei de join, dar nu n ambele prti. Full outer join = Left outer join UNION Right outer join. SELECT last_name, department_name,location_id FROM employees e, departments d WHERE e.department_id(+) = d.department_id; - selfjoin - compunerea extern a unui tabel cu el nsusi dup o conditie dat. SELECT sef.last_name, angajat.last_name FROM employees sef, employees angajat WHERE sef.employee_id = angajat.manager_id ORDER BY sef.last_name; 1. Pentru fiecare angajat s se afiseze numele, codul si numele departamentului. SELECT last_name, e.department_id, department_name FROM employees e, departments d WHERE e.department_id = d.department_id; 2. S se afiseze numele angajatului, numele departamentului pentru toti angajatii care cstig comision. SELECT last_name, department_name FROM employees e, departments d WHERE e.department_id = d.department_id AND commission_pct IS NOT NULL; 2. S se listeze numele job-urile care exist n departamentul 30. 3. SELECT DISTINCT job_title FROM employees e, jobs j WHERE e.job_id = j.job_id AND department_id = 30; 4. Sa