Baze TOATE SUBIECTELE [PDF]

  • 0 0 0
  • Gefällt Ihnen dieses papier und der download? Sie können Ihre eigene PDF-Datei in wenigen Minuten kostenlos online veröffentlichen! Anmelden
Datei wird geladen, bitte warten...
Zitiervorschau

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 Adevărat 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

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

not null

G

VARSTA

date, valoare numeric implicita de data curentă 2

EMAIL

SALARIU

sir de caractere de dimensiune fixa, de 30

valoare implicita 0 numar de 10 cu 2 zecimale

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 COLUMN nume, tabelul COLUMN salariu; specificand constrangerile? 41. Ce DROP comanda creeaza corect SALARIAT, COD _ANG

NUME

PRENUME

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

DATA_AN G

VARSTA

EMAIL SALARIU

unic sir de date, valoare caractere implicita data numeric de 2 de dimensiun curentă e fixa, de 30

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));

> 0 numar de 10 cu 2 zecimale

b.

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, numărul cărŃilor din domeniu, media preŃurilor şi numărul total de exemplare a. 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 cod_funct 63. Care(SELECT este comanda corecta careFROM pentruprof); fiecare 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 obŃină titlurile şi preŃurile cărŃilor mai scumpe decât cartea având titlul “Baze de date”, al cărui 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 a.codp IS NOTunei(SELECT DISTINCT codpFROM COPII pentru actionarii firme, urmatoarele tabele 67. Se considera 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 a.codact=b.codact 68. Se considera pentru actionarii uneiOR firme,b.nume=‘&x’; tabelul 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 tabelele Angajat(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) PROFcorecta B WHERE 71. CareFROM este comanda pentruA.COD_FAC=B.COD_FAC; 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 a. SELECT nume crescatoare a salariului? 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);

Intrebări şi probleme la cursul de Baze de date, anul III, toate formele de învăŃământ PARTEA I. Concepte despre Bazele de date relaŃionale. Normalizare

Probleme 1. Să se normalizeze tabelul CURS_SUDENT Presupunem că tabela Curs_Student conŃine următoarele 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 conŃine mult prea multa informaŃie. Să presupunem că am înlocui coloana Cursuri cu două noi coloane: CURS_SUDENT NrMatricol 458 521 627 746 782

NumeSt Predescu Radu Cristescu Irimia Tanase

PrenumeSt Alexandru George Lucian Diana Daciela

Grupa 114 122 243 361 341

982 1204 1520

Bunea Dragnea Popa

Mihaela Liviu Marius

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

Nota2 8 7 10

programare

10

engleza

9

1.1 Să se aducă tabela CURS_SUDENT la FN1. Pentru aceasta să se creeeze tabelul CURS_SUDENT modificat corespunzător 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 corespunzător FN2 şi tabelele SUDENT şi CURS, rezultate în urma normalizării 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 obŃine o relaŃie FN2 se poate aplica regula Casey-Delobel. α∪β  mulŃimea atributelor care intervin în dependenŃele funcŃionale; α∪γ  reprezintă reuniunea determinantului cu restul atributelor lui A. . 1.3 Este tabela CURS_SUDENT realizată la 1.2 în FN3? (JustificaŃi răspunsul) 2. Să se aducă tabelul Profesor la FN3 şi să se creeze tabela Titlu, rezultat în urma normalizării 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 relaŃia 1:m (un Titlu corespunde la mai multe cadre didactice). Tabele de mai sus păstrează regulile de integritate?

Amintim ca regulile de integritate sunt; - unicitatea cheii primare - integritatea entităŃii – valorile cheii primare sa fie diferite de valoarea null(o valoare necunoscuta sau lipseşte) - integritatea referenŃială ) 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 fără corespondent).

