25931951 Baze de Date Anul III Sem I

download 25931951 Baze de Date Anul III Sem I

of 337

Transcript of 25931951 Baze de Date Anul III Sem I

1. Care este forma corecta pentru a adauga constrangeri la nivel de coloana si /sau la nivel de tabel? CREATE TABLE [schema.]nume_tabel ( nume_coloana tip_de_date, [DEFAULT expr] [constrangere_de_coloana], ... ..[constrangere la nivel de tabel]) CREATE TABLE [schema.]nume_tabel ( nume_coloana tip_de_date [DEFAULT expr], [constrangere_de_coloana] ... ..[constrangere la nivel de tabel]) CREATE TABLE [schema.]nume_tabel ( nume_coloana tip_de_date, [DEFAULT expr], [constrangere_de_coloana], ... ..[constrangere la nivel de tabel]) CREATE TABLE [schema.]nume_tabel ( nume_coloana tip_de_date [DEFAULT expr] [constrangere_de_coloana], ... ..[constrangere la nivel de tabel]) 2. Care este comanda corecta care determina marirea salariul tuturor angajatilor din tabelul salariat cu 5%? UPDATE salariu SET salariu = salariu * 1.05; UPDATE salariat SET salariu = salariu * 1.05; UPDATE salariat SET salariu = 1.05; UPDATE salariat SET salariu = salariu + salariu* 1.05; 3. Care este comanda corecta care insereaza in tabelul TOTALURI(cod_departament, numar_angajati, suma_salarii)? INSERT INTO totaluri SELECT cod_departament, COUNT(*),SUM(salariu) FROM salariat GROUP BY cod_departament; INSERT INTO totaluri SELECT cod_departament, SUM(cod_angajat),SUM(salariu) FROM salariat GROUP BY cod_departament; INSERT INTO totaluri SELECT cod_departament, COUNT(*),SUM(salariu) FROM salariat; INSERT INTO totaluri SELECT cod_departament, COUNT(),SUM(salariu) FROM salariat ORDER BY cod_departament; 4. Care comanda afiseaza numele angajatilor, fara duplicate, care au manager? SELECT DISTINCT nume FROM salariat WHERE manager IS NOT NULL; SELECT DISTINCT nume FROM salariat WHERE manager IS NULL; SELECT nume FROM salariat WHERE manager IS NOT NULL; SELECT DISTINCT nume

FROM salariat WHERE manager != NULL; 5. Care este comanda corecta care pentru fiecare facultate, se insereaza in tabelul SALARII(cod_fac, nr_prof, total_sal_fac) numarul de profesori si suma salariilor pe care facultatea o plateste profesorilor sai? INSERT TO TOTALURI SELECT COD_FAC, COUNT(*) , SUM(SALARIU) FROM PROF ORDER BY COD_FAC; INSERT INTO TOTALURI SELECT COD_FAC, COUNT(*) , SUM(SALARIU) FROM PROF ; INSERT INTO TOTALURI SELECT COD_FAC, COUNT(*) , SUM(SALARIU) FROM PROF GROUP BY COD_FAC; INSERT INTO totaluri SELECT COD_FAC, SUM(COD_PROF),SUM(SALARIU) FROM PROF GROUP BY COD_FAC; 6. Care secventa este corecta pentru a afisa citi angajati nu au o valoare introdusa pe coloana salariu? SELECT COUNT() FROM salariati WHERE SALARIU =0; SELECT COUNT(*) FROM salariati WHERE SALARIU =NULL; SELECT COUNT(*) FROM salariati WHERE SALARIU IS NOT NULL; SELECT COUNT(*) FROM salariati WHERE SALARIU IS NULL; 7. Care este comanda corecta care determina dublarea salariilor cu rotunjire la 2 zecimale a angajatilor care sunt titulari? UPDATE salariat SET salariu=ROUND(salariu*2,2); UPDATE salariat SET salariu=ROUND(salariu*2) WHERE titular =y; UPDATE salariat SET salariu=ROUND(salariu*2,2) WHERE titular =y; UPDATE salariat SET salariu=ROUND(salariu*0.5,2) WHERE titular =y; 8. Care este comanda corecta care afiseaza numele salariatilor care castiga mai mult decat salariul mediu pe companie, in ordine crescatoare a salariului? SELECT nume FROM salariati WHERE salariu >AVG(salariu);

SELECT nume FROM salariati WHERE salariu > (SELECT AVG(salariu) FROM salariati) ORDER BY salariu; SELECT nume FROM salariati WHERE salariu > (SELECT AVG(salariu) FROM salariati ORDER BY salariu); SELECT nume FROM salariati WHERE salariu > (SELECT AVG(salariu) FROM salariati) ORDER BY 1; 9. Ce comanda modifica in tabelul SALARIAT COD _ANG NUME PRENUME DATA_ANG VARSTA EMAIL SALARIU not null numeric de 5 sir de caractere de maxim 20 sir caractere de maxim 20 date, valoare implicita data curent numeric de 2 sir de caractere de dimensiune fixa, de 30 valoare implicita 0 numar de 10 cu 2 zecimale dimensiunea coloanei nume la 30 si pe cea a coloanei salariu la 12 cu 3 zecimale? ALTER TABLE salariat MODIFY nume VARCHAR2(30), salariu NUMBER(12,3); ALTER TABLE salariat MODIFY nume VARCHAR2(30), salariu NUMBER(12,3); ALTER TABLE salariat MODIFY nume VARCHAR2(30), MODIFY salariu NUMBER(12,3);

ALTER TABLE salariat MODIFY (nume VARCHAR2(30), salariu NUMBER(12,3)); 10. Care este comanda corecta care sterge valoarea coloanei salariu pentru angajatii care sunt angajati cu contract de colaborare? DELETE salariu FROM salariati WHERE contract=colaborare; UPDATE salariati SET salariu IS null WHERE contract=colaborare; DROP salariu FROM salariati WHERE contract=colaborare; UPDATE salariati SET salariu=null WHERE contract=colaborare; 11. Care este comanda incorecta care afiseaza numele, salariul si varsta pentru toti salariatii care castiga mai mult de 1000, rezultatul fiind sortat descendent dupa salariu, iar pentru cei care au acelasi salariu in ordine crescatoare dupa nume? SELECT nume, salariu, varsta FROM salariat WHERE salariu>1000 ORDER BY salariu DESC nume ASC; SELECT nume, salariu, varsta FROM salariat WHERE salariu>1000 ORDER BY salariu DESC, nume ASC; SELECT nume, salariu, varsta FROM salariat WHERE salariu>1000 ORDER BY salariu DESC, nume; SELECT nume, salariu, varsta FROM salariat WHERE salariu>1000 ORDER BY 2 DESC, 1 ASC; 12. Actualizarile realizate asupra tabelelor de baza ale unei vizualizari se reflecta totdeauna in vizualizare Adevrat Fals 13. Care este comanda corecta pentru a afisa numele, prenumele si varsta salariatilor, iar pentru cei care au varsta necunoscuta sa apara textul varsta necunoscuta? SE LECT nume, prenume, NVL(varsta, varsta necunoscuta) FROM salariat; SELECT nume, prenume, NVL(TO_CHAR(varsta), varsta necunoscuta) FROM salariat; SE LECT nume, prenume, NVL(CHAR(varsta), varsta necunoscuta) FROM salariat; SE LECT nume, prenume, NVL2(TO_CHAR(varsta), varsta necunoscuta) FROM salariat; 14. Care comanda afiseaza numarul de angajati din fiecare departament?

SE LECT cod_departament, COUNT(*) FROM salariat; SE LECT cod_departament, SUM(cod_ angajat) FROM salariat GROUP BY cod_departament; SELECT cod_ departament, COUNT(*) FROM salariat GROUP BY cod_departament; SE LECT cod_departament, COUNT() FROM salariat GROUP BY cod_departament; 15. Pentru a introduce in tabelul SALARIAT COD _ ANG NUME PRENUME DATA_ ANG VARSTA SALARIU not null numeric de 5 sircaractere de maxim 20 sir caractere de maxim 20 date, valoare implicita data curent numeric de 2 valoare implicita 0 numar de 10 cu 2 zecimale doua coloane: Cod_Funct si Email ce varianta folosim? ALTER TABLE SALARIAT ADD Cod_Funct NUMBER(2), ALTER COLUMN ADD Email char(25); ALTER TABLE SALARIAT ADD Cod_Funct NUMBER(2), ADD Email CHAR(25); ALTER TABLE SALARIAT ADD (Cod_Funct NUMBER(2) , Email CHAR(25)); ALTER TABLE SALARIAT ADD Cod_Funct NUMBER(2), ALTER ADD Email char(25); 16. Ce comanda creeaza tabelul SALARIAT_ 1 care s aiba aceeiasi structura cu tabelul SALARIAT COD _ANG NUME PRENUME DATA_ANG VARSTA EMAIL SALARIU not null numeric de 5 sir de caractere de maxim 20 sir caractere

de maxim 20 date, valoare implicita data curent numeric de 2 sir de caractere de dimensiune fixa, de 30 valoare implicita 0 numar de 10 cu 2 zecimale si sa contina salariatii care au salariu >100? CRE ATE TABLE SALARIAT_1 SE LECT * FROM SALARIAT WHERE SALARIU>100; CREATE TABLE SALARIAT_ 1 AS SELECT * FROM SALARIAT WHERE SALARIU>100; CRE ATE TABLE SALARIAT_1 AS SE LECT FROM SALARIAT WHERE SALARIU>100; CRE ATE TABLE SALARIAT_1 AS SE LECT COD_ANG, SALARIU FROM SALARIAT WHERE SALARIU>100; 17. Pentru a modifica dimensiunea coloanei prenume la 30 si pe cea a salariului la 12 cu 3 zecimale, din tabelul SALARIAT COD _ANG NUME PRENUME DATA_ANG VARSTA EMAIL SALARIU not null numeric de 5 sir de caractere de maxim 20 sir caractere de maxim 20 date, valoare implicita data curent numeric de

2 sir de caractere de dimensiune fixa, de 30 valoare implicita 0 numar de 10 cu 2 zecimale care varienta este corecta? ALTER TABLE SALARIAT MODIFY (prenume VARCHAR2(30) salariu NUMBER(12,3)); ALTER TABLE SALARIAT MODIFY (prenume VARCHAR2(30)), MODIFY(salariu NUMBE R(12,3)); ALTER TABLE SALARIAT MODIFY (prenume VARCHAR2(30) , salariu NUMBER(12,3)); ALTER TABLE SALARIAT ADD (prenume VARCHAR2(30), salariu NUMBER(12,3)); 18. Care este varianta corecta pentru a crea tabelul Salariat, cu caracteristicile de mai jos? COD _ANG NUME PRENUME DATA_ANG VARSTA EMAIL SALARIU not null numeric de 5 sir de caractere de maxim 20 sir caractere de maxim 20 date, valoare implicita data curent numeric de 2 sir de caractere de dimensiune fixa, de 30 valoare implicita 0 numar de

