Sunteți pe pagina 1din 20

Subiecte SGBD

1.Ce comanda sterge din tabelul Salariat


Cod_ang Nume Prenume Data_ang Virsta Email Salariu
Not null Sir de Sir de Date,valoare Numeric 2 Sir de Valoare
Numeric caractere caractere implicita caractere implicita 0,
de 5 max.20 max.20 data curenta dimensiune numeric de
fixa 30 10 cu 2
zecimale
Coloana nume si salariu?

a. ALTER TABLE SALARIAT


DROP nume,salariu;
b. ALTER TABLE SALARIAT
DROP COLUMN (nume,salariu);
c. ALTER TABLE SALARIAT
DROP (nume,salariu);
d. ALTER TABLE SALARIAT
DROP COLUMN nume, COLUMN salariu;

2.Efectele unei comenzi DDL pot fi anulate cu o comanda ROLLBACK?


Adevarat sau Fals

3.Pentru a introduce in tabelul SALARIAT, 2 coloane : Cod_funct si Email ce varianta folosim?


Cod_ang Nume Prenume Data_ang Virsta Salariu
Not null Sir de Sir de Date,valoare Numeric 2 Valoare
Numeric caractere caractere implicita implicita
de 5 max.20 max.20 data curenta 0, numeric
de 10 cu 2
zecimale

a. ALTER TABLE SALARIAT ADD Cod_funct Number(2), Alter Column Add Email Char(25);
b. ALTER TABLE SALARIAT ADD Cod_funct Number(2), ADD Email Char(25);
c. ALTER TABLE SALARIAT ADD (Cod_funct Number(2), Email Char(25));
d. ALTER TABLE SALARIAT ADD Cod_funct Number(2), Alter ADD Email Char(25);

4. Care este comanda corecta pentru a afisa nume,prenume si virsta salariatilor , iar pentru cei care
au virsta necunoscuta sa apara ” virsta necunoscuta”?

a.SELECT nume,prenume, NVL(virsta,”virsta necunoscuta”) FROM SALARIAT;


b.SELECT nume,prenume, NVL(TO_CHAR(virsta),”virsta necunoscuta”) FROM
SALARIAT;
c. SELECT nume,prenume, NVL(CHAR(virsta),”virsta necunoscuta”) FROM SALARIAT;

d. SELECT nume,prenume, NVL2(TO_CHAR(virsta),”virsta necunoscuta”) FROM SALARIAT;

5. Constringerea NOT NULL poate fi adaugata utilizind o comanda ALTER TABLE…. ADD
CONSTRAINT?
Adevat sau Fals

6.Care este comanda care determina stergerea tuturor salariatilor din departamentul 10?
a. DELETE SALARIAT
WHERE Cod_dep=10;
b. DELETE TO SALARIAT
WHERE Cod_dep=10;
c. DROP FROM SALARIAT
WHERE Cod_dep=10;
d. . DELETE FROM SALARIAT
WHERE Cod_dep=10;

7.Care este varianta corecta pentru a crea tabelul SALARIAT cu caracetristicile de mai jos:
Cod_ang Nume Prenume Data_ang Virsta Email Salariu
Not null Sir de Sir de Date,valoare Numeric 2 Sir de Valoare
Numeric caractere caractere implicita caractere implicita 0,
de 5 max.20 max.20 data curenta dimensiune numeric de
50 10 cu 2
zecimale

a.CREATE TABEL SALARIAT( cod_ang Number (5) NOT NULL, nume VARCHAR
(20),prenume VARCHAR2(20),data_ang DATE DEFAULT SYSDATE, virsta Number
(2),email CHAR(50), salariu Number(10,2) DEFAULT 0);
b. CREATE TABEL SALARIAT( cod_ang Number (5) , nume VARCHAR
(20),prenume VARCHAR2(20),data_ang DATE , virsta Number (2),email CHAR(50), salariu
Number(10,2) DEFAULT 0);
c. CREATE TABEL SALARIAT( cod_ang Number (5) NOT NULL, nume VARCHAR
(20),prenume VARCHAR2(20),data_ang DATE , DEFAULT SYSDATE, virsta Number
(2),email CHAR(50), salariu Number(10,2) DEFAULT 0):

8. Actualizarile realizate pe o vizualizare, se propaga intotdeauna asupra tabelelor de date ?


Adevarat sau Fals

9. Care este comanda INCORECTA care afiseaza numele, salariul si virsta pentru toti salariatii
care cistiga mai mult de 1000, rezultatul fiind sortat descendent dupa salariu, iar pentru cei care au
acelasi salariu in ordine crescatoare dupa nume ?
a. SELECT nume,salariu,virsta
FROM SALARIAT
WHERE salariu>1000
ORDER by salariu DESC nume ASC;
b. SELECT nume,salariu,virsta
FROM SALARIAT
WHERE salariu>1000
ORDER by salariu DESC, nume ASC;
c. SELECT nume,salariu,virsta
FROM SALARIAT
WHERE salariu>1000
ORDER by salariu DESC , nume ;
d. SELECT nume,salariu,virsta
FROM SALARIAT
WHERE salariu>1000
ORDER by 2 DESC , 1 ASC;