4. Să se determine anomaliile pentru tabelul Avion (RedundanŃă logică, Anomalie la inserŃie, 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

Constrângere: toate avioanele cu acelaşi nume au aceeaşi capacitate. 5. Să se implementeze FN1 pentru tabelul MASINA:

Persoana

Vehicul

Eu

R25 - W14 - R21

Tu

205

El

R5 - 305

noi

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_LA COD_SALARIAT#

JOB_COD

NR_PROIECT#

FUNCTIA

S1

PROGRAMATOR

P1

SUPERVIZOR

SUM A 60

S1

PROGRAMATOR

P2

CERCETATOR

25

S1

PROGRAMATOR

P3

AUXILIAR

10

S3 S5

VANZATOR INGINER

P3 P3

SUPERVIZOR SUPERVIZOR

60 60

7. Tabelul ATASAT_LA _2A rezultat de la 6. să se aducă la FN3, realizând tabelele ATASAT_LA _3A şi ATASAT_LA _3B

8. Presupunem că un şantier poate executa mai multe lucrări de bază şi că o lucrare poate fi executată de mai multe şantiere. Pentru relaŃia EXECUTA să se specifice dependenŃele, realizând relaŃia EXECUTA_1! Avem relaŃiile următoare 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ă relaŃia 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 relaŃie R este în forma normală Boyce-Codd dacă şi numai dacă pentru orice dependenŃă funcŃională totală X → A, X este o cheie (candidat) a lui R.)

Intrebări AlegeŃi răspunsurile corecte pentru fiecare din următoarele întrebări cu răspunsuri multiple. Întrebările pot avea mai multe răspunsuri corecte. 1. SQL este a. Un limbaj realizat de Dr. E. F. Codd b. Un limbaj folosit pentru comunicarea cu bazele de date relaŃionale 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 producător de baze de date c. O colecŃie de date interrelaŃionate gestionate ca o singură unitate d. Definită în acelaşi mod de toŃi producătorii de software e. Implementată diferit de diferiŃi producători 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 colecŃie de date interrelaŃionate gestionate ca o singură unitate c. Un produs software furnizat de un producător 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 relaŃionale includ a. RelaŃii b. Tabele c. Vizualizări de utilizator d. Diagrame ERD e. RestricŃii

6. Printre tipurile de restricŃii care pot fi folosite în bazele de date se numără a. NOTNULL b. RelaŃie c. Cheie primară d. CHECK e. Unicitate 7. Scopul normalizării este de a rezolva următoarele 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 proiectanŃii să descopere vizualizările de utilizator b. A fost dezvoltat de Dr. E. F. Codd c. A fost dezvoltat de Oracle d. Este aplicat sistematic fiecărei vizualizări 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. DependenŃele parŃiale de cheia primară

b. Grupurile repetitive c. DependenŃele tranzitive d. Atributele multivaloare e. RelaŃiile de tip unu-la-mai-mulŃi 11. A doua formă normală rezolvă anomaliile cauzate de a. DependenŃele parŃiale de cheia primară b. Grupurile repetitive c. DependenŃele tranzitive d. Atributele mulŃi valoare e. RelaŃiile de tip unu-la-mai-mulŃi 12. A treia formă normală rezolvă anomaliile cauzate de a. DependenŃele parŃiale de cheia primară b. Grupurile repetitive c. DependenŃele tranzitive d. Atributele multivaloare e. RelaŃiile de tip unu-la-mai-mulŃi 13. Pentru aducerea în prima formă normală a unei relaŃii ne-normalizate a. Atributele care depind doar de o parte a cheii sunt eliminate b. Atributele multivaloare sunt mutate într-o nouă relaŃie c. Atributele care sunt dependente tranzitiv sunt eliminate d. Grupurile repetitive sunt mutate într-o nouă relaŃie e. Identificatorul unic al relaŃiei originale este copiat în noua relaŃie 14. Problemele de dependenŃă parŃială a. Sunt rezolvate de FN2 b. Sunt rezolvate de FN3

c. Pot apărea în relaŃiile 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: Number Currency Number

Cod_valuta Valuta Curs

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 lira

35.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: Number (cheie primara) Text

