Următoarele sunt câteva dintre cele mai frecvente întrebări SQL din interviurile de angajare.

Înțelegându-le, veți fi mai bine pregătiți pentru viitoarele interviuri tehnice.

Ce este o îmbinare interioară în SQL?

Acesta este tipul implicit de asociere dacă nu este specificată nicio asociere. Returnează toate rândurile în care există cel puțin o potrivire în ambele tabele.

SELECT * FROM A x JOIN B y ON y.aId = x.Id

Ce este un join stâng în SQL?

O îmbinare la stânga returnează toate rândurile din tabelul din stânga, iar rândurile potrivite din tabelul din dreapta. Rândurile din tabelul din stânga vor fi returnate chiar dacă nu a existat nicio potrivire în tabelul din dreapta. Rândurile din tabelul din stânga fără potrivire în tabelul din dreapta vor avea null pentru valori de tabel corecte.

SELECT * FROM A x LEFT JOIN B y ON y.aId = x.Id

Ce este un acces corect în SQL?

O îmbinare dreaptă returnează toate rândurile din tabelul din dreapta, iar rândurile potrivite din tabelul din stânga. În fața unei îmbinări la stânga, aceasta va returna toate rândurile din tabelul din dreapta chiar și acolo unde nu există nicio potrivire în tabelul din stânga. Rândurile din tabelul din dreapta care nu au nicio potrivire în tabelul din stânga vor avea null valori pentru coloanele din tabelul din stânga.

SELECT * FROM A x RIGHT JOIN B y ON y.aId = x.Id

Ce este un join complet în SQL?

O asociere completă returnează toate rândurile pentru care există o potrivire în oricare dintre tabele. Deci, dacă există rânduri în tabelul din stânga care nu au potriviri în tabelul din dreapta, acestea vor fi incluse. La fel ca și dacă există rânduri în tabelul din dreapta care nu au potriviri în tabelul din stânga, acestea vor fi incluse.

SELECT Customers.CustomerName, Orders.OrderID
FROM Customers
FULL OUTER JOIN Orders
ON Customers.CustomerID=Orders.CustomerID
ORDER BY Customers.CustomerName

Care este rezultatul următoarei comenzi?

  DROP VIEW view_name

Aici va fi o eroare deoarece nu putem efectua o operațiune DML pe o vizualizare.

Putem efectua o revenire după utilizarea comenzii ALTER?

Nu, deoarece ALTER este o comandă DDL și serverul Oracle efectuează un COMMIT automat atunci când sunt executate instrucțiunile DDL.

Care este singura constrângere care impune reguli la nivel de coloană?

NOT NULL este singura constrângere care funcționează la nivelul coloanei.

Care sunt pseudocoloanele din SQL? Dați câteva exemple?

O pseudocolumă este o funcție care returnează o valoare generată de sistem. Motivul pentru care este cunoscut ca fiind așa, deoarece o pseudocolumnă este o valoare atribuită Oracle utilizată în același context cu o coloană de baze de date Oracle, dar nu este stocată pe disc.

    ROWNUM, ROWID, USER, CURRVAL, NEXTVAL etc.

Creați un utilizator my723acct cu parola kmd26pt. Folosiți utilizatorul date și spații de tabele de date temporare furnizate de PO8 și oferă acestui utilizator 10M spațiu de stocare în utilizator date și 5M spațiu de stocare în date_temporare.

    CREATE USER my723acct IDENTIFIED BY kmd26pt
    DEFAULT TABLESPACE user_data
    TEMPORARY TABLESPACE temporary_data
    QUOTA 10M on user_data QUOTA 5M on temporary_data

Creați rolul de rol Mese și_vizualizări.

    CREATE ROLE role_tables_and_views

Acordați rolului întrebării anterioare privilegiile de conectare la baza de date și privilegiile de a crea tabele și vizualizări.

Privilegiul de conectare la baza de date este CREAȚI SESIUNEA Privilegiul de a crea tabela este CREAȚI TABEL Privilegiul de a crea vizualizarea este CREAȚI VIZIUNEA

    GRANT Create session, create table, create view TO role_tables_and_views

Acordați rolul anterior în întrebare utilizatorilor Anny și Rita

    GRANT role_tables_and_views TO anny, rita

Creați un utilizator my723acct cu parola kmd26pt. Folosiți utilizatorul date și spații de tabele de date temporare furnizate de PO8 și oferă acestui utilizator 10M spațiu de stocare în utilizator date și 5M spațiu de stocare în date_temporare.

    CREATE USER my723acct IDENTIFIED BY kmd26pt
    DEFAULT TABLESPACE user_data
    TEMPORARY TABLESPACE temporary_data
    QUOTA 10M on user_data QUOTA 5M on temporary_data

Creați rolul de rol Mese și_vizualizări.

    CREATE ROLE role_tables_and_views

Acordați rolului întrebării anterioare privilegiile de conectare la baza de date și privilegiile de a crea tabele și vizualizări.

Privilegiul de conectare la baza de date este CREAȚI SESIUNEA Privilegiul de a crea tabela este CREAȚI TABEL Privilegiul de a crea vizualizarea este CREAȚI VIZIUNEA

    GRANT Create session, create table, create view TO role_tables_and_views

Acordați rolul anterior din întrebare utilizatorilor Anny și Rita.

    GRANT role_tables_and_views TO anny, rita

Scrieți o comandă pentru a schimba parola utilizatorului rita de la abcd la dfgh.

    ALTER USER rita IDENTIFIED BY dfgh

Utilizatorii rita și anny nu au privilegii SELECT pe tabelul INVENTAR care a fost creat de SCOTT. Scrieți o comandă pentru a permite SCOTT să acorde utilizatorilor privilegii SELECT pe aceste tabele.

    GRANT select ON inventory TO rita, anny

Utilizatorul rita a fost transferat și nu mai are nevoie de privilegiul care i-a fost acordat prin tabelele de roluri și_vizualizări. Scrieți o comandă pentru a o elimina din privilegiile date anterior, cu excepția faptului că ea încă se putea conecta la baza de date.

    REVOKE select ON scott.inventory FROM rita
    REVOKE create table, create view FROM rita

Utilizatorul rita care a fost transferat se mută acum la o altă companie. Deoarece obiectele create de ea nu mai sunt folosite, scrieți o comandă pentru a elimina acest utilizator și toate obiectele sale.

Aici este necesară opțiunea CASCADE pentru a elimina toate obiectele utilizatorului din baza de date.

   DROP USER rita CASCADE

### User rita has been transferred and no longer needs the privilege that was granted to her through the role role_tables_and_views. Write a command to remove her from her previous given priviliges except that she still could connect to the database.
``` sql    
    REVOKE select ON scott.inventory FROM rita
    REVOKE create table, create view FROM rita

Utilizatorul rita care a fost transferat se mută acum la o altă companie. Deoarece obiectele create de ea nu mai sunt folosite, scrieți o comandă pentru a elimina acest utilizator și toate obiectele sale.

Aici este necesară opțiunea CASCADE pentru a elimina toate obiectele utilizatorului din baza de date.

   DROP USER rita CASCADE

Scrieți o interogare SQL pentru a găsi al nouălea salariu cel mai mare din tabel.

   SELECT TOP 1 Salary
   FROM (
      SELECT DISTINCT TOP N Salary
      FROM Employee
      ORDER BY Salary DESC
      )
    ORDER BY Salary ASC