10. Care comanda NU defineste corect un tabel ?


a. CREATE TABLE [schema]nume_tabel(nume_col tip_de_date[Default expresie]…);
b. CREATE TABLE nume_tabel [(col1,col2..)] AS subcerere;
c. CREATE TABLE [schema]nume_tabel(nume_col tip_de_date[Default
expresie][constringere_de_coloana]…);
d. CREATE TABLE [schema]nume_tabel(nume_col tip_de_date[Default
expresie][constringere_de_coloana] ][constringere la nivel de tabel);
11. 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’;

12. Cu ce comanda se creeaza tabelul SALARIAT_1 care sa aiba aceeasi structura cu tabelul
SALARIAT si contine salariati cu salariu mai mare cu 100?
Tabelul cel de mai sus nu l-am mai copiat o data……

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 SELECT FROM SALARIAT WHERE salariu>100;
d. CREATE TABLE SALARIAT_1 AS SELECT Cod_ang, Salariu FROM SALARIAT WHERE
salariu>100;

13. Pentru tabelul care este comanda corecta ptr. a modifica salariu la 3000 ,pentru angajatii care
lucreaza in departamentul 10 si au salariu mai mic de 3000?
a.UPDATE SALARIAT SET SALARIU=3000
WHERE cod_dep=10 AND salariu<3000;
b.MODIFY SALARIAT SET SALARIU=3000
WHERE cod_dep=10 , salariu<3000;
c. UPDATE SALARIAT SET cod_dep=10 AND Salariu<3000
WHERE salariu=3000;
d. MODIFY SALARIAT SET SALARIU=3000
WHERE cod_dep=10 AND salariu<3000;
Am raspuns: d

14. Efectele unei comenzi DML pot fi anulate cu o comanda ROLLBACK?


Adevat sau Fals ??

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 sir de sir caractere date, valoare numeric de 2 sir de valoare
numeric de 5 caractere de de maxim 20 implicita caractere de implicita 0
maxim 20 data curentã dimensiune numar de 10
fixa, de 30 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”?

SELECT nume, prenume, NVL(varsta, ‘varsta necunoscuta’)


FROM salariat;

SELECT nume, prenume, NVL(TO_CHAR(varsta), ‘varsta necunoscuta’)


FROM salariat;

SELECT nume, prenume, NVL(CHAR(varsta), ‘varsta necunoscuta’)


FROM salariat;

SELECT nume, prenume, NVL2(TO_CHAR(varsta), ‘varsta necunoscuta’)


FROM salariat;

14. Care comanda afiseaza numarul de angajati din fiecare departament?

SELECT cod_departament, COUNT(*)


FROM salariat;

SELECT cod_departament, SUM(cod_angajat)


FROM salariat
GROUP BY cod_departament;

SELECT cod_departament, COUNT(*)


FROM salariat
GROUP BY cod_departament;

SELECT 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 sircaractere sir caractere date, valoare numeric de 2 valoare


numeric de 5 de maxim 20 de maxim 20 implicita data implicita 0
curentã 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 sir de sir caractere date, valoare numeric de 2 sir de valoare
numeric de 5 caractere de de maxim 20 implicita caractere de implicita 0
maxim 20 data curentã dimensiune numar de 10
fixa, de 30 cu 2
zecimale

si sa contina salariatii care au salariu >100?

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;

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 sir de sir caractere date, valoare numeric de 2 sir de valoare
numeric de 5 caractere de de maxim 20 implicita caractere de implicita 0
maxim 20 data curentã dimensiune numar de 10
fixa, de 30 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 NUMBER(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 sir de sir caractere date, valoare numeric de 2 sir de valoare
numeric de 5 caractere de de maxim 20 implicita caractere de implicita 0
maxim 20 data curentã dimensiune numar de 10
fixa, de 30 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);

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

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

19. Care varianta este corecta pentru a redenumi tabelul SALARIAT cu numele SALARIATI?

RENAME SALARIAT 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;

SELECT cod_departament
FROM salariat
GROUP BY cod_departament
HAVING MIN(salariu)>5000;

SELECT 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 <200?
SELECT nume
FROM salariat
WHERE (cod_deptartament=3 OR salariu>100) AND (cod_deptartament=5 OR salariu<200);
SELECT nume
FROM salariat
WHERE (cod_deptartament=3 AND salariu>100) OR (cod_deptartament=5 AND salariu<200);
SELECT nume
FROM salariat
WHERE (cod_deptartament=3 AND salariu>100) AND (cod_deptartament=5 AND salariu<200);
SELECT nume
FROM salariat
WHERE (cod_deptartament=3 AND salariu>100) OR (cod_deptartament=5 OR salariu<200);