A B

4.Creati o tabela cu urmatoarele campuri: Number Date

A E

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

Text Number Number Number - Integer

5. 6. 7. 8.

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.

1. 2. 3. 4. 5.

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.

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: Number Double Text dimensiune 50 Date/Time Medium Date

CNP Nume Data

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

Nume Alina Maria

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 :

Atribut 1 Atribut 2 Atribut 3

Numeric Byte Text dimensiune 15 caractere Currency tip Euro

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 : Number Double Text dimensiune 50

CNP Nume Data 4. 5. 6. 7.

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 SQL Întrebări şi Probleme AlegeŃi răspunsurile corecte pentru fiecare din următoarele întrebări cu răspunsuri multiple. Întrebările pot avea mai multe răspunsuri 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. Afişează datele şi opŃiunile de comandă folosind caracteristici grafice e. Afişează răspunsurile 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. Afişează datele şi opŃiunile de comandă folosind caracteristici grafice e. Afişează răspunsurile 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. Afişează datele şi opŃiunile de comandă folosind caracteristici grafice e. Afişează răspunsurile la comenzi sub formă de mesaje de tip text 6. ClienŃii SQL oferiŃi de Oracle sunt a. iSQL b. Query Analyzer c. iSQL*Plus d. SQL*Plus e. SQLWorksheet 7. ClienŃii SQL oferiŃi 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 diferenŃierea produselor oferire de diferiŃi producători d. Au fost bazate pe cererile pieŃei e. Sunt compatibile între implementările diferiŃilor producători 9. InstrucŃiunile SQL a. încep cu un cuvânt cheie reprezentând o comandă b. Se termină cu un cuvânt cheie reprezentând 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. RestricŃii e. Constante 11. Elementele limbajului SQL sunt separate prin a. Virgule b. Exact un spaŃiu c. Unul sau mai multe spaŃii d. Linie nouă e. LiniuŃe de subliniere 12. Numele obiectelor bazei de date pot include a. Paranteze b. LiniuŃe de subliniere c. Numere d. Litere e. Virgule 13. InstrucŃiunile SQL pot li împărŃite în următoarele 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) 14.

Limbajul de definire a datelor (DDL - Data Definition Language) include următoarele instrucŃiuni: a. SELECT b. INSERT c. CREATE d. ALTER e. DELETE 15.

Limbajul de interogare a datelor (DQL - Data Query Language) include următoarele instrucŃiuni: a. SELECT b. INSERT c. CREATE d. ALTER e. DELETE 16. Limbajul de manipulare a datelor (DML - Data Manipulation Language) include următoarele instrucŃiuni: a. SELECT b. INSERT c. CREATE d. UPDATE e. DELETE

Limbajul de definire a datelor - DDL AlegeŃi răspunsurile corecte pentru fiecare din următoarele întrebări cu răspunsuri multiple. ReŃineŃi că întrebările pot avea mai multe răspunsuri corecte. 1. Tipurile de date oferă următoarele avantaje a. Respectă standardele publicate b. Oferă un set de comportamente utile pentru utilizatorii bazei c. Asigură independenŃa faŃă de date d. RestricŃionează 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 decât tipurile de date numerice b. Acceptă atât date cu lungime fixă, cât şi date cu lungime variabilă. c. Necesită întotdeauna specificarea preciziei şi a scalei d. Determină completarea coloanelor până la lungimea maximă maximă e. Pot stoca şiruri de caractere în format specific unei limbi naŃionale 3. Tipurile de date numerice a. Sunt mai flexibile decât tipurile de date pentru caractere b. RestricŃionează 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ă acelaşi lucru ca şi spaŃiile libere c. Sunt egale cu alte valori NULL d. Nu sunt egale cu alte valori NULL e. Sunt întotdeauna permise în mod prestabilit 7. InstrucŃiunile DDL includ a. CREATE

