Limbajul de Interogare Structurat (SQL) reprezintă un instrument esențial pentru specialiștii în baze de date și analiștii de date, fiind utilizat pentru a realiza interogări în bazele de date. Este un standard larg răspândit în dezvoltarea de aplicații web, software și alte platforme digitale.
SQL permite accesul și manipularea eficientă a datelor stocate în baze de date, inclusiv crearea și modificarea structurii tabelelor, a coloanelor, dar și interogarea propriu-zisă a informațiilor prin intermediul unor comenzi specifice.
Acest articol își propune să ofere un ghid util pentru cei care se pregătesc pentru un interviu de angajare în domeniul bazelor de date, fie că vorbim despre un inginer de date, analist de date sau administrator de baze de date. Veți găsi aici o serie de întrebări și răspunsuri frecvente, menite să vă familiarizeze cu cerințele unui astfel de interviu.
Care sunt principalele comenzi SQL?
Printre comenzile SQL esențiale, se numără:
SELECT
– folosită pentru a extrage date specifice dintr-o bază de date.CREATE TABLE
– utilizată pentru a crea tabele noi în baza de date.DELETE
– permite ștergerea datelor din tabelele existente.INSERT INTO
– este folosită pentru a adăuga noi seturi de date în tabele.ALTER DATABASE
– folosită pentru a modifica structura unei baze de date.CREATE DATABASE
– permite crearea de noi baze de date.UPDATE
– actualizează informațiile existente în cadrul bazei de date.
Care sunt cele patru categorii majore de instrucțiuni SQL?
Instrucțiunile SQL sunt clasificate în următoarele categorii principale:
- Instrucțiuni DDL (Limbajul de Definiție a Datelor).
- Instrucțiuni DML (Limbajul de Manipulare a Datelor).
- Instrucțiuni DCL (Limbajul de Control al Datelor).
- Instrucțiuni TCL (Limbajul de Control al Tranzacțiilor).
Ce reprezintă cheia primară în SQL?
Cheia primară este o coloană sau un grup de coloane care identifică în mod unic fiecare rând dintr-un tabel al bazei de date. Este un concept crucial în designul bazelor de date SQL, deoarece asigură integritatea datelor prin atribuirea unui identificator unic fiecărei înregistrări. Un tabel poate avea o singură cheie primară, formată din unul sau mai multe câmpuri.
Ce sunt tipurile de date în SQL?
Tipul de date specifică ce fel de informații poate stoca un obiect, cum ar fi secvențe binare, date numerice, caractere, valori financiare, date calendaristice, etc.
Tipurile de date în SQL se împart în următoarele categorii:
- Numerice exacte
- Numerice aproximative
- Data și ora
- Șiruri de caractere
- Șiruri de caractere Unicode
- Șiruri binare
Unde sunt stocate numele de utilizator și parolele în SQL Server?
Numele de utilizator și parolele sunt stocate în tabelele de sistem sys.server_principals
și respectiv sys.sql_logins
. Este important de menționat că parolele nu sunt stocate în format text, ci sunt criptate.
Ce este injecția SQL?
Injecția SQL reprezintă un tip frecvent de atac cibernetic, prin care atacatorii pot manipula baza de date a unei aplicații pentru a obține acces neautorizat la date. Consecințele pot include pierderi financiare sau de informații sensibile. Prevenirea este cheia protecției împotriva acestui tip de atac.
Ce este un trigger în SQL și care sunt tipurile sale?
Un trigger este o procedură stocată specială care se execută automat atunci când are loc un anumit eveniment în cadrul serverului de baze de date. Triggerele sunt utilizate pentru a efectua operații, precum validarea datelor, înainte sau după modificarea datelor, folosind instrucțiuni DDL și DML.
Există trei tipuri principale de triggere: LOGON, DDL și DML:
- Triggere LOGON: Sunt activate când un utilizator încearcă să se conecteze.
- Triggere DDL: Se activează atunci când este executată o comandă DDL, cum ar fi
CREATE
,ALTER
sauDROP
. - Triggere DML: Se activează când o comandă DML modifică datele, cum ar fi
INSERT
,UPDATE
sauDELETE
.
Cum diferențiați între funcțiile pe un singur rând și cele pe mai multe rânduri?
Funcțiile pe un singur rând acționează asupra unui singur rând din tabel și returnează un singur rezultat pentru fiecare rând. Conversiile de lungime sau majuscule sunt exemple de funcții pe un singur rând.
Funcțiile pe mai multe rânduri, cunoscute și ca funcții de grup, procesează mai multe rânduri și returnează un singur rezultat. Exemple includ funcții de agregare, cum ar fi SUM
, AVG
sau COUNT
.
Ce este normalizarea bazei de date și care sunt principalele sale forme în SQL?
Normalizarea bazei de date este un proces de organizare a datelor, care are ca scop reducerea redundanței și îmbunătățirea accesibilității. Prin normalizare, tabelele și coloanele sunt aranjate astfel încât să se asigure că dependențele sunt gestionate corect prin intermediul constrângerilor de integritate a bazei de date.
Principalele forme de normalizare sunt:
- Prima formă normală (1 NF)
- A doua formă normală (2 NF)
- A treia formă normală (3 NF)
- Forma normală Boyce-Codd (BCNF sau 4 NF)
Ce sunt indecșii și constrângerile în SQL?
Indecșii sunt structuri de date care accelerează căutarea datelor în tabele. Aceștia optimizează performanța interogărilor și îmbunătățesc viteza de recuperare a datelor.
Constrângerile sunt reguli care specifică modul în care datele pot fi stocate și manipulate în baza de date. Ele asigură integritatea datelor și previn introducerea de valori invalide.
Care sunt constrângerile SQL utilizate frecvent?
Cele mai frecvente constrângeri SQL includ:
CREATE INDEX
: Creează indecși pentru a accelera căutările.FOREIGN KEY
: Definește relația dintre tabele prin conectarea cheii externe la cheia primară a altui tabel.DEFAULT
: Atribuie o valoare implicită pentru câmpurile care nu primesc o valoare explicită.UNIQUE
: Asigură unicitatea valorilor dintr-o coloană.PRIMARY KEY
: Identifică în mod unic fiecare rând dintr-un tabel.NOT NULL
: Specifică faptul că o coloană nu poate avea valori NULL.CHECK
: Verifică dacă valorile dintr-o coloană respectă o anumită condiție.
Este NULL egal cu 0 în SQL?
Valoarea NULL în SQL indică absența unei valori sau o valoare necunoscută. Nu este echivalentă nici cu un spațiu (‘ ‘) nici cu 0. Nu poate fi comparată folosind operatorii obișnuiți (=, >, etc.), deoarece nu este nici egală, nici inegală cu alte valori.
Cum se pot preveni atacurile de tip injecție SQL?
Pe lângă scanările periodice și testele de penetrare, metodele de securitate, cum ar fi validarea intrărilor, curățarea datelor, utilizarea declarațiilor pregătite și a interogărilor SQL parametrizate, sunt esențiale pentru prevenirea injecțiilor SQL. Utilizarea unui firewall poate oferi o protecție suplimentară.
Ce este Dynamic SQL și când se utilizează?
Dynamic SQL permite modificarea interogărilor în timpul execuției, pe baza unor criterii variabile, cum ar fi data sau ora curentă. Această flexibilitate permite adaptarea logică a operațiunilor, în funcție de condițiile de runtime.
SQL-ul dinamic este util în diverse scenarii, de la dezvoltarea de noi aplicații și îmbunătățirea bazelor de date, până la adăugarea de funcționalități de depozit de date.
Care sunt diferitele tipuri de chei în SQL?
Principalele tipuri de chei în SQL includ:
- Cheia primară: Identifică în mod unic fiecare rând dintr-un tabel, nepermițând valori NULL.
- Cheia externă: Leagă un tabel de altul, referind cheia primară din tabelul legat.
- Super-cheia: Un set de atribute care pot identifica în mod unic rândurile, chiar dacă nu toate atributele sunt necesare.
- Cheia candidat: Un subset de super-chei care identifică în mod unic înregistrările, fiecare atribut fiind relevant.
- Cheia compusă: O combinație de mai multe coloane care identifică în mod unic rândurile.
Care sunt tipurile de indecși în SQL?
Tipurile de indecși în SQL includ:
- Indice hash
- Indice non-cluster optimizat pentru memorie
- Indice cluster
- Indice non-cluster
- Indice unic
- Indice columnstore
- Indice cu coloane incluse
- Indice pe coloane calculate
- Indice filtrat
- Indice spațial
- Indice XML
- Indice text full-text
Ce este un „buffer pool” și care sunt avantajele sale?
Buffer pool, cunoscut și ca buffer cache, este o zonă de memorie utilizată pentru stocarea în cache a paginilor de date accesate frecvent de resursele SQL Server. Mărimea buffer pool-ului poate fi configurată și influențează cantitatea de date care poate fi păstrată în memorie.
Beneficiile includ:
- Îmbunătățirea performanței operațiilor I/O.
- Creșterea volumului de tranzacții procesate.
- Reducerea latenței operațiilor I/O.
- Accelerarea operațiilor de citire.
Ce este dependența și care sunt tipurile sale?
În SQL, o dependență se stabilește atunci când un obiect este referit, prin nume, de un alt obiect. Obiectul care conține o referință este numit „entitate de referință”, iar cel referit este „entitate referită”.
Tipuri de dependențe includ:
- Dependență funcțională
- Dependență funcțională completă
- Dependență multi-valoare
- Dependență tranzitivă
- Dependență parțială
Ce sunt îmbinările (JOIN-uri) SQL și care sunt cele mai populare?
Îmbinările (JOIN-uri) în SQL permit combinarea datelor din două sau mai multe tabele, generând un set de rezultate care include informații din fiecare tabel. Acestea sunt fundamentale în gestionarea relațiilor dintre tabele.
Principalele tipuri de JOIN-uri sunt: INNER JOIN
, OUTER JOIN
(LEFT JOIN
, RIGHT JOIN
, FULL OUTER JOIN
), CROSS JOIN
și SELF JOIN
.
Care sunt operatorii de mulțimi (set operators) în SQL?
Operatorii de mulțimi sunt folosiți pentru a combina seturi de rezultate din una sau mai multe interogări. Deși similari cu JOIN-urile, operatorii de mulțimi operează pe rânduri, în timp ce JOIN-urile operează pe coloane. Exemple includ UNION
, UNION ALL
, INTERSECT
și EXCEPT
.
Concluzie
Sperăm că aceste întrebări și răspunsuri vă vor oferi o perspectivă clară asupra tipurilor de subiecte discutate într-un interviu SQL. O pregătire temeinică, completată de studiul aprofundat al limbajului SQL și exersarea întrebărilor de interviu, vă vor crește șansele de succes.
Pentru clarificări suplimentare asupra interogărilor SQL, vă recomandăm să consultați și o foaie de cheat SQL.
Pentru a dobândi experiență practică, vă sugerăm să utilizați platformele de practică SQL.