Care dintre urmatoarele comenzi intoarce numarul zilei din luna carespunzator datei curente?
SELECT TO_CHAR(SYSDATE,’DDD’)
FROM dual;
SELECT TO_CHAR(SYSDATE,’DAY’)
FROM dual;
SELECT TO_CHAR(SYSDATE,’D’)
FROM dual;
SELECT TO_CHAR(SYSDATE,’DD’)
FROM dual;

Care este comanda corecta care afiseaza numele salariatilor si numele departamentelor in care lucreaza, inclusiv
departamentele in care nu lucreaza salariati?

SELECT nume_salariat, nume_departament


FROM salariati s, departamente d
WHERE s.cod_departament = d.cod_departament;
SELECT nume_salariat, nume_departament
FROM salariati s, departamente d
WHERE s.cod_departament(+) = d.cod_departament;
SELECT nume_salariat, nume_departament
FROM salariati s, departamente d
WHERE s.cod_departament = d.cod_departament(+);
SELECT nume_salariat, nume_departament
FROM salariati s, departamente d
WHERE s.cod_departament(+) = d.cod_departament(+);
Pentru a insera in tabelul SALARIAT inregistrari,

COD _ANG NUME PRENUME DATA_ANG VARSTA EMAIL SALARIU


not null numeric de 5 sir 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 varianta este incorecta?


INSERT INTO SALARIAT(COD _ANG, NUME,PRENUME,DATA_ANG,VARSTA,EMAIL, SALARIU) VALUES(5,
‘Ene’, ‘Ana’, ‘1/06/2009’, 20, ‘INTERZIS PE FORUM CU ADRESE DE EMAIL.com’, 2500.50)
INSERT INTO SALARIAT(COD _ANG, NUME,PRENUME, VARSTA, EMAIL) VALUES(5, ‘Ene’, ‘Ana’, 20,
‘INTERZIS PE FORUM CU ADRESE DE EMAIL.com’)
INSERT INTO SALARIAT(COD _ANG, NUME,PRENUME,VARSTA,EMAIL, SALARIU) VALUES(5, ‘Ene’,
‘Ana’, ‘1/06/2009’, 20, ‘INTERZIS PE FORUM CU ADRESE DE EMAIL.com’)
INSERT INTO SALARIAT
VALUES(5, ‘Ene’, ‘Ana’, ‘1/06/2009’, 20, ‘INTERZIS PE FORUM CU ADRESE DE EMAIL.com’, 2500.50)

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?

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;

SELECT nume_cititor
FROM imprumuta
WHERE data_restituirii IS NOT NULL;

SELECT nume_cititor
FROM imprumuta
WHERE data_restituirii IS NULL;

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

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

9-Care este comanda corecta care afiseaza numele si salariul angajatilor condusi direct de ‘ENE DAN’?

SELECT nume, salariu


FROM salariati
WHERE cod_manager = (SELECT cod_manager FROM salariati
WHERE UPPER(nume) ='ENE' , UPPER(pren) ='DAN' );

SELECT nume, salariu


FROM salariati
WHERE cod_manager = (SELECT cod_ang FROM salariati
WHERE nume ='ENE' , pren ='DAN' );

SELECT nume, salariu


FROM salariati
(SELECT 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;

SELECT COUNT(*)
FROM imprumuta
WHERE data_imprumutului=2008;

SELECT 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<
(SELECT sum(salariu) FROM salariat);

SELECT nume_departament
FROM departament A
WHERE 20000<
(SELECT sum(salariu) FROM salariat B
where cod_departament=cod_departament);

SELECT nume_departament
FROM departament
WHERE 20000<
(SELECT 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;

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

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

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

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

70%

1. 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;
(varianta aleasa de mine)

UPDATE salariat
SET salariu = 1.05;

UPDATE salariat
SET salariu = salariu + salariu* 1.05;

2. 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;
(varianta aleasa de mine)

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;

3. Ce comanda modifica in tabelul SALARIAT

COD _ANG NUME PRENUME DATA_ANG VARSTA EMAIL SALARIU

not null sir de sir caractere date, valoare numeric de 2 sir de valoare
numeric de 5 caractere de de maxim 20 implicita data caractere de implicita 0
maxim 20 curentã dimensiune numar de 10
fixa, de 30 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));
(varianta aleasa de mine)

4. Actualizarile realizate asupra tabelelor de baza ale unei vizualizari se reflecta totdeauna in vizualizare

Adevărat
(varianta aleasa de mine)