10 cu 2 zecimale CREATE TABLE SALARIAT ( cod_ ang NUMBER(5) NOT NULL, nume VARCHAR2(20), prenume VARCHAR2(20), data_ angajarii DATE DEFAULT SYSDATE, varsta NUMBER(2), email CHAR(50), salariu NUMBER(10,2) DEFAULT 0); CRE ATE TABLE SALARIAT ( cod_ ang NUMBER(5) nume VARCHAR2(20), prenume VARCHAR2(20), data_ angajarii DATE , varsta NUMBER(2), email CHAR(50), salariu NUMBER(10,2) DEFAULT 0); CRE ATE TABLE SALARIAT ( cod_ ang NUMBER(5) NOT NULL, nume VARCHAR2(20), prenume VARCHAR2(20), data_ angajarii DATE, DE FAULT SYSDATE , varsta NUMBER(2), email CHAR(50), salariu NUMBER(10,2), DE FAULT 0); 19. Care varianta este corecta pentru a redenumi tabelul SALARIAT cu numele SALARIATI? RENAME SAL ARIAT TO SALARIATI; RENAME SALARIAT WITH SALARIATI; RENAME TABLE SALARIAT TO TABLE SALARIATI; RENAME TABLE SALARIAT WITH TABLE SALARIATI; 20. Care ste comanda corecta care afiseaza codul departamentelor pentru care salariul minim depaseste 5000$? SELECT cod_departament FROM salariat WHERE MIN(salariu)>5000 GROUP BY cod_departament; SE LECT cod_departament FROM salariat GROUP BY cod_departament HAVING MIN(salariu)>5000; SE LECT cod_departament FROM salariat GROUP BY cod_departament MIN(salariu)>5000; ALTE SUBIECTE TIMISOARA Care este comanda corecta care afiseaza numele si salariul angajatilor condusi direct de Ionescu Mihai? SELECT nume, salariu FROM salariati WHERE cod_sef = (SELECT cod_angajat FROM salariati WHERE nume ='Ionescu' AND prenume ='Mihai' );

SELECT nume, salariu FROM salariati WHERE cod_sef = (SELECT cod_angajat FROM salariati WHERE nume ='Ionescu', prenume ='Mihai' ); SELECT nume, salariu FROM salariati WHERE cod_sef = Ionescu Mihai'; SELECT nume, salariu FROM salariati WHERE cod_sef != (SELECT cod_angajat FROM salariati WHERE nume ='Ionescu' AND prenume ='Mihai' ); Ce comanda sterge din tabelul SALARIAT COD _ANG NUME PRENUME DATA_ANG VARSTA EMAIL SALARIU not null numeric de 5 sir de caractere de maxim 20 sir caractere de maxim 20 date, valoare implicita data curent numeric de 2 sir de caractere de dimensiune fixa, de 30 valoare implicita 0 numar de 10 cu 2 zecimale coloana nume si coloana salariu? ALTER TABLE SALARIAT DROP nume, salariu; ALTER TABLE SALARIAT DROP COLUMN (nume, salariu); ALTER TABLE SALARIAT DROP (nume, salariu); ALTER TABLE SALARIAT DROP COLUMN nume, COLUMN salariu; Care este comanda corecta care afiseaza numele salariatilor care lucreaza in departamentul 3 si au salariul >100 sau care sunt din departamentul 5 si au salariul 100) AND (cod_deptartament=5 OR salariu100) OR (cod_deptartament=5 AND salariu100) AND (cod_deptartament=5 AND salariu100) OR (cod_deptartament=5 OR salariu100? CREATE TABLE SALARIAT_1 SELECT * FROM SALARIAT WHERE SALARIU>100; CREATE TABLE SALARIAT_1 AS SELECT * FROM SALARIAT WHERE SALARIU>100; CREATE TABLE SALARIAT_1 AS SELECT FROM SALARIAT WHERE SALARIU>100; CREATE TABLE SALARIAT_1 AS SELECT COD_ANG, SALARIU FROM SALARIAT WHERE SALARIU>100;

Care este comanda nu elimina simultan spatiile de la inceputul si sfarsitul coloanei nume? SELECT TRIM(nume) FROM salariat; SELECT RTRIM(LTRIM(nume)) FROM salariat; SELECT LTRIM(RTRIM(nume)) FROM salariat; SELECT LTRIM(nume) FROM salariat; 2. Care este comanda corecta care afiseaza toate functiile pe care nu lucreaza angazatii? A SELECT cod_functie FROM functii WHERE cod_functie IN (select cod_functie FROM salariati WHERE cod_functie IS NOT NULL) B SELECT cod_functie FROM functii WHERE cod_functie NOT IN (select cod_functie FROM salariati WHERE cod_functie IS NULL) C SELECT cod_functie FROM functii WHERE cod_functie NOT IN (select cod_functie FROM salariati) D SELECT cod_functie FROM functii WHERE cod_functie NOT IN (select cod_functie FROM salariati WHERE cod_functie IS NOT NULL) Raspuns D. ALTE TESTE 3-Care este comanda corecta care afiseaza numele cititorilor care au carti nerestituite? SELECT nume_ cititor FROM imprumuta WHERE data_ restituirii = NULL; SE LECT nume_cititor FROM imprumuta WHERE data_ restituirii IS NOT NULL; SELECT nume_ cititor FROM imprumuta WHERE data_ restituirii IS NULL; SE LECT nume_cititor FROM imprumuta WHERE data_ restituirii > SYSDATE; 6-Care comanda nu defineste corect un tabel? CREATE TABLE [schema.]nume_ tabel ( nume_coloana tip_de_date [DEFAULT expr], ...); CREATE TABLE nume_ tabel [(col1, col2...)] AS subcerere; CREATE TABLE [schema.]nume_ tabel ( nume_ coloana tip_de_date, [DEFAULT expr], [constrangere_de_coloana], ...); CREATE TABLE [schema.]nume_ tabel ( nume_coloana tip_de_date [DEFAULT expr] [constrangere_ de_coloana], ... ..[constrangere la nivel de tabel]) 8-Ce comanda creeaza corect tabelul SALARIAT, specificand constrangerile COD _ ANG NUME PRENUME DATA_ANG VARSTA EMAIL SALARIU

cheie primara numeric de 5 not null sir decaractere demaxim 20 sir caractere de maxim 20 date, valoare implicita data curent numeric de 2 unic sir de caractere de dimensiune fixa, de 30 > 0 numar de 10 cu 2 zecimale coloana nume si coloana salariu? CREATE TABLE salariat( cod_ ang NUMBER(5) PRIMARY KEY, nume VARCHAR2(20) NOT NULL, prenume VARCHAR2(20), data_ ang DATE DEFAULT SYSDATE, varsta NUMBER(2), email CHAR(30) UNIQUE, salariu NUMBER(10,2) CHECK (salariu > 0)); CREATE TABLE salariat( cod_ ang NUMBER(5) PRIMARY KE Y, nume VARCHAR2(20) NOT NULL, prenume VARCHAR2(20), data_ ang DATE DEFAULT SYSDATE , varsta NUMBER(2), email CHAR(30) UNIQUE , salariu NUMBER(10,2) > 0)); CREATE TABLE salariat( cod_ ang NUMBER(5) PRIMARY KE Y, nume VARCHAR2(20) NOT NULL, prenume VARCHAR2(20), data_ ang DATE DEFAULT SYSDATE , varsta NUMBER(2), email CHAR(30), salariu NUMBER(10,2) CHECK (salariu > 0)); 9-Care este comanda corecta care afiseaza numele si salariul angajatilor condusi direct de ENE DAN? SELECT nume, salariu FROM salariati WHERE cod_manager = (SELE CT cod_manager FROM salariati WHERE UPPER(nume) ='ENE ' , UPPER(pren) ='DAN' ); SE LECT nume, salariu FROM salariati WHERE cod_manager = (SELE CT cod_ang FROM salariati WHERE nume ='ENE' , pren ='DAN' ); SE LECT nume, salariu FROM salariati (SE LECT cod_ang FROM salariati WHERE UPPER(nume) ='ENE ' AND UPPER(pren) ='DAN' ); SELECT nume, salariu FROM salariati WHERE cod_manager = (SELECT cod_ ang FROM salariati WHERE UPPER(nume) ='ENE' AND UPPER(pren) ='DAN' ); 10. Care este comanda corecta care afiseaza numarul total al cartilor imprumutate in anul 2008? SELECT COUNT() FROM imprumuta WHERE TO_CHAR(data_ imprumutului,yyyy)=2008; SELECT COUNT(*) FROM imprumuta

WHERE TO_CHAR(data_ imprumutului,yyyy)=2008; SE LECT COUNT(*) FROM imprumuta WHERE data_ imprumutului=2008; SE LECT COUNT(*) FROM imprumuta WHERE TO_CHAR(data_ imprumutului,yy)=2008; 14-Care comanda listeaza numele tuturor angajatilor care au a treia litera din nume 'a'? SELECT nume FROM salariat WHERE nume LIKE '_ _a$'; SELECT nume FROM salariat WHERE nume LIKE '%a%'; SELECT nume FROM salariat WHERE nume LIKE '__ a%'; 15-Care este comanda corecta care afiseaza toate departamentele care platesc salariatilor sai o suma mai mare ca 20000? SELECT nume_ departament FROM departament WHERE 20000< (SE LECT sum(salariu) FROM salariat); SE LECT nume_departament FROM departament A WHERE 20000< (SE LECT sum(salariu) FROM salariat B where cod_ departament=cod_departament); SE LECT nume_departament FROM departament WHERE 20000< (SE LECT sum(salariu) FROM salariat where A.cod_ departament=B.cod_departament); SELECT nume_departament FROM departament A WHERE 20000< (SELECT sum(salariu) FROM salariat B where A.cod_departament=B.cod_departament); 18-Care este comanda corecta care afiseaza codul departamentelor, numele departamentelor si suma salariilor pentru fiecare departament? SELECT cod_ departament, nume_departament, SUM(salariu) FROM salariati s, departamente d GROUP BY cod_departament, nume_departament; SE LECT cod_departament, nume_ departament, SUM(salariu) FROM salariati s, departamente d WHERE s.cod_ departament=d.cod_departament GROUP BY cod_departament; SELECT cod_departament, nume_departament, SUM(salariu) FROM salariati s, departamente d WHERE s.cod_departament=d.cod_departament GROUP BY cod_departament, nume_departament; SE LECT cod_departament, nume_ departament, SUM(salariu) FROM salariati, departamente

WHERE s.cod_ departament=d.cod_departament GROUP BY cod_departament, nume_departament; 19-Care este comanda corecta care sa afiseze daca exista angajati care nu lucreaza in departamentul Contractari si al caror salariu coincide cu salariul unui angajat din departamentul Contractari? SELECT nume, salariu, cod_depart FROM salariati WHERE salariu IN (SELECT salariu FROM salariati s, department d WHERE s.cod_depart = d.cod_depart AND nume_depart Contractari) AND cod_depart= (SELECT cod_depart FROM department WHERE nume_depart = Contractari); SE LECT nume, salariu, cod_depart FROM salariati WHERE salariu IS IN (SELECT salariu FROM salariati s, department d WHERE s.cod_ depart = d.cod_ depart , nume_ depart = Contractari) AND cod_depart (SELECT cod_depart FROM department WHERE nume_depart = Contractari); SE LECT nume, salariu, cod_depart FROM salariati WHERE (salariu) IN (SELECT salariu FROM salariati s, department d WHERE s.cod_ depart = d.cod_ depart AND nume_depart = Contractari) AND cod_depart (SELECT cod_depart FROM department WHERE nume_depart = Contractari);