b. ALTER c. DELETE d. INSERT e. UPDATE 8. InstrucŃiunea CREATE DATABASE a. FuncŃionează exact la fel în toate sistemele DBMS relaŃionale b. Specifieă întotdeauna numele bazei de date c. Specifieă întotdeauna numele proprietarului bazei de date d. Poate include parametri specifici producătorului e. FuncŃionează la fel cu instrucŃiunea CREATE SCHEMA 9. DefiniŃia unei coloane din instrucŃiunea CREATE TABLE poate include a. Numele tabelului b. Numele coloanei c. restricŃie 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 instrucŃiunea 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 instrucŃiunea ALTER TABLE 11. O restricŃie la nivel de coloană a. Poate referi una sau mai multe coloane b. Poate fi inclusă într-o instrucŃiune CREATE TABLE sau ALTER TABLE c. Foloseşte o sintaxă identică sau aproape identică cu cea a unei restricŃii de acelaşi tip la nivel de tabel d. Poate fi folosită oriunde ar putea fi folosită o restricŃie la nivel de tabel e. Are o sintaxă care diferă de la un tip de restricŃie la altul 12. Sintaxa corectă pentru clauza DEFAULT este a. DEFAULT (precizie, scală) b. DEFAULT [NULL | NOT NULL] c. DEFAULT (expresie) d. DEFAULT (nume–coloană) REFERENCES name–tabel (nume_coloană.) e. DEFAULT [UNIQUE | PRIMARY KEY] 13. Sintaxa corectă pentru o restricŃie NOT NULL este a. nume_coloană tip--de–date IS NOT NULL b. nume_coloană tip–de–date NOT NULL c. DEFAULT [NULL | NOT NULL] d. CREATE NOT NULL INDEX ON nume_coloană e. nume–coloană REFERENCES NOT NULL 14. Sintaxa corectă pentru o restricŃie UNIQUE este a. [CONSTRAINT nume—restricŃie] UNIQUE (nume_coloană) b. [CONSTRAINT nume—restricŃie] 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 restricŃie referenŃială este a. [CONSTRAINT nume—restricŃie] REFERENCES nume_index b. [CONSTRAINT nume—restricŃie] REFERENCES nume_tabel c. FOREIGN KEY nume_coloană REFERENCES nume_tabel (nume_coloană) d. REFERENCES nume—tabel (nume_coloană) e. nume_coloană REFERENCES UNIQUE nume_tabel 16. InstrucŃiunea CREATE INDEX a. Poate fi folosită pentru crearea restricŃiilor de unicitate şi cheie primară b. Poate include cuvântul 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 cuvântul cheie opŃional CASCADE c. Poate include cuvântul cheie opŃional OR REPLACE d. Trebuie să conŃină o comandă DMI, validă e. Trebuie să conŃină o instrucŃiune SELECT validă 18. Utilizările valide ale instrucŃiunii ALTER TABLE includ a. Adăugarea coloanelor b. Modificarea lungimii sau a preciziei coloanelor c. Redenumirea unui tabel d. Eliminarea unei chei primare e. Adăugarea unei chei primare 19. O instrucŃiune 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 restricŃii din NULL în NOT NULL pentru o coloană care conŃine 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. InstrucŃiunea DROP poate fi folosită pentru a şterge a. restricŃie referenŃială b. Un index c. Un tabel d. O coloană dintr-un tabel e. O vizualizare

Limbajul de interogare a datelor(DQL) Întrebări şi probleme 1. O instrucŃiune SELECT fără o clauză WHERE a. Selectează toate coloanele din tabel sau vizualizare b. Returnează un mesaj de eroare c. Selectează toate rândurile din tabel sau vizualizare d. Afişează numai definiŃia tabelului sau a vizualizării e. Scrie întotdeauna rezultatele într-un fişier jurnal 2. În SQL, ordinea rândurilor din rezultatele interogării 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 interogării 3. Operatorul BETWEEN a. Specifică un domeniu de valori care include şi capetele b. Poate fi rescris folosind operatorii