5. 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 sir de sir caractere date, valoare numeric de sir de valoare
numeric de caractere de de maxim 20 implicita data 2 caractere de implicita 0
5 maxim 20 curentã dimensiune numar de 10 cu 2
fixa, de 30 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 NUMBER(12,3));

ALTER TABLE SALARIAT


MODIFY (prenume VARCHAR2(30) , salariu NUMBER(12,3));
(varianta aleasa de mine)

ALTER TABLE SALARIAT


ADD (prenume VARCHAR2(30), salariu NUMBER(12,3));

6. 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 sir de sir caractere date, valoare numeric de 2 sir de valoare
numeric de 5 caractere de de maxim 20 implicita data caractere de implicita 0
maxim 20 curentã dimensiune numar de 10
fixa, de 30 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);
(varianta aleasa de mine)

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

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

7. Care varianta este corecta pentru a redenumi tabelul SALARIAT cu numele SALARIATI?

RENAME SALARIAT TO SALARIATI;


(varianta aleasa de mine)

RENAME SALARIAT WITH SALARIATI;

RENAME TABLE SALARIAT TO TABLE SALARIATI;

RENAME TABLE SALARIAT WITH TABLE SALARIATI;

8. 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' );
(varianta aleasa de mine)

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

9. 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);
(varianta aleasa de mine)
ALTER TABLE SALARIAT
DROP COLUMN nume, COLUMN salariu;

10.Care este comanda corecta care afiseaza numele cititorilor care au carti nerestituite?

SELECT nume_cititor
FROM imprumuta
WHERE data_restituirii = NULL;

SELECT nume_cititor
FROM imprumuta
WHERE data_restituirii IS NOT NULL;

SELECT nume_cititor
FROM imprumuta
WHERE data_restituirii IS NULL;
(varianta aleasa de mine)

SELECT nume_cititor
FROM imprumuta
WHERE data_restituirii > SYSDATE;

11. 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;
(varianta aleasa de mine)

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

12. Care este comanda corecta care afiseaza numele si salariul angajatilor condusi direct de ‘ENE DAN’?

SELECT nume, salariu


FROM salariati
WHERE cod_manager = (SELECT cod_manager FROM salariati
WHERE UPPER(nume) ='ENE' , UPPER(pren) ='DAN' );

SELECT nume, salariu


FROM salariati
WHERE cod_manager = (SELECT cod_ang FROM salariati
WHERE nume ='ENE' , pren ='DAN' );

SELECT nume, salariu


FROM salariati
(SELECT 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' );
(varianta aleasa de mine)
13. 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%';
(varianta aleasa de mine)

14.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;

SELECT cod_departament, nume_departament, SUM(salariu)


FROM salariati s, departamente d
WHERE s.cod_departament=d.cod_departament
GROUP BY cod_departament;
(varianta aleasa de mine)

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;

SELECT cod_departament, nume_departament, SUM(salariu)


FROM salariati, departamente
WHERE s.cod_departament=d.cod_departament
GROUP BY cod_departament, nume_departament;

15. 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’);
(varianta aleasa de mine)

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

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’);
16. Constringerea NOT NULL poate fi adaugata utilizind o comanda ALTER
TABLE…. ADD CONSTRAINT?
A - (varianta aleasa de mine)

17.O constrangere de tip PRIMARY KEY poate fi declarata numai la nivel de coloana
A - (varianta aleasa de mine)

18.Efectele unei comenzi DDL pot fi anulate cu o comanda ROLLBACK


F - (varianta aleasa de mine)

19.Care este comanda corecta care se afiseaza numele si prenumele pentru toti angajatii cu varsta
necunoscuta?

SELECT nume, prenume


FROM salariat
WHERE varsta=NULL;

SELECT nume, prenume


FROM salariat
WHERE varsta IS NULL;
(varianta aleasa de mine)

SELECT nume, prenume


FROM salariat
WHERE varsta=0;

SELECT nume, prenume


FROM salariat
WHERE varsta IS NOT NULL;

20.Care este comanda corecta care afiseaza numele si data angajarii pentru salariatii care au fost
angajati dupa angajatul avand codul 10, in ordine descrescatoare a numelui?

SELECT nume, data_angajarii


FROM salariat
WHERE data_angajarii >
(SELECT data_angajarii FROM salariat WHERE cod_angajat = 10);

SELECT nume, data_angajarii


FROM salariat
WHERE data_angajarii >
(SELECT data_angajarii FROM salariat WHERE cod_angajat = 10)
ORDER BY nume;

SELECT nume, data_angajarii


FROM salariat
WHERE data_angajarii >
(SELECT data_angajarii FROM salariat WHERE cod_angajat = 10)
ORDER BY nume DESC;
(varianta aleasa de mine)

SELECT nume, data_angajarii


FROM salariat
WHERE data_angajarii >
(SELECT * FROM salariat WHERE cod_angajat = 10)
ORDER BY nume DESC;