teste fotografii care nu se regasesc mai sus

1.Care este comanda corecta care afiseaza numarul total de carti dintr-o biblioteca pentru fiecare domeniu: SELECT cod_domeniu, COUNT(numar_exemplare) FROM biblioteca GROUP BY cod_domeniu; SELECT cod_domeniu, SUM(numar_exemplare) FROM biblioteca GROUP BY cod_domeniu; SELECT cod_domeniu, SUM(cod_carte) FROM biblioteca GROUP BY cod_domeniu; SELECT cod_domeniu, COUNT(*) FROM biblioteca GROUP BY cod_domeniu; 2.Pentru tabelul salariat cod_depart cod_ang# nume pren salariu cod_funct care este comanda corecta, pentru a modifica salariul la 3000, pentru angajatii care lucreaza in departamentul 10 si au salariul 100?a. CREATE TABLE SALARIAT_1 SELECT * FROM SALARIAT WHERE SALARIU>100; b. CREATE TABLE SALARIAT_1 AS SELECT * FROM SALARIAT WHERE SALARIU>100; c. CREATE TABLE SALARIAT_1 AS SELECT FROM SALARIAT WHERE SALARIU>100; d. CREATE TABLE SALARIAT_1 AS SELECT COD_ANG, SALARIU FROM SALARIAT WHERE SALARIU>100; 40. Ce comanda sterge din tabelul SALARIAT COD DATA_AN_ANG NUME PRENUME G VARSTA EMAIL SALARIU valoare implicita 0 numar de 10 cu 2 zecimale sir de caractere de dimensiune fixa, de 30

sir de sir caractere caractere de de maxim 20 numeric de 5 maxim 20

not null

date, valoare numeric implicita de data curent 2

coloana nume si coloana salariu?a. ALTER TABLE SALARIAT DROP nume, salariu; b. ALTER TABLE SALARIAT DROP COLUMN (nume, salariu); c. ALTER TABLE SALARIAT DROP (nume, d. salariu); ALTER TABLE SALARIAT 41. Ce DROP COLUMN corect tabelul SALARIAT, specificand constrangerile? comanda creeaza nume, COLUMN salariu;COD _ANG NUME PRENUME DATA_AN G VARSTA EMAIL SALARIU unic sir de date, valoare caractere implicita data numeric de 2 de dimensiun curent e fixa, de 30

not null cheie sir caractere sir de primara caractere de de maxim 20 numeric de 5 maxim 20

> 0 numar de 10 cu 2 zecimale

a. CREATE TABLE salariat( cod_ang NUMBER(5) PRIMARY KEY, nume VARCHAR2(20) NOT NULL, prenume VARCHAR2(20), data_ang DATE DEFAULT SYSDATE, varsta NUMBER(2), email CHAR(30) UNIQUE, salariu NUMBER(10,2) CHECK (salariu > 0));

CREATE TABLE salariat( cod_ang NUMBER(5) PRIMARY KEY, nume VARCHAR2(20) NOT NULL, prenume VARCHAR2(20), data_ang DATE DEFAULT SYSDATE, varsta NUMBER(2), email CHAR(30) UNIQUE, salariu NUMBER(10,2) > 0)); c. CREATE TABLE salariat( cod_ang NUMBER(5) PRIMARY KEY, nume VARCHAR2(20) NOT NULL, prenume VARCHAR2(20), data_ang DATE DEFAULT SYSDATE, varsta NUMBER(2), email CHAR(30), salariu NUMBER(10,2) CHECK (salariu > 0)); 42. Care este comanda corecta prin care se adauga constrangerea de cheie primara tabelului IMPRUMUTA (cod_cititor, cod_carte, data_imprumut, data_restituire)? a. ALTER TABLE IMPRUMUTA ADD PRIMARY KEY cod_cititor, PRIMARY KEY cod_carte, PRIMARY KEY data_imprumut; b. ALTER TABLE IMPRUMUTA ADD PRIMARY KEY cod_cititor, cod_carte, data_imprumut; c. ALTER TABLE IMPRUMUTA ADD CONSTRAINT cp PRIMARY KEY (cod_cititor, cod_carte, d. data_imprumut); ALTER TABLE IMPRUMUTA ADD PRIMARY 43. Pentru tabelul Salariat KEY (cod_cititor, cod_carte, data_imprumut); cod_depart cod_ang# nume pren salariu cod_funct care este comanda corecta, pentru a modifica salariu la 3000, pentru angajatii care lucreaza in departamentu 10 si au salariul1; 60. Care este secventa corecta care afiseaza pentru fiecare domeniu de carte, numrul crilor din domeniu, media preurilor i numrul total de exemplarea. SELECT codcarte, COUNT(*), AVG(pret)

FROM

CARTE

GROUP BY codcarte; AVG(pret), SUM(nrex) FROM CARTE GROUP BY codcarte; c. SELECT codcarte, COUNT(*), AVG(pret), SUM(nrex) FROM CARTE GROUP BY codcarte; d. SELECT COUNT(*), AVG(pret), SUM(nrex) FROM CARTE ORDER BY codcarte;b. SELECT coded, 61. Pentru tabelele: PROF cod_prof#

cod_fac

nume

pren

salariu

FAC cod_fac# denumire adresa care este secventa corecta pentru o interogare de uniune externa catre stanga, care sa afiseze toti profesorii si denumirile facultatilor la care predau a. SELECT NUME, PREN, DENUMIRE FROM FAC PROF LEFT OUTER JOIN ON A.COD_FAC = B.COD_FAC; b. SELECT NUME, PREN, DENUMIRE FROM FAC LEFT OUTER JOIN PROF ON A.COD_FAC = B.COD_FAC; c. SELECT NUME, PREN, DENUMIRE FROM FAC A LEFT OUTER JOIN PROF B ON A.COD_FAC = B.COD_FAC; 62. Pentru tabelele: PROF cod_prof# cod_fac nume pren salariu cod_funct FUNCTII cod_funct# nume_funct care este secventa corecta pentru o subinterogare necorelata, care sa afiseze toate functiile pentru care nu exista profesorii incadrati a. SELECT cod_funct, nume_funct FROM functii WHERE cod_funct NOT IN (SELECT DISTINCT cod_funct FROM b. prof); SELECT cod_funct, nume_funct FROM functii WHERE cod_funct NOT IN FROM prof; c. SELECT DISTINCT cod_funct SELECT cod_funct, nume_funct FROM functii WHERE cod_funct IN (SELECT cod_funct FROM fiecare 63. Care este comanda corecta care pentruprof); facultate, se insereaza in tabelul TOTALURI(cod_fac, nr_prof, total_sal_fac) numarul de profesori si suma salariilor pe care facultatea o plateste profesorilor sai? a. INSERT TO TOTALURI

SELECT COD_FAC, COUNT(*) , SUM(SALARIU) FROM PROF ORDER BY COD_FAC; b. INSERT INTO TOTALURI SELECT COD_FAC, COUNT(*) , SUM(SALARIU) FROM PROF ; c. INSERT INTO TOTALURI SELECT COD_FAC, COUNT(*) , SUM(SALARIU) FROM PROF GROUP BY COD_FAC; d. INSERT INTO TOTALURI SELECT COD_FAC, SUM(COD_PROF), SUM(SALARIU) FROM PROF GROUP BY COD_FAC; 64.

S se obin titlurile i preurile crilor mai scumpe dect cartea avnd titlul Baze de date, al crui autor este Popescu (self join).a.

SELECT x.titlu, x.pret FROM carte x, y WHERE x.pret < y.pret AND y.titlu = Baze de date AND y.autor = Popescu; b. SELEC x.titlu, x.pret T carte x, carte y FROM x.pret > y.pret y.titlu = Baze de date WHERE AND y.autor = Popescu; c. AND x.titlu, x.pret SELECT carte x, carte y FROM x.pret > y.pret WHERE titlu = Baze de date AND autor = Popescu; d. AND x.titlu, x.pret SELECT carte x, carte y FROM x.pret > y.pret WHERE y.titlu = Baze de date, y.autor = Popescu; 65. PentruAND tabelele PROFESORI(codp, nume, pren, salariu) COPII (codp, nume_c, virsta) care este secventa corecta pentru a afisa profesorii cu copii a. SELECT a.nume, a.pren FROM PROFESORI A WHERE a.codp IN (SELECT DISTINCT codp b. FROM COPII); SELECT a.nume, a.pren FROM PROFESORI A WHERE codp IN (SELECT codp FROM COPII);

c. SELECT a.nume, a.pren

FROM PROFESORI A WHERE a.codp IN COPII; d. SELECT a.nume, a.pren FROM PROFESORI A WHERE a.codp IN DISTINCT codp FROM COPII; 66. Pentru tabelele PROFESORI(codp, nume, pren, salariu) COPII (codp, nume_c, virsta) care este secventa corecta pentru a afisa profesorii fara copii a. SELECT a.nume, a.pren FROM PROFESORI A WHERE codp NOT IN (SELECT codp FROM COPII); b. SELECT a.nume, a.pren FROM PROFESORI A WHERE a.codp NOT IN (SELECT DISTINCT codp FROM c. COPII); SELECT a.nume, a.pren FROM PROFESORI A d. WHERE a.codp NOT IN SELECT codp FROM copii; SELECT a.nume, a.pren FROM PROFESORI A WHERE pentru IS NOT firme, DISTINCT tabele 67. Se considera a.codp actionarii unei(SELECT urmatoarele codpFROM COPII ACTIONARI(nume varchar2(20), cod_act number(5)) ACTIUNI (cod_act number(5), seriain number(8), seriasf number(8), valoar number(8)) (unde seriain si seriasf reprezinta seria de inceput, respectiv de sfarsit al intervalului de actiuni pe care il are un actionar). Care este secventa corecta care afiseaza pentru un actionar (introdus de la tastatura), intervalele seriilor actiunilor sale a. SELECT a.seriain, a.seriasf, b.nume FROM actiuni a, actionari b WHERE a.codact=b.codact AND b. b.nume=&x; SELECT a.seriain, a.seriasf, b.nume FROM actiuni , actionari c. WHERE a.codact=b.codact AND nume=&x; SELECT a.seriain, a.seriasf, b.nume FROM actiuni a, actionari b d. WHERE a.codact=b.codact ; SELECT a.seriain, a.seriasf, b.nume FROM actiuni a, actionari b WHERE pentru actionarii unei firme, tabelul 68. Se considera a.codact=b.codact OR b.nume=&x; ACTIUNI (cod_act number(5), seriain number(8), seriasf number(8), valoar number(8)) (unde seriain si seriasf reprezinta seria de inceput, respectiv de sfarsit al intervalului de actiuni pe care il are un actionar).

Care este secventa corecta care afiseaza suma necesara firmei pentru plata tuturor devidentelor (numrul de actiuni inmultit cu valoarea unei actiuni)? a. SELECT SUM((seriain+seriasf)*valoare)) FROM ACTIUNI; b. SELECT SUM((seriasf-seriasf)*valoare)) FROM ACTIUNI; c. SELECT SUM((seriain-seriasf)*valoare)) FROM ACTIUNI; d. SELECT SUM((seriasfseriain+1)*valoare)) FROM ACTIUNI; 69. Pentru tabeleleAngajat(cod_angajat, nume, pren, ..) Are_functia (cod_angajat, cod_functie, salariu ,..) Functii(cod_functie, ) care este comanda corecta pentru a calcula suma salariilor angajatului ENE ANA, care cumuleaza mai multe functii, in diferite compartimente? a. SELECT COUNT(SALARIU) AS SALARIU_CUMULAT FROM salariat, are_functia WHERE s.cod_salariat=a.cod_salariat AND NUME='ENE' AND PREN='ANA; b. SELECT Sum(SALARIU) AS SALARIU_CUMULAT FROM salariat, are_functia WHERE NUME='ENE' , PREN='ANA; c. SELECT Sum(SALARIU) AS SALARIU_CUMULAT FROM salariat s, are_functia a WHERE s.cod_salariat=a.cod_salariat AND NUME='ENE' AND PREN='ANA; 70. Pentru tabelele: PROF cod_prof# cod_fac nume pren salariu cod_funct FAC cod_fac# denumire adresa care este secventa corecta pentru o subinterogare corelata, care sa afiseze toate facultatile pentru care suma salariile profesorilor este mai mare 10000 a. SELECT DISTINCT DENUMIRE FROM FAC WHERE 10000< (SELECT sum(salariu) FROM PROF WHERE A.COD_FAC=B.COD_FAC); b. SELECT DISTINCT DENUMIRE FROM FAC A WHERE 10000< ( SELECT sum(salariu) FROM PROF B WHERE c. A.COD_FAC=B.COD_FAC); SELECT DISTINCT DENUMIRE FROM FAC A WHERE 10000< SELECT sum(salariu) FROM PROF B WHERE A.COD_FAC=B.COD_FAC; 71. Care este comanda corecta pentru a afisa toti salariatii , in ordine crescatoare dupa nume, care sunt manageri ? a. SELECT DISTINCT sef.nume, angajat.cod_manager FROM salariati sef, salariati angajat

