SQL este utilizat într-o mare varietate de lucrări de programare. Este important să vă familiarizați cu SQL dacă urmează să faceți un interviu în curând pentru o poziție software. Acest lucru este valabil mai ales dacă aveți de gând să intervievați la o companie de top tehnologie, cum ar fi Amazon, Apple sau Google.

Acest ghid va acoperi sintaxa SQL de bază ca o reîmprospătare și apoi va enumera câteva întrebări obișnuite de interviu SQL. Răspunsurile pentru toate întrebările sunt date și puteți utiliza aceste informații pentru a studia pentru interviul de programare.

Conţinut

Exemplu de sintaxă SQL de bază

SQL este un standard internațional (ISO), dar veți găsi unele diferențe între implementări. Acest ghid folosește MySQL ca exemplu, deoarece este cea mai populară implementare a SQL.

Cum se folosește o anumită bază de date

Iată comanda SQL utilizată pentru a selecta baza de date care conține tabelele pentru instrucțiunile SQL:

USE fcc_sql_guides_database; 

Clauzele SELECT și FROM

Utilizați SELECT pentru a determina ce coloane din datele pe care doriți să le afișați în rezultate. Există, de asemenea, opțiuni pe care le puteți utiliza pentru a afișa date care nu sunt o coloană de tabel.

Următorul exemplu prezintă două coloane selectate din tabelul „student” și două coloane calculate. Prima dintre coloanele calculate este un număr fără sens, iar cealaltă este data sistemului.

SELECT studentID, FullName, 3+2 AS five, now() AS currentDate FROM student;
imagine-1

Clauza WHERE

Clauza WHERE specifică o condiție în timpul obținerii datelor. Clauza WHERE este utilizată pentru a limita numărul de rânduri returnate. Este adesea folosit într-o instrucțiune SELECT, dar poate fi utilizat și în alte instrucțiuni, cum ar fi UPDATE și DELETE.

Iată sintaxa de bază a clauzei WHERE:

SELECT column1, column2
FROM table_name
WHERE [condition]

Condiția dintr-o clauză WHERE poate include operatori logici precum>, <, =, LIKE, NOT, AND, OR.

Iată un exemplu de statment SQL care folosește clauza WHERE. Se specifică faptul că, dacă oricare dintre studenți are anumite scoruri SAT (1000, 1400), nu vor fi prezentați:

SELECT studentID, FullName, sat_score, recordUpdated
FROM student
WHERE (studentID BETWEEN 1 AND 5
    OR studentID = 8
    OR FullName LIKE '%Maximo%')
    AND sat_score NOT IN (1000, 1400);
imagine-1

COMANDA DE (ASC, DESC)

ORDER BY ne oferă o modalitate de a sorta rezultatul setat de unul sau mai multe elemente din secțiunea SELECT.

Iată aceeași listă ca mai sus, dar sortată după numele complet al elevului. Ordinea de sortare implicită este ascendentă (ASC), dar pentru a sorta în ordinea opusă (descrescătoare) utilizați DESC, ca în exemplul de mai jos:

SELECT studentID, FullName, sat_score
FROM student
WHERE (studentID BETWEEN 1 AND 5
    OR studentID = 8
    OR FullName LIKE '%Maximo%')
    AND sat_score NOT IN (1000, 1400)
ORDER BY FullName DESC;
imagine-1

GRUPA CU ȘI AVÂND

GROUP BY ne oferă o modalitate de a combina rânduri și date agregate. Clauza HAVING este asemănătoare clauzei WHERE de mai sus, cu excepția faptului că acționează asupra datelor grupate.

Afirmația SQL de mai jos răspunde la întrebarea: „Ce candidați au primit cel mai mare număr de contribuții (ordonate după număr

) în 2016, dar numai cei care au avut mai mult de 80 de contribuții? ”

SELECT Candidate, Election_year, SUM(Total_$), COUNT(*)
FROM combined_party_data
WHERE Election_year = 2016
GROUP BY Candidate, Election_year
HAVING count(*) > 80
ORDER BY count(*) DESC;
Ordonarea acestui set de date într-o ordine descrescătoare (DESC) plasează candidații cu cel mai mare număr de contribuții în partea de sus a listei.

imagine-1

Întrebări comune pentru interviul SQL

Ce este o îmbinare interioară în SQL?

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

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.

Ce este un join stâng în SQL? null 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

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

pentru valori de tabel corecte.

Ce este un acces corect în SQL? null 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

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

valori pentru coloanele din tabelul din stânga.

Ce este o asociere completă sau asociere completă exterioară în SQL?

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

O îmbinare exterioară completă și o îmbinare completă sunt același lucru. Îmbinarea exterioară completă sau îmbinarea completă returnează toate rândurile din ambele tabele, potrivind rândurile oriunde se poate face o potrivire și plasând NULL-uri în locurile în care nu există niciun rând de potrivire.

DROP VIEW view_name

Care este rezultatul următoarei comenzi?

Acest lucru va duce la o eroare, deoarece nu puteți efectua o operație DML pe o vizualizare. O operațiune DML este orice operație care manipulează datele precum DROP, INSERT, UPDATE și DELETE.

Putem efectua o revenire după utilizarea comenzii ALTER? CREATE table Nu, deoarece ALTER este o comandă DDL și serverul Oracle efectuează un COMMIT automat atunci când sunt executate instrucțiunile DDL. Instrucțiunile DDL definesc structuri de date precum ALTER tableși

.

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?

ROWNUM, ROWID, USER, CURRVAL, NEXTVAL etc.

O pseudocolumn se comportă ca o coloană, dar nu este stocată de fapt în tabel, deoarece este vorba despre toate valorile generate. Valorile unei pseudocoloane pot fi selectate, dar nu pot fi inserate, actualizate sau șterse.

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 un utilizator „my723acct” cu parola „kmd26pt”. Utilizați „date_utilizator” și spații de tabelă de date temporare furnizate de PO8 și oferiți acestui utilizator 10M spațiu de stocare în „date_utilizator” și 5M spațiu de stocare în „date_temporare”. Creați rolulrole_tables_and_views

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.

    GRANT CREATE SESSION, CREATE TABLE, CREATE VIEW TO role_tables_and_views

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 Acordați rolului anterior în întrebare utilizatorilor Anny șirita

    GRANT role_tables_and_views TO anny, rita

. Scrieți o comandă pentru a schimba parola utilizatorului rita

    ALTER USER rita IDENTIFIED BY dfgh

de la „abcd” la „dfgh” Utilizatorii rita și Anny nu aveți privilegii SELECT pe tabelul INVENTAR care a fost creat deScott . Scrieți o comandă pentru a permite Scott

    GRANT select ON inventory TO rita, anny

pentru a acorda utilizatorilor privilegii SELECT pe aceste tabele. Utilizator rita a fost transferat și nu mai are nevoie de privilegiul care i-a fost acordat prin rolrole_tables_and_views

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

. Scrieți o comandă pentru a o elimina din privilegiile acordate anterior. Ar trebui să se poată conecta la baza de date. Utilizatorul rita

cine 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.

DROP USER rita CASCADE

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

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

Scrieți o interogare SQL pentru a găsi al nouălea cel mai mare „Salariu” din tabelul „Angajat”.

Concluzie