BD TOT
SQL Mastery Quiz
Testați-vă cunoștințele despre SQL și PL/SQL cu acest quiz cu 61 de întrebări! Fie că sunteți începător sau expert, acest quiz vă va ajuta să vă consolidați înțelegerea asupra funcțiilor, comenzilor și conceptelor SQL.
Quiz-ul include:
- Întrebări variate pe teme de SQL
- Evaluarea cunoștințelor într-un mod interactiv
- Feedback imediat despre răspunsurile tale
Un trigger poate fi declanșat de o comandă:
INSERT, UPDATE sau DELETE;
Doar INSERT sau DELETE;
SELECT, INSERT, UPDATE sau DELETE;
Doar INSERT sau UPDATE;
Doar DELETE sau UPDATE
În corpul unui trigger de tip BEFORE și FOR EACH ROW, declanșat pentru o operație pe tabela Tabel(cu coloane numerice Col_1, Col_2,…), care din următoarele linii de cod nu se pot efectua niciodată?
UPDATE Tabel set Col_2:=0;
:NEW.Col_1:=:OLD.Col_2+1;
:OLD.Col_1:=0;
:New.Col_1:=0
Subinterogările pot fi încuibare(integrate) în:
Doar comenzi UPDATE;
Doar comenzi SELECT;
Comenzi SELECT, INSERT, DELETE sau UPDATE;
Doar comenzi INSERT.
Doar comenzi DELETE
Presupunând tabela TABEL (având o coloană PRET de tip INT), care dintre interogările următoare returnează liniile cu un PRET mai mare sau egal cu 100?
SELECT * from TABEL order by PRET>=100
SELECT * from TABEL where PRET>=100;
SELECT * from TABEL where PRET=>100;
SELECT * from TABEL having PRET>=100;
Fiind data tabela ANGAJATI cu coloanele Id, Nume, Id_Sef, care dintre interogările următoare reprezintă practic o auto-joncțiune?
SELECT A.Id, A.Nume Angajat, B.Nume Sef from ANGAJATI A, ANGAJATI B where A.Id_Sef=B.Id;
SELECT A.Id, A.Nume Angajat, B.Nume Sef from ANGAJATI A, ANGAJATI B where A.Id=B.Id;
SELECT A.Id, B.Nume Angajat, A.Nume Sef from ANGAJATI A, ANGAJATI B where A.Id_Sef=B.Id_Sef;
SELECT Id, Nume, Id_seffrom ANGAJATI A where A.Id=A.Id_Sef;
Presupunând tabela TABEL1 cu coloana ID (de tip INT), care dintre comenzile următoare este greșită?
DELETE * from TABEL1;
DELETE from TABEL1 where ID IS NULL;
DELETE from TABEL1;
DELETE from TABEL1 where ID=1;
Care dintre următoarele expresii nu sunt cuvinte cheie rezervate SQL?
HAVING
FROM
GOUPING
ORDER
Care dintre următoarele obiecte PL/SQL nu au parametrii de intrare?
Secventele
Prodecurile stocate
Trigger-ele
Functiile
În cadrul unui trigger, operatorii :NEW, respectiv :OLD pot fi utilizați doar dacă
Trigger-ul este de tip BEFORE;
Trigger-ul este definit la nivel de comandă;
Trigger-ul este definit la nivel de linie; a
. Trigger-ul este de tip AFTER; ?
Fie tabela DOI având câmpurile CNP(int, primary key) și NUME(varchar(15)), având o linie completată cu date. Care dintre comenzile următoare nu se pot executa?
ALTER TABLE doi MODIFY cnp CHAR(13);
ALTER TABLE doi ADD salar INT;
ALTER TABLE doi MODIFY nume VARCHAR(20);
ALTER TABLE doi ADD UNIQUE(nume);
Care dintre comenzile următoare nu se pot executa sau vor funcționa defectuos (presupunând tabela INCASARI cu coloanele COD și SUMA)?
Select COD, sum(SUMA) from INCASARI group by COD;
Select avg(SUMA) from INCASARI orderby COD;
Select COD, sum(SUMA) from INCASARI where SUMA=NULL group by COD;
Select COD, avg(SUMA) from INCASARI having avg(SUMA)>100 group by COD;
In cadrul unui trigger (declanșat pe o tabelă TAB1, având coloanele CON1, CON2,…) următoarea secvență de cod este permisă:
AFTER UPDATE ON con1;
AFTER INSERT ON tab1;
BEFORE DELETE OF tab1;
AFTER UPDATE OF con1 ON tab1;
Se consideră tabela TAB1 (având și coloanele Nume și Salar), respectiv variabilele Var1 și Var2 (declarate adecvat). Comanda (PL/SQL): SELECT Nume, Salar INTO, Var1, Var2 From TAB1, se poate executa doar dacă
Tabela TAB1 are oricâte coloane, dar maxim o linie;
Tabela TAB1 are oricâte coloane și oricâte linii;
Comanda este greșită fără o clauză WHERE pentru filtrare;
Tabela TAB1 are doar două coloane (cele referite
Ce urmează după o clauză WHERE?
Numele tabelei asupra căreia se aplică comanda SQL în cauză;
Condiția verificată pentru selecția liniilor;
O listă de una sau mai multe coloane selectate;
Condiția verificată pentru selecția liniilor, fiind utilizabilă doar într-o comandă SELECT.
Considerându-se tabela ‘table1’ cu 3 coloane (în ordinea : id, nume, salar), adăugarea unei noi linii se poate face cu comanda:
APPEND INTO table1 (id,salar,nume) VALUES (10,ion,2000);
INSERT INTO table1 VALUES (10,’ion’,2000);
INSERT INTO table1 (id,salar,nume) VALUES (10,’ion’,2000);
INSERT INTO table1 (id,salar,nume) VALUES (10,ion,2000);
Presupunând tabelele A și B (având fiecare o coloană ID), care dintre comenzile următoare (SQL Oracle) este greșită?
SELECT A*,B* from A,B where A.id(+)=B.id(+) and A.id is null and B.id is null;
SELECT A*,B* from A,B where A.id=B.id;
SELECT A*,B* from A,B where A.id=B.id(+) and B.id is null;
SELECT A*,B* from A,B where A.id(+)=B.id and A.id is null;
Care dintre comenzile următoare NU pot fi executate (presupunând tabela exceptio, cu coloanele COD și SUMA):
. Select sum(*) from INCASARI;
. Select count() from INCASARI;
Select count(SUMA), sum(SUMA) from INCASARI;
Select count(*), sum(SUMA) from INCASARI;
Care dintre expresiile următoare sunt funcții de grup (SQL)?
AVG
LEFT
RIGHT
JOIN
NVL
MIN
MACS
Considerând tabelele tabel1 și tabel2, o comandă: SELECT A.*, B.* from tabel1 A, tabel2B:
Este greșită sintactic, coloanele nefiind referite adecvat;
Este greșită sintactic, necesitând o clauză WHERE;
Este corectă sintactic și logic, permițând afișarea relaționată a liniilor din cele două tabele
Este greșită sintactic, coloanele nefiind referite adecvat;
Care dintre comenzile următoare se pot executa (presupunând tabela VANZARI) cu coloanele COD, PRODUS, PRET)?
. Select COD, PRODUS, MAX(PRET) from VANZARI order by COD;
Select COD, avg(PRET) from VANZARI having avg(PRET) >10 group by COD;
Select COD, avg(PRET) form VANZARI where avg(PRET)>10 group by COD;
Select COD, avg(PRET) from VANZARI where COD>10 group by COD;
Select MAX(PRET) from VANZARI group by COD;
Considerând tabela părinte (master) A și tabela copil (slave) B (relaționate între ele printr-o constrângere FOREIGN KEY pe o coloană comună Id), ambele având înregistrări, care dintre interogările următoare returnează liniile din tabela părinte care nu au corespondent în tabela copil?
SELECT A.*, B.id from A,B where A.id=B.id;
SELECT A.*, B.id from A,B where A.id=B.id(+) and B.id is null;
SELECT A.*, B.id from A,B where A.id=B.id(+) and A.id is null;
SELECT A.*, B.id from A,B where A.id=B.id(+);
Fie tabela TAB1 având câmpurile cnp(cheie primară) și nume. Considerând vederea VED1, creată cu comanda CREATE view VED1 as (select nume from tab1), care din comenzile următoare nu se pot executa?
INSERT INTO ved1 VALUES (‘ion’);
SELECT cnp, nume FROM ved1;
SELECT * FROM ved1;
DELETE FROM ved1;
23. Pentru o operație DELETE declanșatoare a unui trigger (corect sintactic și funcțional) declanșat la nivel de linie, construcțiile de tipul :NEW din corpul trigger-ului vor conține la un moment dat:
Valori NULL;
Valori (nule sau nenule) din linia ștearsă;
Valori (nule sau nenule) din liniile șterse;
Nu pot fi utilizare, semnalându-se eroare;
24. Considerând tabela DEPOZIT (ID, PRODUS, PRET_BUCATA, STOC) și tabela VANZARI (ID, CANTITATE, PRET_TOTAL), relaționate între ele printr-o constrângere FOREIGN KEY pe o coloană comună Id, implementarea printr-un trigger (declanșat la adăugarea unei linii în tabela VANZARI) a recalculare a coloanei STOC=STOC-CANTITATE, implică (în corpul trigger-ului) o comandă de genul:
:NEW.STOC:=...;
UPDATE DEPOZIT set STOC=... where Id:=NEW.Id;
:NEW.STOC:=... where Id:=NEW.Id;
UPDATE DEPOZIT set STOC=... where Id=:NEW.Id;
La o execuție a unei comenzi SQL DELETE, aceasta poate să
Șteargă o tabelă;
Șteargă strict doar o linie din mai multe tabele;
Șteargă oricâte linii dintr-o tabelă
Șteargă strict doar o linie dintr-o tabelă;
Considerând tabela TABELA (cu coloanele Col1, Col2,...) având toate liniile (și implicit celulele) completate cu date, dintre comenzile următoare care sunt cele două comenzi echivalente funcțional (având efect similar)?
SELECT COUNT(Col2) , SUM (Col1), SUM(Col1) from TABELA;
SELECT COUNT(Col2), SUM(*) from TABELA;
SELECT COUNT(*) SUM(Col2) from TABELA;
SELECT COUNT(Col2), SUM(Col2) from TABELA;
Afișarea informației dintr-o tabelă într-o ordine ascendentă/crescătoare se poate face utilizând:
. Comanda SELECT cu clauza ORDER BY;
Comanda SELECT cu clauza GROUP BY și parametrul ASC;
Comanda SELECT cu clauza ASC;
Comanda CREATE TABLE cu clauza ORDER ASC;
Care dintre următoarele comenzi returnează o valoare NULL?
SELECT NVL(NULL,0) from DUAL;
SELECT NVL(‘’,NULL) from DUAL;
SELECT NVL(0,NULL) from DUAL;
SELECT NVL(NULL,) from DUAL;
Fie tabela UNU având coloanele id(int primary key) și nume(varchar(12)), conținând două linii completate cu date. Care dintre comenzile următoare nu poate fi executată?
ALTER TABLE unu DROP COLUMN nume ;
ALTER TABLE unu DROP primary key;
ALTER TABLE unu ADD salariu not null;
ALTER TABLE unu MODIFY id float;
O sesiune EXCEPTION poate să apară:
Doar în cadrul unei proceduri stocate;
În cadrul unei funcții, proceduri stocate sau trigger;
Doar în cadrul unui trigger;
Doar in cadrul unei functii
Considerându-se tabela ‘table1’ cu 3 câmpuri (id, nume, varsta), adăugarea unei noi linii se poate face cu comanda:
INSERT INTO table1 VALUES (10,’ion’,20);
INSERT INTO table1(id, nume, varsta) VALUES (10,’ion’,20);
UPDATE INTO table1(id, nume, varsta) VALUES (10,’ion’,20);
APPEND INTO table1(id, nume, varsta) VALUES (10,’ion’,20);
O comandă SQL: ALTER TABLE angaj DROP COLUMN unu, încearcă să:
Șteargă coloanele tabelei angaj;
Comanda nu este corect sintactic;
Șteargă coloana unu a tabelei angaj;
Șteargă tabela angaj având coloana unu;
În cadrul unei funcții, este obligatorie utilizarea cel puțin a unei comenzi de genul:
RETURN variabila/expresie;
RETURN;
RETURN tip_variabila;
Nici una dintre variantele propuse;
Condiționarea execuției corpului unui trigger se face cu:
Utilizarea clauzei condiționale WHEN, precedând secțiunea BEGIN...END;
Utilizarea unei comenzi condiționale IF sau EXIT WHEN în corpul triggerului;
Condiționarea execuției se face funcție de comanda declanșatoare (AFTER sau BEFORE);
Utilizarea clauzei condiționale WHEN, în secțiunea BEGIN...END;
Pentru preluarea de date externe (din baza de date în variabile interne din cadrul corpului unui trigger), care dintre afirmațiile următoare sunt corecte?
Se folosesc parametrii de intrare din definiția trigger-ului;
Un trigger nu are parametrii de intrare.
Se folosesc comenzi PL/SQL de genul SELECT...INTO...;
Nu pot fi preluate date externe în corpul unui trigger;
Considerând o tabelă ANGAJATI (ID primary key, NUME, SALAR) având completate mai multe linii, preluarea într-o variabilă (Pl/SQL) VAR1 a conținutului unei anumite celule aferente coloanei SALAR se face cu o comandă de genul:
SELECT SALAR from ANGAJATI into VAR1 where ID=...;
SELECT SALAR into VAR1 from ANGAJATI;
SELECT SALAR into VAR1 from ANGAJATI where ID=...;
SELECT * from ANGAJATI into VAR1 where SALAT=...;
Care dintre următoarele comenzi returnează totalul valorilor coloanei PRET din tabela VANZARI?
SELECT SUM(pret) FROM vanzari;
SELECT SUM(pret) WHERE vanzari;
SELECT SUM(*) FROM vanzari.pret;
SELECT TOTAL(pret) FROM vanzari;
In contextul in care campul „id” este creat cu constrangerea UNIQUE comanda SQL: CREATE TABLE sectie1 AS SELECT nume FROM sectie2 WHERE ID=10 are ca efect:
Creaza o tabela vida ‘sectie 1’, cu un singur camp ‘nume’ de acelasi tip cu campul ‘id’ al tabelei ‘sectie 2’;
Creaza o tabela virtuala (VIEW) cu numele ‘sectie 2’ pe baza informatiei din campul ‘nume’ al tabelei ‘sectie 1’.
Creaza o tabela noua avand toate campurile tabelei ‘sectie 2’, dar doar campul ‘nume’ este completat cu informatia din campul ‘nume’al tabelei ’sectie2’ respectand clauza WHERE, restul fiind necompletate;
creaza o tabela noua ‘sectie 1’ cu un singur camp ‘nume’ continand informatia din campul ‘nume’ al tabelei ‘sectie 2’ respectand clauza WHERE.
Care dintre interogariile urmatoare poate returna si liniile din tabela TAB care contin ‚Dan’ in coloana NUME?
SELECT * from TAB where NUME like ’D_%’
Cate linii poate returna comanda: SELECT nume, MIN(salar) AS „minim”, MAX(salar) FROM angajati2?
Lipsa clauzei WHERE * conditie , numarul de linii este egal cu numarul de intregistrari al tabelei
. O singura linie deoarece sunt utilizate functii de grup
Comanda este gresita la executia ei, semnalandu-se eroare
Se vor returna atatea linii cate articole au valoarea minima, respectiv maxim in campul 'salar'.
In cadrul unui bloc PL/SQL, care dintre urmatoarele afirmatii sunt corecte?
O comanda SELECT poate fi utilizata cu clauza INTO (ca si comanda PL/SQL)
Comanda RETURN, fara precizarea unui parametru de iesire returnat, poate fi folosita:
In corpul unei proceduri stocate, asigurand iesirea din procedura, asigurand iesirea din procedura, respectiv in corpul unui declansator(trigger)
Corpul unei functii asigurand iesirea din functie
Corpul unei functii asigurand returnarea unei valori NULL.
Doar in corpul unei proceduri stocate asigurand iesirea din procedura.
Care este efectul comenzii: SELECT nume, 12*salar AS salariul FROM angajati?
Afiseaza intreaga informatie din campurile ‘nume’ si ‘salar’, pe acesta din urma actualizandu-l in tabela prin inmultire cu 12 si modificandu-i numele in ‘salariul’
Afiseaza intreaga informatie din campul ‘nume’ si din campul ‘salar’ multiplicata cu 12, aceasta din urma, la afisare, primid numele de coloana ‘salariul’.
Afiseaza, pentru linia curenta a tabelei, informatia din campurile ‘nume’ si ‘salar’ pe acesta din urma actualizandu-l in tabela prin inmultire cu 12 si modificandu-u numele in ‘salariul’.
Afiseaza, pentru toate liniile tabelei, informatia din campurile ‘nume’ si ‘salar’, creand totodata in tabela si un camp nou numit ‘salariul’.
Comenziile COMMIT si ROLLBACK pot fi utilizate:
In cadrul unei proceduri stocate
Care dintre informatiile aferente comenzii urmatoare sunt corecte (in contextul semnificatiei datelor din tabela) : CREATE TABLE tabel1 (cod_angajat INT, nume_angajat VARCHAR, salar NUMBER)
Comanda este gresita sintactic //trebuie neaparat dimensiunea la varchar
Care dintre informatiile aferente comenzii urmatoare sunt corecte (in contextul semnificatiei datelor din tabela) : CREATE TABLE tabel1 (cod_angajat INT, nume_angajat CHAR, salar INT)
Comanda este corecta sintactic, nu are sens functional datorita dimensionarii insuficiente;
Pentru a avea sens functional, cuvantul cheie CHAR ar trebui inlocuit cu VARCHAR;
Comanda este corecta atat sintactic cat si functional (in contextul semnificatiei datelor stocabile in tabela);
Comanda este gresita sintactic, fiind necesara precizarea unor dimensiuni de campuri;
În cadrul unei funcții, este obligatorie utilizarea cel puțin a unei comenzi de genul
DECLARE;
. Nici una dintre variantele propuse;
RETURN valoare;
RETURN;
COMMIT sau ROLLBACK
Fie tabela TAB1 având câmpurile cnp(cheie primară) și nume. Considerând vederea VED1, creată cu comanda CREATE view VED1 as (select * from tab1 WHERE cnp>10), care din comenzile următoare nu se pot executa?
SELECT cnp FROM ved1;
SELECT * FROM ved1;
UPDATE ved1 WHERE CNP>10; nu e buna fiindca trebuia SET dupa UPDATE
INSERT INTO ved1 VALUES(’ION’); nu e buna fiindca aveam in values si cnp, nu doar ‚ion’
DELETE FROM ved1;
Modificarea definitiei unui camp ’nume’ (de tip VARCHAR(10)) al unei tabele ’evidenta’ se poate face cu comanda:
ALTER TABLE evidenta MODIFY nume VARCHAR(30);
ALTER TABLE evidenta ALTER nume VARCHAR(13);
ALTER TABLE evidenta CHANGE nume VARCHAR(30);
ALTER TABLE evidenta CHANGE nume VARCHAR(30);
Care dintre comenziile urmatoare sunt corecte (presupunand ca exista tabela TABELA cu coloanele UNU si DOI)
SELECT count(1), min(*) FROM TABELA
. SELECT * from TABELA for UPDATE
INSERT INTO TABELA VALUES(&var)
SELECT TABELA.* from TABELA group by 1
Ce face comanda SELECT COUNT (DISTINCT prof FROM) ANGAJATI?
Afiseaza liniile distincte dupa campul prof din tabela angajati, necontinand valoarea NULL
Afiseaza nr de linii din tabela angajati, distincte dupa campul prof si care nu contin valoarea NULL in coloana mentionata
Numara cate linii distincte sunt in tabela angajati
Numara si afiseaza liniile distincte dupa campul ’prof’ din tabela ’angajati’
In contextul comenzii SQL urmatoare: create table EVIDENTA(cod integer NOT NULL, nume VARCHAR(10), constraint constrangere UNIQUE(cod) )
Campul cod trebe sa fie obligatoriu definit de tip INTEGER
Campul cod trebe sa fie obligatoriu definit de tip NOT NULL
Campul cod trebe sa fie obligatoriu definit de tip INTEGER si NOT NULL
Campul cod NU trebe sa fie obligatoriu definit de tip NOT NULL
Efectul comenzii SELECT cod_sectie, AVG(salar) from ANGAJAT group by cod_sectie este:
Afiseaza informatia din campul cod_sectie si media aritmetica a salariului salar pe angajati, ordonat dupa cod_sectie
Comanda este eronata deoarece se foloseste un nume explicit de camp cod_sectie si o functie de grup AVG
Calculeaza media salariului pe sectia curenta si va afisa o singura linie cu cod_sectie si media calculata
Afiseaza codul sectiei cod_sectie si media aritmetica a salariului pe sectie
Referitor la comanda urmatoarele observatii sunt corecte: create TABLE tabel1 (ID int NOT NULL PRIMARY KEY, produs VARCHAR(10) UNIQUE, caracteristici VARCHAR(200) UNIQUE NOT NULL)
Este obligatorie clauza not null in contextul unei chei primare
Dimensiunea 200 nu este prea mare pt un camp de timp varchar
In contextul unei chei primare constrangerea not null explicit precizata este obligatorie
Comanda nu se poate executa deoarece nu pot definite 2 chei unice
Fie tabela SAL avand campurile nr(cheie primara) nume si salariu, considerand vederea ved creata cu comanda: CREATE view ved AS (select * from sal where salar<1000) care din comenziile urmatoare nu se pot executa?
. INSERT INTO ved (salar) values(500)
INSERT INTO ved values(1,’ion’,2000)
INSERT INTO ved (nr, salar) values(1,1900)
INSERT INTO ved (nume) values(ion)
Parametrii de tip IN OUT sunt specifice urmatoarele obiecte PL/SQL
Oricarui bloc de cod PL/SQL
Procedurilor stocate si functiilor
Doar procedurilor stocate
Doar triggerelor acest tip fiind specific lor
Referitor la un trigger urmatoarele afirmatii sunt corecte:
Intr un trigger definit la nivel de linie unei constructii :OLD I se pot atribui valori doar daca triggerul este de tip BEFORE
Intr un trigger definit la nivel de linie unei constructii :OLD I se pot atribui valori doar daca triggerul este de tip AFTER
Intr un trigger definit la nivel de comanda unei constructii :OLD I se pot atribui valori doar daca triggerul este de tip BEFORE
. Intr un trigger definit la nivel de linie unei constructii :NEW I se pot atribui valori doar daca triggerul este de tip BEFORE
In cadrul sectiunii de definitii a parametrilor de intrare pt o functie sau o procedura stocata este necesara:
Precizarea numelor parametrilor, a tipului
Precizarea numelor parametrilor, a tipului si a dimensiunii lor
Precizarea numelor parametrilor, urmand ca tipul lor sa fie precizat in zona DECLARE din corpul functiei sau procedurii
Doar in cazul unei functii pot exista parametrii de intrare, fiind necesara in acest caz precizarea numelor parametrilor, a tipului si a dimensiunii lor
Care dintre comenzile următoare se pot executa (presupunând tabela VANZARI) cu coloanelePRODUS, PRET)?
Select PRODUS, count(*) from VANZARI;
Select min(*) from VANZARI;
=Select PRET, max(*) from VANZARI group by PRET;
Select count(*), min(PRET) from VANZARI;
Utilizarea unor parametrii de apel pentru un trigger presupune:
Un trigger nu are parametrii de apel,acestia fiind specifici procedurilor stocate si functiilor
. Precizarea doar a tipului lor, nu si a dimensiunii
Precizarea tipului si a dimensiunii lor unde este cazul
. Precizarea doar a categoriei din care fac parte (IN, OUT, IN OUT)
In corpul unei functii, o comanda „RETURN...” poate sa apara scriptic:
Ori de cate ori este nevoie (functie de ramificatiile codului) insa doar una se va executa obligatoriu returnand ceva.
O singura data, functie de sintaxa putand sa returneze sau sa nu returneze o valoare
Nu este obligatoriu o astfel de comanda, dar ea poate sa apara ori de cate ori este nevoie functie de ramificatiile codului
Doar o singura data asigurand iesirea din functie sau returnand ceva.
{"name":"BD TOT", "url":"https://www.quiz-maker.com/QPREVIEW","txt":"Testați-vă cunoștințele despre SQL și PL\/SQL cu acest quiz cu 61 de întrebări! Fie că sunteți începător sau expert, acest quiz vă va ajuta să vă consolidați înțelegerea asupra funcțiilor, comenzilor și conceptelor SQL.Quiz-ul include:Întrebări variate pe teme de SQLEvaluarea cunoștințelor într-un mod interactivFeedback imediat despre răspunsurile tale","img":"https:/images/course2.png"}