WHERE sef.cod_salariat= angajat.cod_manager ORDER BY sef.nume; b. SELECT DISTINCT sef.nume, angajat.cod_manager FROM salariati sef, salariati angajat WHERE cod_salariat= cod_manager ORDER BY sef.nume; c. SELECT DISTINCT nume, cod_manager FROM salariati sef, salariati angajat WHERE sef.cod_salariat= angajat.cod_manager; d. ELECT DISTINCT nume, cod_manager FROM salariati sef, salariati angajat WHERE cod_salariat= cod_manager ORDER BY sef.nume; 72. Care este comanda corecta care sa afiseze daca exista angajati care nu lucreaza in departamentul Contractari si al caror salariu coincide cu salariul unui angajat din departamentul Contractari? a. SELECT nume, salariu, cod_depart FROM salariati WHERE salariu IN (SELECT salariu FROM salariati , department d WHERE s.cod_depart = d.cod_depart AND nume_depart Contractari) AND cod_depart= (SELECT cod_depart FROM department WHERE nume_depart = Contractari); b. SELECT nume, salariu, cod_depart FROM salariati WHERE salariu IS IN (SELECT salariu FROM salariati , department WHERE s.cod_depart = d.cod_depart , nume_depart = Contractari) AND cod_depart (SELECT cod_depart FROM department WHERE nume_depart = Contractari); c. SELECT nume, salariu, cod_depart FROM salariati WHERE (salariu) IN (SELECT salariu FROM salariati s, department d WHERE s.cod_depart = d.cod_depart AND nume_depart = Contractari) AND cod_depart (SELECT cod_depart FROM 73. Care estedepartment comanda corecta care afiseaza numarul total de carti imprumutate si restituite pentru fiecare citito al unei biblioteci? a. SELECT cod_cititor, COUNT() FROM imprumuta WHERE data_restituirii NOT NULL GROUP BY cod_cititor; b. SELECT cod_cititor, COUNT(*) FROM imprumuta WHERE data_restituirii IS NOT NULL; c. SELECT cod_cititor, COUNT(*) FROM imprumuta GROUP BY cod_cititor; d. SELECT cod_cititor, COUNT(*) FROM imprumuta WHERE data_restituirii IS NOT NULL GROUP BY cod_cititor;

74.

Care este comanda corecta care determina micsorarea salariilor cu 10%, cu rotunjire la 2 zecimale , a angajatilor care nu sunt titulari? a. UPDATE salariat SET salariu=ROUND(salariu*0.9, 2); b. UPDATE salariat SET salariu=ROUND(salariu*1.1) WHERE titular =N; c. UPDATE salariat SET salariu = ROUND(salariu*0.9, 2) WHERE TITULAR=N; d. UPDATE salariat SET salariu=ROUND(salariu+salariu*0.1) WHERE titular =Y; 75. Care este comanda corecta care afiseaza numele si salariul angajatilor condusi direct de ENE DAN? a. SELECT nume, salariu FROM salariati WHERE cod_ang = (SELECT cod_manager FROM salariati WHERE UPPER(nume) ='ENE' , UPPER(pren) ='DAN' ); SELECT nume, salariu b. FROM salariati WHERE cod_manager IN (SELECT cod_ang FROM salariati WHERE nume ='ENE' , pren ='DAN' ); c. SELECT nume, salariu FROM salariati (SELECT cod_ang FROM salariati WHERE UPPER(nume) ='ENE' AND UPPER(pren) ='DAN' ); d. SELECT nume, salariu FROM salariati WHERE cod_manager = (SELECT cod_ang FROM salariati WHERE UPPER(nume) ='ENE' AND UPPER(pren) ='DAN ); 76. Care este comanda corecta care afiseaza numele cititorilor care au carti nerestituite? a. SELECT nume_cititor FROM imprumuta WHERE data_restituirii = NULL; b. SELECT nume_cititor FROM imprumuta WHERE data_restituirii IS NOT NULL; c. SELECT nume_cititor FROM imprumuta WHERE data_restituirii IS NULL; d. SELECT nume_cititor FROM imprumuta WHERE data_restituirii > SYSDATE; 77. Care este comanda corecta care sterge valoarea coloanei salariu pentru angajatii care sunt angajati cu contract de colaborare? a. DELETE salariu FROM salariati WHERE contract=colaborare; b. UPDATE salariati

SET salariu IS null WHERE contract=colaborare; c. DROP salariu FROM salariati WHERE contract=colaborare; d. UPDATE salariati SET salariu=null WHERE contract=colaborare; 78. Care este comanda corecta care afiseaza codul departamentelor, numele departamentelor si suma salariilor pentru fiecare departament? a. SELECT cod_departament, nume_departament, SUM(salariu) FROM salariati s, departamente d GROUP BY cod_departament, nume_departament; b. SELECT cod_departament, nume_departament, SUM(salariu) FROM salariati s, departamente d WHERE s.cod_departament=d.cod_departament GROUP BY cod_departament; c. SELECT cod_departament, nume_departament, SUM(salariu) FROM salariati s, departamente d WHERE s.cod_departament=d.cod_departament GROUP BY cod_departament, nume_departament; d. SELECT cod_departament, nume_departament, SUM(salariu) FROM salariati, departamente WHERE s.cod_departament=d.cod_departament GROUP BY cod_departament, nume_departament; 79. Care este comanda corecta care afiseaza numele salariatilor care castiga mai mult decat salariul mediu pe companie, in ordine crescatoare a salariului? a. SELECT nume FROM salariati WHERE salariu >AVG(salariu); b. SELECT nume FROM salariati WHERE salariu > (SELECT AVG(salariu) FROM salariati) ORDER BY salariu; c. SELECT nume FROM salariati WHERE salariu > (SELECT AVG(salariu) FROM salariati ORDER BY salariu); d. SELECT nume FROM salariati WHERE salariu > (SELECT AVG(salariu) FROM salariati) ORDER BY 1; 80. Care este comanda corecta care afiseaza toate functiile pe care nu lucreaza angajati? a. SELECT cod_functie FROM functii WHERE cod_functie IN (SELECT cod_functie FROM salariati WHERE cod_functie IS NOT NULL); b. SELECT cod_functie FROM functii WHERE cod_functie NOT IN

(SELECT cod_functie FROM salariati WHERE cod_functie IS NULL); c. SELECT cod_functie FROM functii WHERE cod_functie NOT IN (SELECT cod_functie FROM salariati); d. SELECT cod_functie FROM functii WHERE cod_functie NOT IN (SELECT cod_functie FROM salariati WHERE cod_functie IS NOT NULL);

Intrebri i probleme la cursul de Baze de date, anul III, toate formele de nvmntPARTEA I. Concepte despre Bazele de date relaionale. Normalizare

Probleme1. S se normalizeze tabelul CURS_SUDENT Presupunem c tabela Curs_Student conine urmtoarele date: CURS_SUDENT NrMatricol NumeSt PrenumeSt Grupa Cursuri-Nota 458 Predescu Alexandru 114 engleza-7,germana-8 521 Radu George 122 desen-tehnic-10,franceza-7 627 Cristescu Lucian 243 programare-8,engleza-10 746 Irimia Diana 361 analiza numerica-9 782 Tanase Daciela 341 gernana-6,programare-10 982 Bunea Mihaela 114 rezistenta materialelor-8 1204 Dragnea Liviu 412 educatie fizica-10 S1520 Popa Marius 452 analiza numerica-7,engleza-9 Coloana Cursuri conine mult prea multa informaie. S presupunem c am nlocui coloana Cursuri cu dou noi coloane: CURS_SUDENTNrMatricol 458 521 627 746 782 982 1204 1520 NumeSt Predescu Radu Cristescu Irimia Tanase Bunea Dragnea Popa PrenumeSt Alexandru George Lucian Diana Daciela Mihaela Liviu Marius Grupa 114 122 243 361 341 114 412 452 Curs1 engleza desen tehnic programare analiza numerica germana rezistenta materialelor educatie fizica analiza numerica Nota1 7 10 8 9 6 8 10 7 Curs2 germana franceza engleza programare Nota2 8 7 10 10

engleza

9

1.1 S se aduc tabela CURS_SUDENT la FN1. Pentru aceasta s se creeeze tabelul CURS_SUDENT modificat corespunztor FN1. Amintim c o tabel este n prima form normal(FN1) dac valorile tuturor atributelor care o compun sunt atomice (indivizibile). n plus, nu trebuie s existe atribute sau grupuri de atribute repetitive. 1.2 S se aduc tabela CURS_SUDENT la FN2. Pentru aceasta s se creeeze tabelele CURS_SUDENT modificat corespunztor FN2 i tabelele SUDENT i CURS, rezultate n urma normalizrii la FN1.

Amintim c o tabel este n FN2, dac este n FN1 i fiecare atribut care nu face parte din cheia primar este dependent de ntreaga cheie primar. Pentru a obine o relaie FN2 se poate aplica regula Casey-Delobel. mulimea atributelor care intervin n dependenele funcionale; reprezint reuniunea determinantului cu restul atributelor lui A. . 1.3 Este tabela CURS_SUDENT realizat la 1.2 n FN3? (Justificai rspunsul) 2. S se aduc tabelul Profesor la FN3 i s se creeze tabela Titlu, rezultat n urma normalizrii PROFESOR IdProf 1 2 3 4 5 6 7 Nume Popescu Marin Dragnea Ion Iosif Irina Ilie Daniel Savu Cristina Cristea George Ene Horia Catedra Matematici Limbi straine Educatie fizica Informatica Limbi straine Fizica Informatica IdTitlu 1 4 3 2 5 6 1 Titlu lector dr. asistent lector conferentiar dr. prepartor profesor dr. lector dr. Salariu 1300 950 1100 1700 680 2150 1300

Amintim c o tabel este n FN3 dac este n FN2 i toate coloanele care nu fac parte din cheia primar sunt mutual independente (depind direct de cheia primar i numai de ea) 3. Tabelele Profesor i Titlu sunt n relaia 1:m (un Titlu corespunde la mai multe cadre didactice). Tabele de mai sus pstreaz regulile de integritate?

Amintim ca regulile de integritate sunt; - unicitatea cheii primare - integritatea entitii valorile cheii primare sa fie diferite de valoarea null(o valoare necunoscuta sau lipsete) - integritatea referenial ) o cheie secundar trebuie s fie null n ntregime sau s corespund unei valori a cheii primare asociate.(in tabela asociat nu trebuie s existe valori fr corespondent).

4. S se determine anomaliile pentru tabelul Avion (Redundan logic, Anomalie la inserie, Anomalie la tergere i Anomalie la modificare). Avion A# 1 2 3 4 5 6 nume AIRBUS AIRBUS AIRBUS CAR B707 B707 capacitate 250 250 250 100 150 150 localitate PARIS PARIS LONDRA PARIS LONDRA LONDRA

Constrngere: toate avioanele cu acelai nume au aceeai capacitate. 5. S se implementeze FN1 pentru tabelul MASINA:

Persoana Eu Tu El noi

Vehicul R25 - W14 - R21 205 R5 - 305 BX - 305 - R12 - R25

6. S se aduc la FN2 tabelul ATASAT_LA, prin spargerea lui n 2 tabele ATASAT_LA _2A i ATASAT_LA_ 2B ATASAT_LACOD_SALARIAT# S1 S1 S1 S3 S5 JOB_COD PROGRAMATOR PROGRAMATOR PROGRAMATOR VANZATOR INGINER NR_PROIECT# P1 P2 P3 P3 P3 FUNCTIA SUPERVIZOR CERCETATOR AUXILIAR SUPERVIZOR SUPERVIZOR SUM A 60 25 10 60 60

7. Tabelul ATASAT_LA _2A rezultat de la 6. s se aduc la FN3, realiznd tabelele ATASAT_LA _3A i ATASAT_LA _3B

8. Presupunem c un antier poate executa mai multe lucrri de baz i c o lucrare poate fi executat de mai multe antiere. Pentru relaia EXECUTA s se specifice dependenele, realiznd relaia EXECUTA_1! Avem relaiile urmtoare LUCRARE(cod_obiectiv#, cod_lucrare#, nume); SANTIER(nr_santier#, specialitate, sef); EXECUTA(cod_obiectiv#, cod_lucrare#, nr_santier#, conducator, data_inceput, data_sfarsit).

descriere,

functie,

9.S se aduc relaia EXECUTA_1 rezultat de la 8, n FN3 cu regula CaseyDelobel! 10. S se aduc la forma BCNF (Forma normal Boyce-Codd ) INVESTESTE_IN(cod_contractant#, cod_obiectiv#, nr_contract, cota_parte), realizand INVESTESTE_IN _1 i INVESTESTE_IN_2. (Formal, o relaie R este n forma normal Boyce-Codd dac i numai dac pentru orice dependen funcional total X A, X este o cheie (candidat) a lui R.)

IntrebriAlegei rspunsurile corecte pentru fiecare din urmtoarele ntrebri cu rspunsuri multiple. ntrebrile pot avea mai multe rspunsuri corecte. 1. SQL este a. Un limbaj realizat de Dr. E. F. Codd b. Un limbaj folosit pentru comunicarea cu bazele de date relaionale c. Un limbaj folosit pentru definirea diagramelor ERD d. Folosit pentru definirea i modificarea obiectelor unei baze de date e. Folosit pentru definirea paginilor web

2. O baz de date este a. O structur denumit de date, cum ar fi un tabel, o vizualizare sau un index b. Un produs software furnizat de un productor de baze de date c. O colecie de date interrelaionate gestionate ca o singur unitate d. Definit n acelai mod de toi productorii de software e. Implementat diferit de diferii productori 3. Un sistem de gestionare a bazelor de date este a. O structur, cum ar fi un tabel, o vizualizare sau un index b. O colecie de date interrelaionate gestionate ca o singur unitate c. Un produs software furnizat de un productor de baze de date d. Deseori abreviat sub forma DBMS e. O structur denumit de date, cum ar fi un tabel, o vizualizare sau un index 4. Exemple de sisteme RDBMS sunt a. EXCEL b. MySQL c. PostgreSQL d. Oracle Database e. Microsoft SQL Server 5. Componentele unei baze de date relaionale includ a. Relaii b. Tabele c. Vizualizri de utilizator d. Diagrame ERD e. Restricii

6. Printre tipurile de restricii care pot fi folosite n bazele de date se numr a. NOTNULL b. Relaie c. Cheie primar d. CHECK e. Unicitate 7. Scopul normalizrii este de a rezolva urmtoarele probleme a. Anomalia de inserare b. Performante reduse c. Anomalia de creare d. Anomalia de tergere e. Anomalia de actualizare 8. Procesul de normalizare a. ncepe de la tabele, pentru a ajuta proiectanii s descopere vizualizrile de utilizator b. A fost dezvoltat de Dr. E. F. Codd c. A fost dezvoltat de Oracle d. Este aplicat sistematic fiecrei vizualizri de utilizator 9. Un identificator unic(cheie) a. Trebuie determinat naitea procesului de normalizare b. Poate fi compus dintr-un singur atribut c. Poate fi compus din zero sau mai multe atribute d. Poate fi compus din mai multe atribute concatenate 10. Prima form normal rezolv anomaliile cauzate de a. Dependenele pariale de cheia primar

b. Grupurile repetitive c. Dependenele tranzitive d. Atributele multivaloare e. Relaiile de tip unu-la-mai-muli 11. A doua form normal rezolv anomaliile cauzate de a. Dependenele pariale de cheia primar b. Grupurile repetitive c. Dependenele tranzitive d. Atributele muli valoare e. Relaiile de tip unu-la-mai-muli 12. A treia form normal rezolv anomaliile cauzate de a. Dependenele pariale de cheia primar b. Grupurile repetitive c. Dependenele tranzitive d. Atributele multivaloare e. Relaiile de tip unu-la-mai-muli 13. Pentru aducerea n prima form normal a unei relaii ne-normalizate a. Atributele care depind doar de o parte a cheii sunt eliminate b. Atributele multivaloare sunt mutate ntr-o nou relaie c. Atributele care sunt dependente tranzitiv sunt eliminate d. Grupurile repetitive sunt mutate ntr-o nou relaie e. Identificatorul unic al relaiei originale este copiat n noua relaie 14. Problemele de dependen parial a. Sunt rezolvate de FN2 b. Sunt rezolvate de FN3

c. Pot aprea n relaiile cu chei primare concatenate d. Apar cand un atribut non-cheie depinde doar de o parte a cheii primare e. Apar cand un atribut non-cheie depinde de un alt atribut non-cheie

Partea a_II_a Access 1. 1.Deschideti o aplicatie de baze de date. 2.Creati o baza de date noua in diirectorul My Documents. 3.Creati o tabela cu urmatoarele campuri: Cod_valuta Valuta Curs Number Currency Number

4.In tabela create, stabiliti Cod_valuta ca fiind cheie primara. 5.Creati un formulat nou. 6.Cu ajutorul formularului introduceti urmatoarele 5 inregistrari in tabela: 2 3 1 5 4 euro dolar franc lira35.000 33.000

7.Creati un filtru de tipul Filter By Selection pentru tabela create. 8.Deschideti tabela create. 9.Mutati atributul 3 inaintea atributului 1 10.Salvati datele si deschideti aplicatia de baze de date.

2.1.Deschideti baza de date 1.mdb. 2.Utilizati instrumentul de cautare, pentru a gasi in tabela Profesor inregistrarea cu numele Maria. 3.In aceasta inregisrare modificati numele in Alina. 4.Creati o interogare asupra tabelei Profesor, in care afisati toate atributele pentru profesorii cu o vechime mai mare de 15 ani. 5.Rulati interogarea creata. 6.Creati o interogare asupra tabelei Universitate in care afisati doar campurile 1 si 3. 7.Stabiliti atributul Nr_profesori din tabela Catedra ca fiind indexat fara duplicate. 8.Creati un raport asupra tabelei Profesori.

9.Grupati datele din raport dupa atributul Vechime. 10. Salvati modificarile facute si inchideti aplicatia de baze de date . 3. 1.Deschideti o aplicatie de baze de date. 2.Creati o baza de date noua in directorul My Documents. 3.Creati o tabela cu urmatoarele campuri: A B Number (cheie primara) Text

4.Creati o tabela cu urmatoarele campuri: A E Number Date

5.Craeti o legatura intre tabele prin intermediul campului A . 6.Stabiliti atributul E ca fiind indexat fara duplicate. 7.Ctreati un filtr de tipul Filter By Selection pentru prima tabela. 8.Creati o interogare asupra tabelei 2 in care afisati doar canpul 2. 9.Modificati orientarea paginii. 10. Salvati toate datele si inchideti aplicatia de baze de date. 1.Deschideti baza de date 3.mdb. 2.Stergeti tabela Informatii, din baza de date. 3.Deschideti tabela Casete si modificati dimensiunea atributului Nume_film la 100. 4.Deschideti un formular existent. 5.Cu ajutorul formei selectati inregisrarea 3 si modificati Nr_casete la 10. 6.Utilizati comanda Undo pentru a reface operatia anterioara. 7.Modificati lungimea unei coloane in tabela Casete. 8.Utilizati instrumentul de cautare, pentru a gasi intregistrarea cu valoarea Richard Gere pentru atributul Actor. 9.Stergeti aceasta inregistrare. 10. Inchideti aplicatia de baze de date.

4.1.Deschideti aplicatia de baze de date. 2.Creati o baza de date noua in direcctorul My Documents. Salvati-o cu numele dumneavoastra. 3.Creati o tabela cu urmatoarele campuri: Inregistrare 1 Number-Long Integer

Inregistrare 2 Inregistrare 3

Text- dimensiune 50 Currency

4.Salvati tabela cu numele Numere. 5.Creati un formular nou asupra tabelei Numere. 6.Salvati formularul cu denumirea Formular Numere. 7.Introduceti 2 inregistrari in tabela Numere. cu ajutorul formei create.Inregistrare 1 100 300

Inregistrare 2 Prima valoare A doua valoare

Inregistrare 3 31 32

8.Utilizati instrum,entul de cautare, pentrua gasi inregistrarea in care campul Inregisrare 3 ia valoare 31. 9.Modificati Prima valoare cu Prima_Valoare. 10.Salvati modificarile facute si inchideti aplicatia de baze de date.

1.Deschideti baza de date cu 4.mdb. 2.Adaugati atributul Adresa_firma tabelei Comenzi. 3.Stergeti tabela Informatii din baza de date. 4.Modificati tipul coloanei Nume_produs in tabela Produs. 5.Creati o interogare asupra tabelei Produs, in caer afisati doar campurile ce au unitatea de masura litrii 6.Creati un raport asupra tabelei Produs. 7.Introduceti in antetul raportului o imagine. 8.Mutati imaginea in partea stanga a antetului. 9.Salvati raportul cu denumirea Raport_Produs. 10.Salvati modificarile facute si inchideti aplicatia de baze de date.

5.1.Deschideti aplicatia de baze de date. 2.Craeti o baza de date noua cu nmele baza de date pe C:/ 3.In baza de date nou create , construiti o tabela cu urmatorele atribute : Tara Data_curenta Nume_firma Cheie_primara Text-dimensiune 20 Date/Time- Short Date Texe-dimensiune 30 Autonumber

4.Stabiliti atributul Data_curenta ca find indexat cu dupliacte. 5.Mutati atributul Cheie_primara astfel incat sa devina primul atribut din tabela.

6.Creati o regula de validare pentru atributul Cheie_primara, astfel incat sa nu primesca valori mai mari de 256. 7.Introduceti in tabela creata 5 inregistrari. 8.Imprimati toate inregistrarile din tabela. 10.Inchideti aplicatia de baze de date. 1.Deschideti baze de date 5.mdb. 2.Creati un filtru de tipul Filter By Selection pentru tabela Carte. 3.Sortarti datele din tabela Autor in ordine alfabetica dupa numele autorului. 4.Aplicati filtrul creat asupra tabelei Carte. 5.Creati un formular pentru tabela Autor. 6.Cu ajutorul formularului selectati inregistrarea 2 si modificati numele autorului. 7.Stergeti inregisrarea cu nr 1 din tabela. 8.Creati un raport asupra tabelei Carte. 9.Modificati dimensiunea paginii din A4 in Letter. 10.Salvati modificarile facute si inchideti aplicatia de baze de date.

6.1.Deschideti aplicatia de baze de date. 2.Creati o baza de date noua si salvati-o in directorul My Documents. 3.Utilizati functia Help pentru a cauta informatii despre tabele. 4.Creati o tabela noua si denumiti-o Informatii. 5.Introduce-ti in tabela 3 atribute. 6.In tabela creata stabiliti primul camp ca fiind cheie primara. 7.Creati un raport asupra acestei tabele. 8.Grupati datele din raport in functie de al doilea atribut. 9.Salvati raportul cu numele Raport. 10.Inchideti baza de date creata. 1.Deschideti aplicatia de baze de date. 2.Deschideti baza de date 6.mdb. 3.Stergeti tabela Campuri din baza de date. 4.Modificati lungimea unei coloane in tabela Autor. 5.Creati un formular pentru tabela Autor. 6.Adaugati numele dumneavoastra in antetul formularului creat. 7.Creati o interogare cu date din tabelele Autor si Carte. 8.Salvati interogarea cu numele Query. 9.Rulati interogarea creata. 10.Salvati modificarile facute si inchideti aplicatia de baze de date.

7.1.Deschideti aplicatia de baze de date. 2.Creati o baza de date noua datele dumneavoastra pe directorul C :

3.Afisati pe ecran bara de instrumente WEB. 4.Creati o tabela cu urmatoarele atribute : COD NUME SUMA Numeric Byte Text dimensiune 15 caractere Currency Euro

5.Creati o noua tabela cu urmatoarele atribute : Nr_Crt Cod Firma Adresa Autonumber Numeric Byte Text dimensiune 20 Text dimensiune 25

6.Stabiliti in prima tabela ca cheie primara COD. 7.Creati o legatura intre cele doua tabele dupa campul COD 8.Salvati modificarile facute 9.Mutati in tabela 2 campul Firma dupa campul Adresa 10.Inchideti aplicatia de baze de date 1.Deschideti o aplicatie de baze de date 2.Deschideti baza de date 7.mdb 3.Modificati lungimea unei coloane in tabela Catedra 4.Cautati inregistrarea cu nr 3 si modificati cod profesor ca fiind egal cu 10 5.Creati o interogare cu date din tabelele Catedra si Profesor. 6.Sortati datele din tabela Profesor in ordine alfabetica dupa Nume_profesor 7.Creati un raport asupra tabelei Universitate. 8.Modificati orientarea paginii. 9.Imprimati toate datele obtinute in raportul anterior creat 10.Salvati toate modificarile facute si inchideti baza de date.

8.1.Deschideti o aplicatie de baze de date 2.Creati o baza de date noua in directorul C : 3.Creati o tabela in care introduceti 5 campuri.Dintre acestea 2 vor fi de tip Text,2 vor fi numerice si 1 de tip data calendaristica 4.Creati un formular nou asupra tabelei create anterior. 5.Cu ajutorul noului formular introduceti in tabela 5 inregistrari 6.Adaugati numele dumneavoastra in antetul formei. 7.Creati o interogare care sa contina numai campurile 1 si 2 8.Rulati interogarea creata. 9.Imprimati doar inregistrarile selectate din tabela creata 10.Salvati toate datele si inchideti aplicatia de baze de date 1.Deschideti baza de date 8.mdb

2.Deschideti tabela Masini si introduceti urmatorul atribut Nume. 3.Stergeti legatura dintre tabelele Masini si Masini Disponibile 4.Sortati datele din tabela Masini, in ordine crescatoare dupa atributul Masini_disponibile 5.Creati un raport asupra tabelei Masini 6.Introduceti in subsolul raportului numele dvs. 7.Grupati datele din raport dupa atributul Masini_disponibile 8.Modificati dimensiunea paginii din A4 in Letter 9.Imprimati raportul la o imprimanta disponibila 10.Salvati modificarile facute si inchideti apllicatia de baze de date.

9.1. Deschideti o aplicatie de baze de date. 2. Creati o baza de date noua in directorul My Documents. 3. Creati o tabela cu urmatoarele campuri: Numar_intrare Data_intrare Cantitate_intrata Denumire_produs Number Date Number Text

4. In tabela create stabiliti atributul Numar_Intrare ca fiind cheie primara. 5. Creati un formular nou. 6. Cu ajutorul formularului introduceti 5 inregistrari in tabela. 7. Creati un filtru de tipul Filter Exculding Selection. 8. Deschideti tabela creata in Desing View. 9. Mutati atributul 3 inaintea atributului 1. 10. Salvati datele si inchideti aplicatia de baze de date. 1. Deschideti baza de date 9.mdb. 2. Utilizati instrumentul de cautare, pentru a gasi inregistrarea cu valoarea 2 pentru atributul Cod_caseta din tabela Casete. 3. In aceasta inregistrare modificati numele filmului ca fiind Film5. 4. Creati o interogare asupra tabelei Casete in care afisati doar campurile 1,3,5. 5. Rulati interogarea creata. 6. Creati o interogare asupra tabelei Casete, in care afisati doar campurile pentru care atributul Tip_film are valoarea Actiune. 7. Stabiliti atributul Nume_film ca fiind indexat cu duplicate. 8. Creati un raport asupra tabelei Casete. 9. Grupati datele din raport dupa atributul Cod_imprumut. 10. Salvati modificarile facute si inchideti aplicatiile de baze de date.

10.1. Deschideti o aplicatie de baze de date. 2. Creati o baza de date noua in directorul My Documents.

3. Creati o tabela denumita Elevi ce va contine urmatoarele campuri: Nume_elevi Data_nasterii Varsta Nr_scoala Text Date Number - Integer Number - Integer

4. Creati o tabela denumita Clasa ce va contine urmatoarele campuri : Nume Clasa Medie Nr_scoala 5. 6. 7. 8. Text Number Number Number - Integer

Creati o legatura intre tabela Elevi si tabela Clasa. stabiliti atributul Nr_scoala ca fiind indexat fara duplicate. Creati un filtru de tipul Filter By Form pentru tabela Elevi. Creati o interogare asupra ambelor tabele in care afisati campurile Nume_elevi, Varsta, Clasa, Media. 9. modificati orientarea paginii. 10. Salvati toate datele si inchideti aplicatia de baze de date.

Deschideti baza de date 10.mdb. Adaugati urmatorul atribut Numar_telefon tabelei Autor. Stergeti tabela Campuri din baza de date. Modificati lungimea coloanei Nume in tabela Autor la 100 de caractere. Creati o interogare asupra tabelei Carte, in care afisati doar cartile ce au codul mai mare de 100. 6. Creati un raport asupra tabelei Autor. 7. Introduceti in antetul raportului o imagine. 8. Mutati imaginea in partea stanga a antetului. 9. Salvati raportul cu denumirea Raport autor. 10. Salvati modificarile facute si inchideti aplicatia de baze de date.

1. 2. 3. 4. 5.

11.1. Deschideti aplicatia de baze de date. 2. creati o baza de date noua si salvati-o in directorul My Documents. 3. Utilizati functia Help pentru a cauta informatii despre tabele. 4. Creati o tabela noua si denumiti-o Informatii. 5. Introduceti in tabela 3 atribute. 6. in tabela creata, stabiliti primul camp ca fiind cheie primara. 7. Creati un raport asupra acestei tabele. 8. Grupati datele din raport in functie de al doilea atribut. 9. Salvati raportul cu numele de Raport. 10. Inchideti baza de date creata.

1. Deschideti baza de date 11.mdb. 2. Stergeti tabela Informatii din baza da date. 3. Deschideti tabela Produs si modificati dimensiunea atributului Cantitate. 4. Deschideti formularul Produs. 5. Cu ajutorul formularului selectati inregistrarea 3 si modificati Cantitatea la 250. 6. Utilizati comanda Undo pentru a reface operatia anterioara. 7. Modificati lungimea unei coloane in tabela Comenzi. 8. Utilizati instrumental de cautare, pentru a gasi inregistrarea cu Cod_produs 4. 9. Stergeti aceasta inregistrare. 10. Inchideti aplicatia de baze de date.

12.1. Deschideti aplicatia de baze de date. 2. Creati o baza de date noua in directorul My Documents. Salvati-o cu numele dumneavoastra. 3. Creati o tabela cu urmatoarele campuri: CNP Nume Data Number Double Text dimensiune 50 Date/Time Medium Date

4. Salvati tabela cu numele Persoana. 5. Creati un formular nou asupra tabelei Persoana. 6. Salvati formularul cu denumirea Formular Persoana. 7. Introduceti doua inregistrari in tabela Persoana, cu ajutorul formei create. CNP 102 98 Alina Maria Nume Data 19-Jun-94 18-Feb-2002

8.Utilizati instrumental de cautare, pentru a gasi inregistrarea cu CNP-ul 102. 9. Modificati numele persoanei in Andrei. 10. Salvati modificarile facute si inchideti aplicatia de baze de date. 1. 2. 3. 4. 5. 6. 7. 8. 9. Deschideti baza de date 12.mdb. Adaugati urmatorul atribut Adresa_mail tabelei Profesor. Stergeti tabela De sters din baza de date. Modificati lungimea unei coloane in tabela Profesor. Creati o interogare asupra tabelei Universitate, in care afisati doar campurile care au valoarea atributului Cod_Catedra mai mare decat 100. Creati un raport asupra tabelei Universitate. Introduceti in antetul raportului o imagine. Mutati imaginea in partea stanga a antetului. Salvati raportul cu denumirea Universitate.

10. Salvati modificarile facute si inchideti aplicatia de baze de date.

13.1. Deschideti aplicatia de baze de date. 2. Creati o baza de date noua cu numele baza de date pe C:\ 3. In baza de date noua creata, construiti o tabela cu urmatoarele atribute : Oras Text dimensiune 20 Data examinarii Date/Time Short Date Text dimensiune 30 Nume Centru Numar curent Autonumber 4. Stabiliti atributul Nume Centru ca fiind indexat cu duplicate. 5. Mutati atributul Numar Curent, astfel incat sa devina primul atribut din tabela. 6. Creati o regula de validare pentru atributul Numar Curent, astfel incat sa nu primeasca valori mai mari de 256. 7. Introduceti in tabela creata 5 inregistrari. 8. Imprimati toate inregistrarile din tabela. 9. Salvati toate datele. 10. Inchideti aplicatia de baze de date. 1. 2. 3. 4. 5. 6. 7. Deschideti aplicatia de baze de date. Deschideti baza de date 13.mdb. Stergeti tabela Informatii din baza de date. Modificati tipul atributului Cantitate, din tabela Produs, din Text in Number. Deschideti formularul Produs. Adaugati numele dumneavoastra in antetul formulaului Produs. Creati o interogare cu date in tabelele Produs si Comenzi in care sa afisati din tabela Produs campurile Nume_produs si Unitate_de_masura, iar din tabela Comenzi campurile Nume_firma si Cantitate_ceruta, pentru acele inregistrari pentru care cod_produs din tabela Produs este egal cu cod_produs din tabela Comenzi.

14.1. Deschideti aplicatia de baza de date. 2. Creati o baza de date noua si salvati-o in directorul My Documents. 3. Utilizati functia Help pentru a cauta informatii despre tabele. 4. Creati o tabela noua si denumiti-o Informatii. 5. Introduceti in tabele 3 atribute . 6. In tabela creata stabiliti primul camp ca fiind cheie primara . 7. Creati un raport asupra acestei tabele . 8. Grupati datele din raport in functie de al 2-lea atribut . 9. Salvati raportul cu numele Raport. 10. Inchideti baza de date creata . 1. Deschideti baza de date 14.mdb. 2. Deschideti tabela Casete Data_imprumut de tip Date .

imprumutate

si

introduceti

atributul

3. Stergeti legatura dintre tabelele Casete si Casete imprumutate. 4. Sortati datele din tabela Casete in ordine descrescatoare dupa atributul Actor. 5. Creati un raport asupra tabelei Casete . 6. Introduceti in antetul raportului , numele dumneavoastra si data curenta . 7. Grupati datele din raport dupa atributul Tip_film . 8. Modificati dimensiunea paginii din Letter in A4 . 9. Imprimati raportul la o imprimanta disponibila . 10. Salvati modificarile facute si inchideti aplicatia de baza de date .

15.1. 2. 3. 4. Deschideti aplicatia de baza de date . Creati o baza de date noua cu numele dumneavoastra pe directorul C: Afisati pe ecran bara de instrumente Database . Creati o tabela cu urmatoarele atribute : Numeric Byte Text dimensiune 15 caractere Currency tip Euro

Atribut 1 Atribut 2 Atribut 3

5. Creati o noua tabela cu urmatoarele atribute : Atribut 1 Atribut 4 Atribut 5 Numeric Byte Text dimensiune 20 caractere Text dimensiune 25 caractere

6. Stabiliti in prima tabela ca cheie primara Atribut 1 . 7. Creati o legatura intre cele doua tabele dupa campul Atribut 1. 8. Salvati modificarile facute . 9. Mutati in tabela 2 campul Atribut 5 inaintea campului Atribut 4 . 10.Inchidetai aplicatia de baza de date . 1. Deschideti baza de date 15.mdb. 2. Utilizati instrumentul de cautare , pentru a gasi in tabela Profesor inregistrarea cu numele Maria . 3. In aceasta inregistrare modificati numele in Andreea . 4. Creati o interogare asupra tabelei Profesor , in care afisati toate atributele pentru profesorii cu o vechime mai mare de 15 ani . 5. Rulati interogarea creata . 6. Creati o interogare aspura tabelei Universitatea in care afisati doar campurile 1 si 3 . 7. Stabiliti atributul Nr_profesori din tabela Catedra ca fiind indexat fara duplicitate . 8. Creati un raport asupra tabelei Profesori . 9. Grupati datele din raport dupa atributul Vechime . 10.Salvati modificarile facute si inchideti aplicatia de baza de date .

16.1. Deschideti o aplicatie de baze de date . 2. Creati o baza de date noua in directorul My Documents . 3. Creati o tabela cu urmatoarele campuri : A B Number (Cheie primara) Text

4. Creati o tabela cu urmatoarele campuri : A E Number Date

5. Creati o legatura intre tabelele prin intermediul campului A . 6. Stabiliti atributul E ca fiind indexat fara duplicitate . 7. Creati un filtru de tipul Filter By Selection pentru prima tabela . 8. Creati o interogare asupra tabelei 2 in care afisati doar campul 2. 9. Modificati orientarea paginii . 10.Salvati toate datele si inchideti aplicatia de baze de date . 1. 2. 3. 4. 5. Deschideti baza de date 16.mdb . Adaugati atributul Adresa_firma tabelei Comenzi . Stergeti tabela Informatii din baza de date . Modificati tipul coloanei Nume_produs din tabela Produs . Creati o interogare asupra tabelei Produs , in care afisati doar campurile ce au unitatea de masura "litri" . 6. Creati un rapot asupra tabelei Produs . 7. Introduceti in antetul raportului o imagine . 8. Mutati imaginea in partea stanga a antetului . 9. Salvati raportul cu denumirea Raport_produs . 10.Salvati modificarile facute si inchideti baza de date .

17.1. Deschideti o aplicatie de baza de date . 2. Creati o baza de date noua in directorul C : 3. Creati o tabela in care introduceti 5 campuri . Dintre acestea doua vor fi de tip Text ,doua vor fi numerice si unul de tip data calendaristica . 4. Creati un formular nou asupra tabelei create anterior . 5. Cu ajutorul noului formular introduceti in tabela 5 inregistrari . 6. Adaugati numele dumneavoastra in antetul formei . 7. Creati o interogare care sa contina numai campurile 1 si 2 . 8. Rulati interogarea creata . 9. Imprimati doar inregistrarile selectate din tabela creata . 10.Salvati toate datele si inchideti aplicatia de baza de date .

1. Deschideti baza de date 17.mdb 2. Stergeti tabela Date din baza de date . 3. Deschideti tabela Casete imprumutate si modificati tipul atributului Nr_casete_imprumutate ca fiind Integer . 4. Deschideti un formular existent . 5. Cu ajutorul formei selectati intregistrarea 4 si modificati Nr_casete la 15 . 6. Utilizati comanda Undo pentru a reface operatia anterioara . 7. Modificati lungimea unei colane din tabela Produs . 8. Utilizati instrumentul de cautare , pentru a gasi inregistrarea cu valoare Desene animate pentru atributul Tip_film . 9. Stergeti aceasta inregistrare . 10.Inchideti aplicatia de baza de date .

18.1. Deschideti aplicatia de baze de date . 2. Creati o baza de date noua in directorul My Documents . Salvati-o cu numele dumneavoastra . 3. Creati o tabela cu urmatoarele campuri : CNP Nume Data 4. 5. 6. 7. Number Double Text dimensiune 50 Date/Time Medium Date

Salvati tabela cu numele Persoana . Creati un formular nou asupra tabelei Persoana . Salvati formularul cu denumirea Formular Persoana . Introduceti doua inregistrari in tabela Persoana cu ajutorul formei create . CNP 102 98 Nume Alina Maria Data 19-Jun-94 18-Feb-2002

8. Utilizati instrumentul de cautare pentru a gasi inregistrarea cu CNP-ul 102 . 9. Modificati numele persoanei in Mihai . 10.Salvati modificarile facute si inchideti baza de date . 1. Deschideti aplicatia de baze de date . 2. Deschideti baza de date 22.mdb . 3. Stergeti tabela Campuri din baza de date 4. Modificati lungimea unei coloane in tabela Autor . 5. Creati un formular pentru tabela Autor . 6. Adaugati numele dumneavoastra in antetul formularului creat . 7. Creati o interogare cu date din tabelele Autor si Carte . 8. Salvati interogarea cu numele Query . 9. Rulati interogarea creata . 10.Salvati modificarile facute si inchideti aplicatie de baze de date .

19.1. Deschideti aplicatia de baze de date . 2. Creati o baza de date noua cu numele baza de date pe C:\ 3. In baza de date nou creata construiti o tabela cu urmatoarele atributre : Oras Data examinarii Nume centru Numar curent Text dimensiune 20 Date/Time Short Date Text dimensiune 30 Autonumber

4. Mutati atributul Numar Curent astfel incat sa devina primul atribut din tabela . 5. Atasati atributului Oras optiunea Indexed with Duplicates . 6. Creati o regula de validare pentru atributul Numar Curent , astfel incat sa nu primeasca valori mai mari de 256 . 7. Introduceti in tabela creata 5 inregistrari . 8. Imprimati toate inregistrarile din tabela . 9. Salvati toate datele . 10.Inchideti aplicatia de baze de date . 1. Deschideti o aplicatie de baze de date . 2. Deschideti baza de date 19.mdb . 3. Modificati lungimea unei coloane in tabela Catedra . 4. Cautati inregistrarea cu nr. 3 si modificati cod profesor ca fiind egal cu 10. 5. Creati o interogare cu date din tabelele Catedra si Profesor 6. Sortati datele din tabela Profesor in ordine alfabetica dupa Nume_profesor 7. Creati un raport asupra tabelei Universitate 8. Modificati orientarea paginii 9. Imprimati toate datele obtinute in raporturi ulterior creat 10. Salvati toate modificarile facute si inchideti baza de date

20.1. Deschideti aplicatia de baze de date 2. Creati o baza de date noua cu numele dumneavoastra pe C:/ 3. In baza de date nou creata construiti o tabela cu urmatoarele atribute Nume_depozit Data_curenta Nume_material Cod_curent Text-dimensiune 20 Date/Time- Short Date Text- dimensiune 30 Autonumber

4. Stabiliti atributul Data_curenta ca fiind indexat dublicate 5. Mutati atributul Cod_curent astfel incat sa devina primul atribut din tabela 6. Creati o regula de validare pentru atributul Cod_curent, astfel incat sa nu primeasca valori mai mari de 256 7. Introduceti in tabela creata 5 inregistrari

8. Imprimati toate inregistrarile din tabela 9. Salvati toate datele 10. Inchideti aplicatia de baze de date 1. Deschideti baza de date 20.mdb. 2. Utilizati instrumentul de cautare pentru a gasi inregistrarea cu valoarea 2 pentru atributul Cod_caseta din tabela Casetei 3. In aceasta inregistrare modificati numele filmului ca fiind Film interesant 4. Creati o interogare asupra tabelei Casete in care afisati doar campurile 2 si 4 5. Rulati interogarea creata 6. Creati o interogare asupra tabelei Casete, in care afisati doar campurile pentru care atributul Tip_film are valoarea Actiune 7. Stabiliti atributul Nume_film ca fiind indexat cu duplicate 8. Creati un raport asupra tabelei Casete 9. Grupati datele din raport dupa atributul Cod_imprumut 10. Salvati modificarile facute si inchideti aplicatia de baze de date

Partea a_III_a SQLntrebri i ProblemeAlegei rspunsurile corecte pentru fiecare din urmtoarele ntrebri cu rspunsuri multiple. ntrebrile pot avea mai multe rspunsuri corecte. 1. SQL este a. Un limbaj orientat spre obiecte b. Un limbaj procedural c. Un limbaj nonprocedural d. Un limbaj declarativ e. Un limbaj standard 2. ntr-un aranjament client/server a. Componentele software DBMS ruleaza pe server b. Componentele software DBMS ruleaza pe client c. Componentele software ale clientului SQL ruleaza pe client d. Componentele software ale clientului SQL ruleaza pe server 3. Un client SQL in linia de comanda a. Necesita un sistem bazat pe ferestre b. Ruleaza pe o mare varietate de platforme client. c. Necesita un browser web pe client. d. Afieaz datele i opiunile de comand folosind caracteristici grafice e. Afieaz rspunsurile la comenzi sub form de mesaje de tip text

4. Un client SQL cu interfata grafica (GUI) a. Necesita un sistem bazat pe ferestre b. Ruleaza pe o mare varietate de platforme client. c. Necesita un browser web pe client. d. Afieaz datele i opiunile de comand folosind caracteristici grafice e. Afieaz rspunsurile la comenzi sub form de mesaje de tip text 5. Un client SQL bazat pe web a. Necesita un sistem bazat pe ferestre b. Ruleaza pe o mare varietate de platforme client. c. Necesita un browser web pe client. d. Afieaz datele i opiunile de comand folosind caracteristici grafice e. Afieaz rspunsurile la comenzi sub form de mesaje de tip text 6. Clienii SQL oferii de Oracle sunt a. iSQL b. Query Analyzer c. iSQL*Plus d. SQL*Plus e. SQLWorksheet 7. Clienii SQL oferii de Microsoft sunt a. iSQL b. Query Analyzer c. iSQL*Plus d. SQL*Plus e. SQLWorksheet 8. Extensiile SQL create de furnizori a. Cresc portabilitatea codului SQL b. Scad portabilitatea codului SQL c. Contribuie la diferenierea produselor oferire de diferii productori d. Au fost bazate pe cererile pieei e. Sunt compatibile ntre implementrile diferiilor productori 9. Instruciunile SQL a. ncep cu un cuvnt cheie reprezentnd o comand b. Se termin cu un cuvnt cheie reprezentnd o comand c. ncep cu un delimitator, cum ar fi caracterul punct i virgul d. Se termin un delimitator, cum ar fi caracterul punct i virgul e. ncep cu o parantez deschis 10. Elementele limbajului SQL includ a. Cuvinte cheie b. Nume ale obiectelor din baza de date c. Operatori

d. Restricii e. Constante 11. Elementele limbajului SQL sunt separate prin a. Virgule b. Exact un spaiu c. Unul sau mai multe spaii d. Linie nou e. Liniue de subliniere 12. Numele obiectelor bazei de date pot include a. Paranteze b. Liniue de subliniere c. Numere d. Litere e. Virgule 13. Instruciunile SQL pot li mprite n urmtoarele categorii a. Limbajul dc definire a datelor (DDI, - Data Definition Language) b. Limbajul dc selectare a datelor (DSL - Dala Selection Language) c. Limbajul dc replicare a datelor (DRL - Dala Replication Language) d. Limbajul pentru controlul datelor (DCL - Data Control Language) e. Limbajul dc manipulare a datelor (DML - Data Manipulation Language) Limbajul de definire a datelor (DDL - Data Definition Language) include urmtoarele instruciuni: a. SELECT b. INSERT c. CREATE d. ALTER e. DELETE Limbajul de interogare a datelor (DQL - Data Query Language) include urmtoarele instruciuni: a. SELECT b. INSERT c. CREATE d. ALTER e. DELETE 16. Limbajul de manipulare a datelor (DML - Data Manipulation Language) include urmtoarele instruciuni: a. SELECT b. INSERT c. CREATE d. UPDATE e. DELETE 15. 14.

Limbajul de definire a datelor - DDLAlegei rspunsurile corecte pentru fiecare din urmtoarele ntrebri cu rspunsuri multiple. Reinei c ntrebrile pot avea mai multe rspunsuri corecte. 1. Tipurile de date ofer urmtoarele avantaje a. Respect standardele publicate b. Ofer un set de comportamente utile pentru utilizatorii bazei c. Asigur independena fa de date d. Restricioneaz datele din coloane la caractere care au sens n context e. Ajut sistemul DBMS s stocheze mai eficient datele din coloane 2. Tipurile de date pentru caractere a. Sunt mai flexibile dect tipurile de date numerice b. Accept att date cu lungime fix, ct i date cu lungime variabil. c. Necesit ntotdeauna specificarea preciziei i a scalei d. Determin completarea coloanelor pn la lungimea maxim maxim e. Pot stoca iruri de caractere n format specific unei limbi naionale 3. Tipurile de date numerice a. Sunt mai flexibile dect tipurile de date pentru caractere b. Restricioneaz valorile din coloane la numere i simboluri nrudite, cum ar fi virgulele i simbolul dolar c. Necesit ntotdeauna specificarea preciziei i a scalei d. Stocheaz valori exacte sau aproximative e. Sunt potrivite pentru a fi folosite n calcule 4. Tipurile numerice standard includ a. INTEGER b. NUMBER c. FLOAT d. BOOLEAN e. INTERVAL 5. Tipurile de date temporale standard includ a. DATETIME b. DATE c. TIMESTAMP d. TIMEZONE e. TIME 6. Valorile NULL a. Pot fi folosite pentru reprezentarea datelor care lipsesc sau nu sunt cunoscute b. nseam acelai lucru ca i spaiile libere c. Sunt egale cu alte valori NULL d. Nu sunt egale cu alte valori NULL e. Sunt ntotdeauna permise n mod prestabilit 7. Instruciunile DDL includ a. CREATE

b. ALTER c. DELETE d. INSERT e. UPDATE 8. Instruciunea CREATE DATABASE a. Funcioneaz exact la fel n toate sistemele DBMS relaionale b. Specifie ntotdeauna numele bazei de date c. Specifie ntotdeauna numele proprietarului bazei de date d. Poate include parametri specifici productorului e. Funcioneaz la fel cu instruciunea CREATE SCHEMA 9. Definiia unei coloane din instruciunea CREATE TABLE poate include a. Numele tabelului b. Numele coloanei c. restricie la nivel de tabel d. clauz DEFAULT e. O clauz NULL sau NOT NULL 10. Numele unei coloane dintr-un tabel a. Trebuie s fie specificat n instruciunea CREATE TABLE b. Trebuie s fie unic n cadrul bazei de date c. Trebuie s fie unic n cadrul tabelului d. Poate fi folosit ntr-un singur index e. Trebuie s fie specificat n instruciunea ALTER TABLE 11. O restricie la nivel de coloan a. Poate referi una sau mai multe coloane b. Poate fi inclus ntr-o instruciune CREATE TABLE sau ALTER TABLE c. Folosete o sintax identic sau aproape identic cu cea a unei restricii de acelai tip la nivel de tabel d. Poate fi folosit oriunde ar putea fi folosit o restricie la nivel de tabel e. Are o sintax care difer de la un tip de restricie la altul 12. Sintaxa corect pentru clauza DEFAULT este a. DEFAULT (precizie, scal) b. DEFAULT [NULL | NOT NULL] c. DEFAULT (expresie) d. DEFAULT (numecoloan) REFERENCES nametabel (nume_coloan.) e. DEFAULT [UNIQUE | PRIMARY KEY] 13. Sintaxa corect pentru o restricie NOT NULL este a. nume_coloan tip--dedate IS NOT NULL b. nume_coloan tipdedate NOT NULL c. DEFAULT [NULL | NOT NULL] d. CREATE NOT NULL INDEX ON nume_coloan e. numecoloan REFERENCES NOT NULL 14. Sintaxa corect pentru o restricie UNIQUE este a. [CONSTRAINT numerestricie] UNIQUE (nume_coloan) b. [CONSTRAINT numerestricie] UNIQUE (nume_tabel) c. DEFAULT UNIQUE (nume_coloan) d. nume_coloan REFERENCES UNIQUE nume_tabel

e. DEFAULT [UNIQUE | PRIMARY KEY] 15. Sintaxa corect pentru o restricie referenial este a. [CONSTRAINT numerestricie] REFERENCES nume_index b. [CONSTRAINT numerestricie] REFERENCES nume_tabel c. FOREIGN KEY nume_coloan REFERENCES nume_tabel (nume_coloan) d. REFERENCES numetabel (nume_coloan) e. nume_coloan REFERENCES UNIQUE nume_tabel 16. Instruciunea CREATE INDEX a. Poate fi folosit pentru crearea restriciilor de unicitate i cheie primar b. Poate include cuvntul cheie UNIQUE c. Trebuie s refere dou sau mai multe nume de coloane d. Poate include cuvintele cheie ASC sau DESC pentru orice coloan e. Poate specifica ordinea ascendent sau descendent pentru una sau mai multe coloane 17. Instructiunea CREATE VIEW a. Stocheaz o interogare n baza de date b. Poate include cuvntul cheie opional CASCADE c. Poate include cuvntul cheie opional OR REPLACE d. Trebuie s conin o comand DMI, valid e. Trebuie s conin o instruciune SELECT valid 18. Utilizrile valide ale instruciunii ALTER TABLE includ a. Adugarea coloanelor b. Modificarea lungimii sau a preciziei coloanelor c. Redenumirea unui tabel d. Eliminarea unei chei primare e. Adugarea unei chei primare 19. O instruciune ALTER TABLE nu poate fi folosit pentru a. Schimbarea tipului de date al unei coloane la un tip numeric dac n coloana respectiv exist date de alt tip b. Redenumirea unei coloane c. Schimbarea unei restricii din NULL n NOT NULL pentru o coloan care conine valori nule d. Eliminarea unei chei exteme care refer o cheie primar e. Eliminarea unei chei primare dac exist chei exteme care refer cheia primar 20. Instruciunea DROP poate fi folosit pentru a terge a. restricie referenial b. Un index c. Un tabel d. O coloan dintr-un tabel e. O vizualizare

Limbajul de interogare a datelor(DQL)ntrebri i probleme1. O instruciune SELECT fr o clauz WHERE a. Selecteaz toate coloanele din tabel sau vizualizare b. Returneaz un mesaj de eroare c. Selecteaz toate rndurile din tabel sau vizualizare d. Afieaz numai definiia tabelului sau a vizualizrii e. Scrie ntotdeauna rezultatele ntr-un fiier jurnal 2. n SQL, ordinea rndurilor din rezultatele interogrii a. Este specificat de clauza SORTED BY b. Poate fi ascendent sau descendent pentru orice coloan c. n mod prestabilit este descendent, dac nu se specific o alt ordine d. Este imprevizibil dac nu este specificat in interogare e. Poate fi specificat numai pentru coloanele din setul de rezultate al interogrii 3. Operatorul BETWEEN a. Specific un domeniu de valori care include i capetele b. Poate fi rescris folosind operatorii