Corso
Che tu stia cercando un nuovo ruolo per mettere in gioco le tue competenze SQL o sia un hiring manager che sta per intervistare un candidato per una posizione aperta, conoscere le domande e risposte più comuni sui colloqui SQL è fondamentale.
Questo articolo elenca 99 domande e risposte sui colloqui SQL per il 2026, coprendo i temi chiave di SQL per aiutarti a prepararti, imparare e assumere in modo efficace, tra cui:
- Conoscenze di base: Definizioni chiare di RDBMS, chiavi e dialetti SQL.
- Padronanza tecnica: Approfondimenti su DDL vs DML, vincoli e indicizzazione.
- Logica delle query: Spiegazioni di Join, Subquery e funzioni di aggregazione.
- Applicazione pratica: Soluzioni di codice reali, come trovare l'ennesimo valore più alto o rimuovere duplicati.
- Domande basate su scenari: Problemi in stile colloquio su totali progressivi, rilevamento duplicati, analisi dei gap e altro.
Se vuoi approfondire ulteriormente conoscenze e competenze, valuta i nostri corsi completi su data engineering, tecnologie cloud e AWS.
Panoramica delle domande per i colloqui SQL
I colloqui SQL tendono a riflettere il modo in cui le persone imparano davvero il linguaggio.
All'inizio, è una questione di vocabolario e grammatica, come sapere cos'è una join, come funziona SELECT e la differenza tra DDL e DML.
Man mano che prendi dimestichezza, l'attenzione passa da "sai scrivere una query" a "sai scrivere la query giusta". Inizi a capire quando un indice aiuta, perché la normalizzazione conta e come comandi sottilmente diversi come DELETE e TRUNCATE si comportano sotto il cofano.
Al livello senior, la sintassi è data per scontata e il vero test è il problem solving: gestire duplicati, NULL, ex aequo e logiche di ranking con window function e CTE, e ragionare su transazioni, concorrenza e performance.
Per chi è a livello intermedio
-
Funzioni in SQL. Dovresti conoscere funzioni di aggregazione e scalari, oltre a funzioni built-in e definite dall'utente.
-
Comandi avanzati. Le domande possono riguardare join, chiavi primarie e esterne, indici e relazioni SQL.
-
Progettazione del database. Aspettati domande su normalizzazione, denormalizzazione e differenze tra varie istruzioni SQL come
DELETE,TRUNCATEeDROP. -
Query avanzate. Potrebbero chiederti di subquery, sia nidificate che correlate, e come svolgere compiti specifici come trovare l'ennesimo valore più alto in una colonna.
Domande generali sui colloqui SQL
Prima di passare alle domande tecniche, l'intervistatore potrebbe farti alcune domande generali sulla tua esperienza complessiva con SQL.\
Non preoccuparti se la tua esperienza con SQL è limitata: è qualcosa che il tuo intervistatore probabilmente conosce già dal tuo CV. Dal momento che sono comunque interessati a parlarti, il tuo profilo è stato ritenuto adatto alla loro azienda. Inoltre, va benissimo se hai lavorato solo con un dialetto SQL. Ricorda che tutti i dialetti SQL sono abbastanza simili. Quindi, conoscere bene anche solo uno di essi è un'ottima base per imparare gli altri.
1. Che cos'è SQL?
Sta per Structured Query Language, ed è un linguaggio di programmazione usato per interagire con i sistemi di gestione di database relazionali (RDBMS). Include il recupero, l'aggiornamento, l'inserimento e la rimozione di dati dalle tabelle.
2. Cosa sono i dialetti SQL? Fai qualche esempio.
Le varie versioni di SQL, gratuite e a pagamento, sono chiamate anche dialetti SQL. Tutti i dialetti SQL hanno una sintassi molto simile e differiscono in modo poco significativo solo per funzionalità aggiuntive. Alcuni esempi sono Microsoft SQL Server, PostgreSQL, MySQL, SQLite, T-SQL e Oracle.
3. Quali sono le principali applicazioni di SQL?
Con SQL possiamo:
- creare, eliminare e aggiornare tabelle in un database
- accedere, manipolare e modificare dati in una tabella
- recuperare e riassumere le informazioni necessarie da una o più tabelle
- aggiungere o rimuovere determinate righe o colonne da una tabella
Domande SQL per principianti
L'intervistatore potrebbe rompere il ghiaccio iniziando con domande più semplici:
4. Che cos'è un'istruzione SQL?
Conosciuta anche come comando SQL. È una stringa di caratteri interpretata dal motore SQL come un comando valido ed eseguita di conseguenza. Alcuni esempi di istruzioni SQL sono SELECT, CREATE, DELETE, DROP, REVOKE e così via.
5. Che cos'è una query SQL?
Una query è un frammento di codice scritto in SQL per accedere o modificare dati in un database.
Ci sono due tipi di query SQL: per il recupero dei dati e per la modifica dei dati. Le prime servono a recuperare i dati necessari (inclusi limitazione, raggruppamento, ordinamento dei dati, estrazione da più tabelle, ecc.), mentre le seconde servono a creare, aggiungere, eliminare, aggiornare e rinominare i dati.
6. Che cos'è una subquery SQL?
Chiamata anche query interna, è una query inserita all'interno di un'altra query, o query esterna. Una subquery può comparire in clausole come SELECT, FROM, WHERE, UPDATE, ecc. È anche possibile avere una subquery dentro un'altra subquery. La subquery più interna viene eseguita per prima e il suo risultato viene passato alla query (o subquery) contenente.
7. Che cos'è una join SQL?
Una clausola usata per combinare e recuperare record da due o più tabelle. Le tabelle SQL possono essere unite in base alla relazione tra le colonne di tali tabelle. Dai un'occhiata al nostro tutorial sulle join SQL per più contesto, oltre alla nostra guida dedicata alle domande sui colloqui sulle join SQL.
8. Che cos'è un commento SQL?
Una spiegazione leggibile da umani di cosa fa uno specifico pezzo di codice. I commenti nel codice SQL possono essere su una sola riga (preceduti da due trattini --) o su più righe (come segue: /*comment_text*/). Quando il motore SQL esegue, ignora i commenti. Aggiungere commenti serve a rendere il codice più comprensibile per chi lo leggerà in futuro.
9. Che cos'è un alias SQL?
Un nome temporaneo assegnato a una tabella (o a una colonna di una tabella) durante l'esecuzione di una determinata query SQL. Gli alias si usano per migliorare la leggibilità e rendere il codice più compatto. Un alias si introduce con la parola chiave AS:
SELECT col_1 AS column
FROM table_name;
Domande tecniche sui colloqui SQL
Ora passiamo alle domande tecniche sui colloqui SQL e a qualche possibile risposta.
Quando rispondi a domande tecniche, la strategia migliore è dare risposte il più precise possibile. Risposte vaghe possono sembrare un tentativo di deviare dall'argomento e possono anche provocare ulteriori domande su cui potresti sentirti meno sicuro.
In generale, SQL consente di interrogare un database in molti modi. Inoltre, SQL si integra facilmente con altri linguaggi di programmazione, come Python o R, così da poter sfruttare la loro forza combinata.
10. Quali tipi di comandi SQL conosci?
- Data Definition Language (DDL) – per definire e modificare la struttura di un database.
- Data Manipulation Language (DML) – per accedere, manipolare e modificare i dati in un database.
- Data Control Language (DCL) – per controllare l'accesso degli utenti ai dati nel database e concedere o revocare privilegi a un utente o a un gruppo di utenti.
- Transaction Control Language (TCL) – per controllare le transazioni in un database.
- Data Query Language (DQL) – per eseguire query sui dati di un database e recuperare le informazioni necessarie.
11. Fai alcuni esempi di comandi SQL comuni.
-
DDL:
CREATE,ALTERTABLE,DROP,TRUNCATEeADD COLUMN -
DML:
UPDATE,DELETEeINSERT -
DCL:
GRANTeREVOKE -
TCL:
COMMIT,SET TRANSACTION,ROLLBACKeSAVEPOINT -
DQL: –
SELECT
12. Che cos'è un DBMS e quali tipi conosci?
Sta per Database Management System, un pacchetto software usato per eseguire varie operazioni sui dati memorizzati in un database, come accesso, aggiornamento, pulizia, inserimento e rimozione dei dati. Ci sono vari tipi di DBMS, come relazionale, gerarchico, a rete, a grafo o orientato agli oggetti. Questi tipi si basano sul modo in cui i dati sono organizzati, strutturati e archiviati nel sistema.
13. Che cos'è un RDBMS? Fai alcuni esempi.
Sta per Relational Database Management System. È il tipo di DBMS più comune per lavorare con dati archiviati in più tabelle correlate tra loro tramite chiavi condivise. Il linguaggio SQL è progettato per interagire con gli RDBMS. Alcuni esempi di RDBMS sono MySQL, PostgreSQL, Oracle, MariaDB, ecc.
14. Cosa sono tabelle e campi in SQL?
Una tabella è un insieme organizzato di dati correlati archiviati in forma tabellare, cioè in righe e colonne. Un campo è un altro termine per indicare una colonna di una tabella.
15. Quali tipi di subquery SQL conosci?
- Single-row – restituisce al massimo una riga.
- Multi-row – restituisce almeno due righe.
- Multi-column – restituisce almeno due colonne.
- Correlated – una subquery correlata alle informazioni della query esterna.
- Nidificata – una subquery dentro un'altra subquery.
16. Che cos'è un vincolo e perché si usano i vincoli?
Un insieme di condizioni che definiscono il tipo di dati che può essere inserito in ciascuna colonna di una tabella. I vincoli garantiscono l'integrità dei dati in una tabella e bloccano azioni indesiderate.
17. Quali vincoli SQL conosci?
-
DEFAULT– fornisce un valore predefinito per una colonna. -
UNIQUE– consente solo valori univoci. -
NOT NULL– consente solo valori non nulli. -
PRIMARY KEY– consente solo valori univoci e rigorosamente non nulli (NOT NULLeUNIQUE). -
FOREIGN KEY– fornisce chiavi condivise tra due o più tabelle.
18. Quali tipi di join conosci?
-
(INNER) JOIN– restituisce solo i record che soddisfano una condizione di join definita in entrambe (o tutte) le tabelle. È la join predefinita in SQL. -
LEFT (OUTER) JOIN– restituisce tutti i record della tabella di sinistra e i record della tabella di destra che soddisfano la condizione di join definita. -
RIGHT (OUTER) JOIN– restituisce tutti i record della tabella di destra e i record della tabella di sinistra che soddisfano la condizione di join definita. -
FULL (OUTER) JOIN– restituisce tutti i record da entrambe (o tutte) le tabelle. Può essere considerata una combinazione di left e right join.
Nota: FULL OUTER JOIN è supportata da PostgreSQL, SQL Server, Oracle e MySQL 8.0 e superiori, ma MySQL la consente solo tramite pattern con UNION; nel frattempo, SQLite non supporta RIGHT JOIN, che può essere emulata usando LEFT JOIN in combinazione con UNION.
19. Che cos'è una chiave primaria in SQL?
Una colonna (o più colonne) di una tabella su cui è stato imposto il vincolo PRIMARY KEY per garantire valori univoci e non nulli in quella colonna. In altre parole, una chiave primaria è una combinazione dei vincoli NOT NULL e UNIQUE. La chiave primaria identifica in modo univoco ogni record della tabella.
Concetto correlato — Surrogate key: Una surrogate key è un identificatore generato artificialmente (tipicamente un intero sequenziale o un UUID) assegnato a ogni record, indipendentente dai valori effettivi dei dati. A differenza delle chiavi naturali (es. un indirizzo email), le surrogate key restano stabili quando i dati di business cambiano, motivo per cui sono spesso scelte come chiavi primarie nei database in produzione.
Ogni tabella può definire al massimo una PRIMARY KEY (che può essere composita). Una PRIMARY KEY è fortemente consigliata ma non strettamente richiesta da tutti i motori.
20. Che cos'è una chiave univoca (unique key) in SQL?
Una colonna (o più colonne) di una tabella su cui è stato imposto il vincolo UNIQUE per garantire valori univoci in quella colonna, inclusa un'eventuale NULL (una sola).
Nota:
- SQL Server: Consente una sola
NULLa meno di usare un indice filtrato. - PostgreSQL / Oracle / MySQL: Consentono più
NULLperchéNULL <> NULL.
21. Che cos'è una chiave esterna (foreign key) in SQL?
Una colonna (o più colonne) di una tabella su cui è stato imposto il vincolo FOREIGN KEY (o una chiave UNIQUE) per collegare questa colonna alla chiave primaria in un'altra tabella (o più tabelle). Lo scopo delle chiavi esterne è mantenere collegate le varie tabelle di un database.
22. Che cos'è un indice SQL?
Una struttura dati speciale associata a una tabella del database, usata per archiviare sue parti importanti e consentire ricerche e recupero dei dati più veloci. Gli indici sono particolarmente efficaci per database di grandi dimensioni, dove migliorano sensibilmente le performance delle query.
23. Quali tipi di indici conosci?
- Indice univoco – non consente duplicati in una colonna e aiuta quindi a mantenere l'integrità dei dati.
- Indice cluster – definisce l'ordine fisico dei record di una tabella e cerca i dati in base ai valori della chiave. Una tabella può avere un solo indice cluster.
- Indice non cluster – mantiene un ordine dei record che non corrisponde all'ordine fisico dei dati effettivi su disco. Significa che i dati sono archiviati in un punto e l'indice non cluster in un altro. Una tabella può avere più indici non cluster.
24. Che cos'è uno schema?
Una raccolta di elementi strutturali del database come tabelle, stored procedure, indici, funzioni e trigger. Mostra l'architettura complessiva del database, specifica le relazioni tra vari oggetti del database e definisce diversi permessi di accesso. Leggi la nostra guida agli schemi di database per approfondire.
25. Che cos'è un operatore SQL?
Un carattere riservato, una combinazione di caratteri o una parola chiave usata nelle query SQL per eseguire un'operazione specifica. Gli operatori SQL sono comunemente usati con la clausola WHERE per impostare una o più condizioni di filtro dei dati.
26. Quali tipi di operatori SQL conosci?
-
Aritmetici (
+,-,*,/, ecc.) -
Di confronto (
>,<,=,>=, ecc.) -
Composti (
+=,-=,*=,/=, ecc.) -
Logici (
AND,OR,NOT,BETWEEN, ecc.) -
Stringa (
%,_,+,^, ecc.) -
Insieme (
UNION,UNION ALL,INTERSECTeMINUS(oEXCEPT))
27. Che cos'è una clausola?
Una condizione imposta a una query SQL per filtrare i dati e ottenere il risultato desiderato. Alcuni esempi sono WHERE, LIMIT, HAVING, LIKE, AND, OR, ORDER BY, ecc.
28. Quali sono alcune istruzioni comuni usate con la query SELECT?
Le più comuni sono FROM, GROUP BY, JOIN, WHERE, ORDER BY, LIMIT e HAVING.
29. Come si crea una tabella in SQL?
Usando l'istruzioneCREATE TABLE. Ad esempio, per creare una tabella con tre colonne di tipi di dato predefiniti, applichiamo la seguente sintassi:
CREATE TABLE table_name (col_1 datatype,
col_2 datatype,
col_3 datatype);
30. Come si aggiorna una tabella?
Usando l'istruzione UPDATE. La sintassi è:
UPDATE table_name
SET col_1 = value_1, col_2 = value_2
WHERE condition;
31. Come si elimina una tabella da un database?
Usando l'istruzione DROP TABLE. La sintassi è: DROP TABLE table_name;.
32. Come si ottiene il conteggio dei record in una tabella?
Usando la funzione di aggregazione COUNT() con l'asterisco passato come argomento: SELECT COUNT(*) FROM table_name;.
33. Come si ordinano i record in una tabella?
Usando l'istruzione ORDER BY:
SELECT * FROM table_name
ORDER BY col_1;
Possiamo specificare l'ordine decrescente usando la parola chiave DESC; altrimenti l'ordine sarà crescente per impostazione predefinita. Possiamo anche ordinare per più colonne e specificare per ciascuna l'ordine crescente o decrescente separatamente. Ad esempio:
SELECT * FROM table_name
ORDER BY col_1 DESC, col_3, col_6 DESC;
34. Come si selezionano tutte le colonne di una tabella?
Usando l'asterisco * con l'istruzione SELECT. La sintassi è: SELECT * FROM table_name;.
35. Come si selezionano i record comuni tra due tabelle?
Usando l'istruzione INTERSECT:
SELECT col1, col2 FROM table_1
INTERSECT
SELECT col1, col2 FROM table_2;
Nota: INTERSECT richiede lo stesso numero di colonne e tipi compatibili.
36. Che cos'è l'istruzione DISTINCT e come si usa?
Si usa con l'istruzione SELECT per filtrare i duplicati e restituire solo i valori unici da una colonna di una tabella. La sintassi è:
SELECT DISTINCT col_1
FROM table_name;
37. Cosa sono le relazioni? Fai qualche esempio.
Le relazioni sono i collegamenti e le correlazioni tra entità, in pratica come due o più tabelle di un database sono collegate tra loro. Ad esempio, possiamo trovare l'ID dello stesso cliente in una tabella delle vendite e in una tabella dei clienti.
38. Che cos'è un valore NULL? In cosa differisce da zero o da uno spazio vuoto?
Un valore NULL indica l'assenza di dati per una certa cella di una tabella. Invece, zero è un valore numerico valido e una stringa vuota è una stringa legale di lunghezza zero.
39. Qual è la differenza tra SQL e NoSQL?
I database SQL sono relazionali, strutturati e usano tabelle con schemi predefiniti, mentre i database NoSQL sono non relazionali, senza schema e progettati per gestire dati non strutturati o semi-strutturati.
40. Quali sono alcune sfide comuni quando si lavora con database SQL?
Le sfide includono l'ottimizzazione delle performance per grandi dataset, la gestione delle strategie di indicizzazione, garantire l'integrità dei dati con i vincoli, gestire transazioni concorrenti e ottimizzare l'esecuzione delle query.
Domande SQL intermedie
41. Che cos'è una Common Table Expression (CTE)?
Una Common Table Expression (CTE) è un risultato temporaneo con nome che puoi referenziare all'interno di un'istruzione SELECT, INSERT, UPDATE o DELETE. Le CTE migliorano la leggibilità delle query e permettono di suddividere query complesse in parti più semplici e riutilizzabili. La sintassi usa la parola chiave WITH:
WITH sales_summary AS (
SELECT product_id, SUM(amount) AS total_sales
FROM sales
GROUP BY product_id
)
SELECT p.product_name, s.total_sales
FROM products p
JOIN sales_summary s ON p.id = s.product_id
WHERE s.total_sales > 10000;
Le CTE sono particolarmente utili per query ricorsive (dati gerarchici come organigrammi) e quando devi referenziare la stessa subquery più volte.
42. Cosa sono le window function e in cosa differiscono dalle funzioni di aggregazione?
Le window function eseguono calcoli su un insieme di righe correlate alla riga corrente, senza comprimere il risultato in una singola riga di output come fanno le funzioni di aggregazione. Usano la clausola OVER() per definire la finestra di righe.
Principali window function:
ROW_NUMBER()– assegna un numero sequenziale univoco a ogni rigaRANK()– assegna un rango con "buchi" in caso di ex aequoDENSE_RANK()– assegna un rango senza "buchi" in caso di ex aequoLAG()/LEAD()– accede ai dati delle righe precedente/successivaSUM() OVER(),AVG() OVER()– calcoli progressivi o cumulativi
Esempio: calcolare il totale progressivo delle vendite
SELECT
order_date,
amount,
SUM(amount) OVER (ORDER BY order_date) AS running_total
FROM orders;
43. Qual è la differenza tra RANK(), DENSE_RANK() e ROW_NUMBER()?
Tutte e tre sono window function di ranking, ma gestiscono gli ex aequo in modo diverso:
ROW_NUMBER()– assegna sempre numeri sequenziali univoci (1, 2, 3, 4...), anche in caso di ex aequoRANK()– assegna lo stesso rango agli ex aequo, poi salta numeri (1, 2, 2, 4...)DENSE_RANK()– assegna lo stesso rango agli ex aequo, senza salti (1, 2, 2, 3...)
SELECT
name,
score,
ROW_NUMBER() OVER (ORDER BY score DESC) AS row_num,
RANK() OVER (ORDER BY score DESC) AS rank,
DENSE_RANK() OVER (ORDER BY score DESC) AS dense_rank
FROM students;
Usa DENSE_RANK() quando cerchi l'"ennesimo più alto" valore in cui gli ex aequo devono condividere la stessa posizione.
In questa sezione vediamo le domande intermedie più popolari e le relative risposte, così saprai cosa aspettarti dall'intervistatore.
44. Che cos'è una funzione in SQL?
Un oggetto del database che rappresenta un insieme di istruzioni SQL usate frequentemente per un certo compito. Una funzione accetta parametri di input, esegue calcoli o altre manipolazioni e restituisce un risultato. Le funzioni aiutano a migliorare la leggibilità del codice ed evitano di ripetere gli stessi snippet.
45. Quali tipi di funzioni SQL conosci?
- Funzioni di aggregazione – operano su più record, di solito raggruppati, per le colonne fornite e restituiscono un singolo valore (di solito per gruppo).
- Funzioni scalari – operano su ogni singolo valore e restituiscono un singolo valore.
D'altra parte, le funzioni SQL possono essere built-in (definite dal sistema) o definite dall'utente (create dall'utente per le proprie esigenze).
46. Quali funzioni di aggregazione SQL conosci?
-
AVG()– restituisce il valore medio -
SUM()– restituisce la somma dei valori -
MIN()– restituisce il valore minimo -
MAX()– restituisce il valore massimo -
COUNT()– restituisce il numero di righe, incluse quelle con valori nulli
47. Quali funzioni scalari SQL conosci?
-
LEN()(in altri dialetti SQL –LENGTH()) – restituisce la lunghezza di una stringa, inclusi gli spazi -
UCASE()(in altri dialetti SQL –UPPER()) – restituisce una stringa convertita in maiuscolo -
LCASE()(in altri dialetti SQL –LOWER()) – restituisce una stringa convertita in minuscolo -
INITCAP() – restituisce una stringa in maiuscolo iniziale (ogni parola inizia con una lettera maiuscola) -
MID()(in altri dialetti SQL –SUBSTR()) – estrae una sottostringa da una stringa -
ROUND()– restituisce il valore numerico arrotondato a un numero di decimali specificato -
NOW()– restituisce data e ora correnti
48. Cosa sono le funzioni di modifica del case in SQL?
Le funzioni di modifica del case sono un sottoinsieme delle funzioni per le stringhe e servono a cambiare il maiuscolo/minuscolo dei dati testuali. Con queste funzioni possiamo convertire i dati in maiuscolo, minuscolo o maiuscolo iniziale.
-
UCASE()(in altri dialetti SQL –UPPER()) – restituisce una stringa convertita in maiuscolo -
LCASE()(in altri dialetti SQL –LOWER()) – restituisce una stringa convertita in minuscolo -
INITCAP()– restituisce una stringa in maiuscolo iniziale (ogni parola inizia con una lettera maiuscola)
49. Cosa sono le funzioni di manipolazione dei caratteri in SQL?
Le funzioni di manipolazione dei caratteri sono un sottoinsieme delle funzioni per le stringhe e servono a modificare i dati testuali.
-
CONCAT()– unisce due o più stringhe aggiungendo la seconda alla fine della prima -
SUBSTRING()/SUBSTR()– restituisce una parte di stringa tra i punti di inizio e fine forniti -
LENGTH()(in altri dialetti SQL –LEN()) – restituisce la lunghezza di una stringa, inclusi gli spazi -
REPLACE()– sostituisce tutte le occorrenze di una sottostringa definita con un'altra sottostringa -
INSTR()– restituisce la posizione numerica di una sottostringa definita in una stringa fornita -
LPAD()eRPAD()– restituiscono il padding a sinistra/destra per valori allineati a destra/sinistra -
TRIM()– rimuove tutti i caratteri definiti, così come gli spazi, dall'inizio, dalla fine o da entrambe le estremità di una stringa fornita
50. Qual è la differenza tra variabili locali e globali?
Le variabili locali sono accessibili solo all'interno della funzione in cui sono state dichiarate. Le variabili globali, dichiarate al di fuori di qualsiasi funzione, sono memorizzate in strutture di memoria fisse e possono essere usate in tutto il programma.
51. Qual è la differenza tra SQL e PL/SQL?
SQL è un linguaggio standard per interrogare e gestire database relazionali, usato principalmente per la manipolazione e il recupero dei dati. PL/SQL (Procedural Language/SQL) è un'estensione di SQL usata nei database Oracle che include costrutti di programmazione procedurale come cicli, condizioni e gestione delle eccezioni, consentendo di implementare logiche di business complesse all'interno del database. Abbiamo un altro articolo sulle Top 20 domande e risposte sui colloqui PL/SQL, utile se sai che ti chiederanno delle tue conoscenze su Oracle.
52. Qual è la differenza tra LEFT JOIN e LEFT OUTER JOIN?
Non c'è differenza tra LEFT JOIN e LEFT OUTER JOIN. Sono intercambiabili. SQL consente che la parola chiave OUTER sia opzionale, quindi LEFT JOIN è semplicemente una forma abbreviata di LEFT OUTER JOIN. Entrambe restituiscono tutti i record della tabella di sinistra e quelli corrispondenti della tabella di destra.
53. Che cos'è l'indicizzazione in SQL e come migliora le performance?
L'indicizzazione crea una struttura dati speciale che velocizza il recupero dei dati consentendo al database di trovare le righe in modo più efficiente. Funziona come una tabella di consultazione ottimizzata, riducendo la necessità di scansioni complete della tabella. Tuttavia, un eccesso di indici può rallentare le operazioni di insert, update e delete a causa della necessità di mantenerli.
54. Che cos'è una stored procedure e in cosa differisce da una funzione?
Una stored procedure è un insieme precompilato di istruzioni SQL eseguite come unità per svolgere un compito. Le procedure possono modificare dati o oggetti di schema, gestire transazioni e restituire zero o più result set. Le funzioni, invece, sono tipicamente usate nelle espressioni SQL, devono restituire un valore (scalare o table-valued) e in molti database hanno limitazioni sugli effetti collaterali. Il comportamento esatto dipende dal DB (es., in T-SQL ci sono funzioni scalari e table-valued; PostgreSQL distingue tra funzioni e procedure).
55. Qual è l'ordinamento predefinito con ORDER BY e come lo cambi?
Il default è crescente (NULLS FIRST/LAST varia per DB). Usa le parole chiave ASC/DESC per colonna come segue:
SELECT * FROM table_name
ORDER BY col_1 DESC;
56. Cosa sono gli operatori di insieme in SQL?
-
UNION– restituisce i record ottenuti da almeno una delle due query (escludendo i duplicati) -
UNION ALL– restituisce i record ottenuti da almeno una delle due query (includendo i duplicati) -
INTERSECT– restituisce i record ottenuti da entrambe le query -
EXCEPT(chiamatoMINUSin MySQL e Oracle) – restituisce solo i record ottenuti dalla prima query ma non dalla seconda
57. Quale operatore si usa nelle query per il pattern matching?
L'operatore LIKE in combinazione con i wildcards % e _. Il carattere % rappresenta un numero qualsiasi di caratteri, incluso zero, mentre _ – esattamente un carattere.
58. Qual è la differenza tra chiave primaria e chiave univoca in SQL?
Entrambe garantiscono valori unici in una colonna, ma la chiave primaria identifica univocamente ogni record della tabella, mentre la chiave univoca impedisce i duplicati in quella colonna.
59. Che cos'è una chiave primaria composita in SQL?
La chiave primaria di una tabella basata su più colonne.
60. Qual è l'ordine tipico delle clausole SQL in una SELECT?
SELECT – FROM – JOIN – ON – WHERE – GROUP BY – HAVING – ORDER BY – LIMIT
61. In quale ordine l'interprete esegue le clausole comuni in una SELECT?
Ecco l'ordine di esecuzione in SQL:
FROM → ON → JOIN → WHERE → GROUP BY → HAVING → SELECT → ORDER BY → LIMIT/OFFSET (FETCH)
62. Che cos'è una vista (view) in SQL?
Una tabella virtuale contenente un sottoinsieme di dati recuperati da una o più tabelle (o altre viste). Le viste standard non memorizzano dati; le materialized view sì. Le viste possono semplificare le query, incapsulare logica e, combinate con i privilegi, limitare colonne/righe. Possono unire/aggregare dati da più tabelle.
63. Possiamo creare una vista basata su un'altra vista in SQL?
Sì. È noto anche come viste nidificate. Tuttavia, dovremmo evitare di nidificare più viste perché il codice diventa difficile da leggere e fare debug.
64. Possiamo usare ancora una vista se la tabella originale è stata eliminata?
No. Qualsiasi vista basata su quella tabella diventerà non valida dopo l'eliminazione della tabella di base. Se proviamo comunque a usarla, riceveremo un messaggio di errore.
65. Quali tipi di relazioni SQL conosci?
- Uno a uno – ogni record in una tabella corrisponde a un solo record in un'altra tabella
- Uno a molti – ogni record in una tabella corrisponde a più record in un'altra tabella
- Molti a molti – ogni record in entrambe le tabelle corrisponde a più record nell'altra tabella
66. Quali sono i possibili valori di un campo BOOLEAN?
In alcuni dialetti SQL, come PostgreSQL, il tipo di dato BOOLEAN esiste esplicitamente e assume i valori TRUE, FALSE o NULL. In altri dialetti, come Microsoft SQL Server, si usa il tipo BIT per memorizzare valori booleani come interi 1 (true) o 0 (false).
67. Che cos'è la normalizzazione in SQL?
La normalizzazione è un processo di progettazione del database che include l'organizzazione e la ristrutturazione dei dati in modo da ridurre ridondanza, dipendenza, duplicazione e incoerenza. Ciò porta a una maggiore integrità dei dati, più tabelle nel database, accesso ai dati e controllo di sicurezza più efficienti e maggiore flessibilità nelle query.
68. Che cos'è la denormalizzazione in SQL?
La denormalizzazione è il processo opposto alla normalizzazione: introduce ridondanza e combina dati da più tabelle. La denormalizzazione ottimizza le performance dell'infrastruttura del database nelle situazioni in cui le operazioni di lettura sono più importanti delle scritture, poiché aiuta a evitare join complessi e riduce il tempo di esecuzione delle query.
69. Qual è la differenza tra rinominare una colonna e assegnarle un alias?
Rinominare una colonna significa cambiare in modo permanente il suo nome effettivo nella tabella originale. Assegnare un alias a una colonna significa darle un nome temporaneo durante l'esecuzione di una query SQL, con lo scopo di rendere il codice più leggibile e compatto.
70. Qual è la differenza tra subquery nidificate e correlate?
Una subquery correlata è una query interna nidificata in una query più grande (esterna) che si riferisce ai valori della query esterna per la sua esecuzione, il che significa che dipende dalla query esterna. Una subquery non correlata invece non dipende dai dati della query esterna e può essere eseguita in modo indipendente.
71. Qual è la differenza tra indici cluster e non cluster?
Mentre un indice cluster definisce l'ordine fisico dei record di una tabella ed esegue la ricerca in base ai valori chiave, un indice non cluster mantiene un ordine dei record che non coincide con l'ordine fisico dei dati su disco. Una tabella può avere un solo indice cluster ma molti non cluster.
72. Che cos'è la funzione CASE()?
Il modo per implementare la logica if-then-else in SQL. Questa funzione controlla in sequenza le condizioni fornite nelle clausole WHEN e restituisce il valore della corrispondente clausola THEN quando la prima condizione è soddisfatta. Se nessuna condizione è soddisfatta, restituisce il valore della clausola ELSE se presente, altrimenti restituisce NULL. La sintassi è:
CASE
WHEN condition_1 THEN value_1
WHEN condition_2 THEN value_2
WHEN condition_3 THEN value_3
...
ELSE value
END;
73. Qual è la differenza tra le istruzioni DELETE e TRUNCATE?
DELETE è un comando DML (Data Manipulation Language) usato per rimuovere una o più righe da una tabella in base a una condizione nella clausola WHERE. È reversibile solo se racchiuso in una transazione (tramite ROLLBACK).
TRUNCATE è un comando DDL (Data Definition Language) che rimuove tutte le righe da una tabella deallocando le pagine. È più veloce ma generalmente irreversibile e non può essere usato su tabelle referenziate da una chiave esterna.
74. Qual è la differenza tra le istruzioni DROP e TRUNCATE?
DROP elimina completamente una tabella dal database, inclusa la struttura della tabella e tutti i vincoli associati, le relazioni con altre tabelle e i privilegi di accesso. TRUNCATE elimina tutte le righe da una tabella senza influire sulla struttura e sui vincoli. Entrambe sono DDL. DROP rimuove la tabella e i suoi metadati; TRUNCATE elimina tutte le righe ma mantiene la definizione. Performance e comportamento transazionale dipendono dal motore DB.
75. Qual è la differenza tra HAVING e WHERE?
La prima lavora su dati aggregati dopo il raggruppamento, mentre la seconda controlla ogni riga individualmente. Se entrambe sono presenti in una query, compaiono nel seguente ordine:WHERE – GROUP BY – HAVING. Il motore SQL le interpreta anche nello stesso ordine.
76. Come si aggiunge un record a una tabella?
Usando l'istruzione INSERT INTO in combinazione con VALUES. La sintassi è:
INSERT INTO table_name
VALUES (value_1, value_2, ...);
77. Come si elimina un record da una tabella?
Usando l'istruzione DELETE. La sintassi è:
DELETE FROM table_name
WHERE condition;
In questo modo possiamo anche eliminare più record se soddisfano la condizione fornita.
78. Come si aggiunge una colonna a una tabella?
Usando l'istruzione ALTER TABLE in combinazione con ADD. La sintassi è:
ALTER TABLE table_name
ADD column_name datatype;
79. Come si rinomina una colonna di una tabella?
Usando l'istruzione ALTER TABLE in combinazione con RENAME COLUMN ... TO .... La sintassi è:
ALTER TABLE table_name
RENAME COLUMN old_column_name TO new_column_name;
80. Come si elimina una colonna da una tabella?
Usando l'istruzione ALTER TABLE in combinazione con DROP COLUMN. La sintassi è:
ALTER TABLE table_name
DROP COLUMN column_name;
81. Come si selezionano tutte le righe pari o tutte le righe dispari in una tabella?
Controllando il resto della divisione per 2. In alcune versioni di SQL (es., PostgreSQL e MySQL) si usa la funzione MOD, in altre (Microsoft SQL Server e SQLite) – l'operatore modulo (%). Per selezionare tutte le righe pari usando MOD:
SELECT * FROM table_name
WHERE MOD(ID_column, 2) = 0;
Per selezionare tutte le righe pari usando %:
SELECT * FROM table_name
WHERE ID_column % 2 = 0;
Per selezionare tutte le righe dispari, la sintassi è identica in entrambi i casi, solo che si usa l'operatore di disuguaglianza <> invece di =.
82. Come evitare record duplicati in una query?
Usando l'istruzione DISTINCT in combinazione con SELECT o creando una chiave univoca per quella tabella.
83. Come si inseriscono più righe in una tabella?
Usando l'istruzione INSERT INTO in combinazione con VALUES. La sintassi è:
INSERT INTO table_name
VALUES (value_1, value_2, ...),
(value_3, value_4, ...),
(value_5, value_6, ...),
...;
84. Come si trova l'ennesimo valore più alto in una colonna di una tabella?
Usando le window function per gestire correttamente gli ex aequo:
SELECT column_name
FROM (
SELECT column_name, DENSE_RANK() OVER (ORDER BY column_name DESC) AS rnk
FROM table_name
) t
WHERE rnk = :n;
Per l'ennesima riga per ordine (ignorando gli ex aequo): ORDER BY column_name DESC OFFSET n-1 ROWS FETCH NEXT 1 ROW ONLY.
85. Come trovi i valori in una colonna di testo che iniziano con una certa lettera?
Usando l'operatore LIKE in combinazione con i caratteri jolly % e _. Ad esempio, dobbiamo trovare tutti i cognomi in una tabella che iniziano con "A". La query è:
SELECT * FROM table_name
WHERE surname LIKE 'A_';
Qui assumiamo che un cognome debba contenere almeno due lettere. Senza questa assunzione (cioè un cognome può essere solo A), la query è la seguente:
SELECT * FROM table_name
WHERE surname LIKE 'A%';
86. Come trovi l'ultimo id in una tabella?
Il metodo più semplice è usare la funzione di aggregazione MAX().
SELECT MAX(id) AS highest_id
FROM table_name;
Usando ORDER BY con LIMIT o TOP
SELECT id
FROM table_name
ORDER BY id DESC
LIMIT 1;
87. Come si selezionano righe casuali da una tabella?
Usando la funzione RAND() in combinazione con ORDER BY e LIMIT. In alcuni dialetti SQL, come PostgreSQL, si chiama RANDOM(). Ad esempio, il seguente codice restituirà cinque righe casuali da una tabella in MySQL:
SELECT * FROM table_name
ORDER BY RAND()
LIMIT 5;
Domande SQL basate su scenari
Le domande basate su scenari testano la tua capacità di risolvere problemi di business reali con SQL. Gli intervistatori le usano per valutare non solo la conoscenza della sintassi, ma anche l'approccio al problem solving e la capacità di gestire casi limite come duplicati, valori NULL ed ex aequo.
88. Come trovi e rimuovi record duplicati da una tabella?
Trovare i duplicati:
SELECT email, COUNT(*) AS duplicate_count
FROM users
GROUP BY email
HAVING COUNT(*) > 1;
Rimuovere i duplicati (tenendone uno):
WITH duplicates AS (
SELECT id,
ROW_NUMBER() OVER (PARTITION BY email ORDER BY id) AS rn
FROM users
)
DELETE FROM users
WHERE id IN (SELECT id FROM duplicates WHERE rn > 1);
Questo approccio usa una CTE con ROW_NUMBER() per identificare i duplicati, mantenendo il record con l'ID più basso.
89. Come calcoli un totale progressivo (somma cumulativa)?
Usa la window function SUM() con una clausola ORDER BY:
SELECT
transaction_date,
amount,
SUM(amount) OVER (ORDER BY transaction_date) AS running_total
FROM transactions;
Per un totale progressivo per categoria (es., per cliente):
SELECT
customer_id,
transaction_date,
amount,
SUM(amount) OVER (
PARTITION BY customer_id
ORDER BY transaction_date
) AS customer_running_total
FROM transactions;
90. Come trovi i dipendenti che guadagnano più della media del loro reparto?
È un classico scenario da subquery correlata:
SELECT e.name, e.department, e.salary
FROM employees e
WHERE e.salary > (
SELECT AVG(salary)
FROM employees
WHERE department = e.department
);
In alternativa, usando una window function:
SELECT name, department, salary
FROM (
SELECT
name,
department,
salary,
AVG(salary) OVER (PARTITION BY department) AS dept_avg
FROM employees
) t
WHERE salary > dept_avg;
91. Come trovi i gap in una sequenza di numeri (es., numeri di fattura mancanti)?
Usa LEAD() per confrontare ogni valore con il successivo:
SELECT
invoice_number,
LEAD(invoice_number) OVER (ORDER BY invoice_number) AS next_invoice,
LEAD(invoice_number) OVER (ORDER BY invoice_number) - invoice_number - 1 AS gap_size
FROM invoices
WHERE LEAD(invoice_number) OVER (ORDER BY invoice_number) - invoice_number > 1;
Questo identifica dove il gap tra numeri consecutivi è maggiore di 1.
92. Come trovi i clienti che hanno fatto acquisti in mesi consecutivi?
Usa LAG() per confrontare con la riga precedente:
WITH monthly_purchases AS (
SELECT
customer_id,
DATE_TRUNC('month', purchase_date) AS purchase_month,
LAG(DATE_TRUNC('month', purchase_date)) OVER (
PARTITION BY customer_id
ORDER BY DATE_TRUNC('month', purchase_date)
) AS prev_month
FROM purchases
GROUP BY customer_id, DATE_TRUNC('month', purchase_date)
)
SELECT DISTINCT customer_id
FROM monthly_purchases
WHERE purchase_month = prev_month + INTERVAL '1 month';
93. Come converti i dati da righe a colonne (pivot)?
Usa aggregazioni condizionali con istruzioni CASE:
SELECT
product_name,
SUM(CASE WHEN EXTRACT(MONTH FROM sale_date) = 1 THEN amount ELSE 0 END) AS jan_sales,
SUM(CASE WHEN EXTRACT(MONTH FROM sale_date) = 2 THEN amount ELSE 0 END) AS feb_sales,
SUM(CASE WHEN EXTRACT(MONTH FROM sale_date) = 3 THEN amount ELSE 0 END) AS mar_sales
FROM sales
GROUP BY product_name;
Alcuni database (SQL Server, Oracle) hanno una sintassi PIVOT nativa per questa operazione.
94. Come trovi i 3 prodotti principali per vendite in ogni categoria?
Usa DENSE_RANK() con PARTITION BY:
WITH ranked_products AS (
SELECT
category,
product_name,
SUM(sales_amount) AS total_sales,
DENSE_RANK() OVER (
PARTITION BY category
ORDER BY SUM(sales_amount) DESC
) AS sales_rank
FROM sales
GROUP BY category, product_name
)
SELECT category, product_name, total_sales
FROM ranked_products
WHERE sales_rank <= 3
ORDER BY category, sales_rank;
95. Cosa sono le proprietà ACID nelle transazioni del database?
ACID è un acronimo per le quattro proprietà chiave che garantiscono transazioni affidabili nel database:
- Atomicità: Una transazione è "tutto o niente" – o tutte le operazioni riescono, o nessuna
- Coerenza: Una transazione porta il database da uno stato valido a un altro, mantenendo tutte le regole e i vincoli definiti
- Isolamento: Transazioni concorrenti non interferiscono tra loro; ogni transazione vede uno snapshot coerente dei dati
- Durabilità: Una volta eseguito il commit, le modifiche persistono anche in caso di crash del sistema
Esempio di transazione:
BEGIN TRANSACTION;
UPDATE accounts SET balance = balance - 100 WHERE account_id = 1;
UPDATE accounts SET balance = balance + 100 WHERE account_id = 2;
COMMIT;
96. Che cos'è un deadlock e come si previene?
Un deadlock si verifica quando due o più transazioni attendono che l'altra rilasci i lock, creando una dipendenza circolare per cui nessuna può procedere.
Scenario di esempio: La transazione A blocca la Tabella X e attende la Tabella Y, mentre la transazione B blocca la Tabella Y e attende la Tabella X.
Strategie di prevenzione:
- Ordine coerente dei lock: Acquisisci sempre i lock nello stesso ordine in tutte le transazioni
- Mantieni le transazioni brevi: Esegui commit o rollback il prima possibile
- Usa livelli di isolamento appropriati: Livelli più bassi riducono la contesa sui lock
- Accedi solo ai dati necessari: Evita di bloccare righe non necessarie
- Gestisci i retry dei deadlock: La maggior parte dei database rileva e risolve automaticamente i deadlock facendo rollback di una transazione
97. Come ottimizzi una query SQL lenta?
Principali strategie di ottimizzazione:
-
Aggiungi indici appropriati: Crea indici sulle colonne usate in
WHERE,JOINeORDER BY -
Analizza i piani di esecuzione: Usa
EXPLAIN(PostgreSQL/MySQL) oEXPLAIN PLAN(Oracle) per individuare i colli di bottiglia -
Evita SELECT *: Recupera solo le colonne necessarie
-
Usa i JOIN invece delle subquery: I
JOINsono spesso più efficienti delle subquery correlate -
Limita i result set: Usa
LIMIT/TOPquando non ti servono tutte le righe -
Evita funzioni su colonne indicizzate:
WHERE YEAR(date_col) = 2026non può usare un indice; usa inveceWHERE date_col >= '2026-01-01' -
Valuta il partitioning: Per tabelle molto grandi, partiziona per data o categoria
98. Come gestisci i valori NULL in calcoli e confronti?
NULL rappresenta dati mancanti o sconosciuti e richiede una gestione specifica:
-
Confronti: Usa
IS NULLoIS NOT NULLinvece di= NULL -
COALESCE(): Restituisce il primo valore non
NULL:COALESCE(column, 'default') -
NULLIF(): Restituisce
NULLse due valori sono uguali:NULLIF(a, b) -
ISNULL() / NVL(): Funzioni specifiche del database per sostituire i valori
NULL
SELECT
name,
COALESCE(phone, email, 'No contact') AS contact_info,
CASE WHEN status IS NULL THEN 'Unknown' ELSE status END AS status
FROM customers;
99. Come trovi la striscia (streak) più lunga di giorni di login consecutivi per un utente?
Questo è un avanzato problema di tipo "islands and gaps":
WITH login_groups AS (
SELECT
user_id,
login_date,
login_date - ROW_NUMBER() OVER (
PARTITION BY user_id
ORDER BY login_date
) * INTERVAL '1 day' AS group_id
FROM user_logins
)
SELECT
user_id,
MIN(login_date) AS streak_start,
MAX(login_date) AS streak_end,
COUNT(*) AS streak_length
FROM login_groups
GROUP BY user_id, group_id
ORDER BY streak_length DESC
LIMIT 1;
Il trucco consiste nel sottrarre un numero di riga da ogni data: le date consecutive produrranno lo stesso "group_id".
Potenziare il tuo team con SQL
Se la preparazione ai colloqui SQL è cruciale per candidati e hiring manager, per le aziende è altrettanto importante investire in una formazione SQL continua per i propri team. Lavorare con i dati è più importante che mai, quindi garantire che i tuoi dipendenti abbiano solide competenze SQL può fare la differenza per il successo della tua azienda.
Se sei un team leader o un imprenditore e vuoi assicurarti che tutto il tuo team sia competente in SQL, DataCamp for Business offre percorsi formativi su misura che possono aiutare i tuoi dipendenti a padroneggiare SQL, dalle basi ai concetti avanzati. Possiamo fornire:
- Percorsi di apprendimento mirati: Personalizzabili in base al livello attuale del tuo team e alle esigenze di business.
- Pratica hands-on: Scenari reali ed esercizi che rafforzano l'apprendimento e migliorano la memorizzazione.
- Monitoraggio dei progressi: Strumenti per monitorare e valutare i progressi del tuo team, assicurando il raggiungimento degli obiettivi formativi.
Investire nel miglioramento delle competenze SQL tramite piattaforme come DataCamp non solo potenzia le capacità del tuo team, ma offre anche un vantaggio strategico alla tua azienda, permettendoti di restare competitivo e ottenere risultati. Parla con uno dei nostri consulenti e richiedi una demo oggi stesso.
Conclusione
In sintesi, abbiamo trattato le 99 domande essenziali per colloqui SQL di livello base, intermedio e basate su scenari, insieme alle risposte corrette. Speriamo che queste informazioni ti aiutino a prepararti al colloquio e a sentirti più sicuro, che tu stia cercando un lavoro in ambito SQL o stia selezionando candidati per una posizione intermedia.
Se ritieni di aver bisogno di ulteriore training per prepararti meglio a un colloquio, dai un'occhiata al nostro elenco completo di corsi SQL:
FAQs
Come posso iniziare a imparare SQL?
Per iniziare a imparare SQL, parti dai concetti di base dei database e dei sistemi di gestione di database relazionali. DataCamp offre molte risorse per cominciare, come il corso Introduction to SQL, il Career Track Data Analyst in SQL e il cheat sheet SQL. In alternativa, visita la pagina dei corsi SQL per sfogliare tutte le risorse.
Dove posso trovare problemi SQL reali su cui esercitarmi?
Sulla piattaforma DataCamp ci sono molti progetti SQL per affinare le tue competenze, adatti a tutti i livelli.
Quali sono alcune domande comuni sui colloqui SQL per principianti?
Ai principianti spesso viene chiesto di spiegare concetti SQL di base, come la differenza tra le istruzioni SELECT e INSERT, lo scopo delle chiavi in un database (chiavi primarie e esterne) e semplici query per estrarre dati da una singola tabella usando condizioni (clausola WHERE).
Quali sono alcune domande comuni sui colloqui SQL per chi è a livello intermedio?
Chi è a livello intermedio potrebbe affrontare domande su concetti SQL più complessi come join (INNER, LEFT, RIGHT, FULL), subquery, aggregazioni e raggruppamento dei dati (GROUP BY) e l'uso di operazioni di insieme come UNION, INTERSECT ed EXCEPT. Potrebbero anche essere richieste soluzioni a problemi che implicano l'ottimizzazione delle query per le prestazioni.
Come dovrei prepararmi per un colloquio SQL?
La preparazione a un colloquio SQL dovrebbe includere:
- Ripasso dei concetti base e avanzati di SQL.
- Esercitazioni di scrittura di query per risolvere problemi comuni.
- Comprensione della progettazione dei database e della normalizzazione.
- Familiarizzazione con il dialetto SQL specifico usato dal datore di lavoro (es., PostgreSQL, MySQL, SQL Server).
- Risoluzione di domande e problemi di esempio disponibili online.
Cosa mi devo aspettare in un colloquio tecnico SQL e come posso dimostrare al meglio le mie competenze?
In un colloquio tecnico SQL, puoi aspettarti domande che testano la tua conoscenza della sintassi SQL, della progettazione dei database, dell'ottimizzazione delle query e delle capacità di problem solving usando SQL. Per dimostrare le tue competenze:
- Allena a spiegare il tuo processo mentale mentre risolvi problemi SQL.
- Preparati a scrivere query SQL senza errori su una lavagna o in un ambiente di coding online.
- Mostra la tua comprensione di concetti complessi come join, subquery e transazioni con esempi.
- Parla di eventuali esperienze reali con i database, evidenziando le sfide affrontate o le ottimizzazioni implementate.
Quanto è importante imparare dialetti SQL specifici e su quali dovrei concentrarmi?
Anche se la sintassi di base di SQL è coerente tra i vari RDBMS, ogni sistema (come MySQL, PostgreSQL, SQL Server, Oracle) ha il proprio dialetto con funzionalità e funzioni uniche. Imparare un dialetto SQL specifico è importante se punti a ruoli che usano un RDBMS particolare. Concentrati sul dialetto più rilevante per i tuoi obiettivi di carriera o su quello più usato nel tuo settore. Tuttavia, una solida base in SQL standard rende più facile adattarsi ai diversi dialetti quando necessario.
DataCamp ha risorse GRATUITE extra per prepararsi ai colloqui SQL?
Sì! Se sei un docente universitario o uno studente, puoi usare DataCamp Classrooms per ottenere l'intero catalogo premium GRATIS. Include i nostri percorsi e certificazioni SQL.
Dai anche un'occhiata al nostro cheat sheet gratuito SQL Basics.
Quali sono gli argomenti SQL più importanti da studiare per i colloqui nel 2026?
Concentrati su queste aree chiave: (1) Join e subquery – comprendi INNER, LEFT, RIGHT e FULL join, oltre a subquery correlate vs non correlate; (2) Window function – ROW_NUMBER, RANK, DENSE_RANK, LAG, LEAD e totali progressivi; (3) CTE (Common Table Expressions) – per query leggibili e manutenibili; (4) Aggregazioni e GROUP BY – incluso l'uso della clausola HAVING; (5) Ottimizzazione delle query – strategie di indicizzazione e piani di esecuzione.
Qual è la differenza tra ROW_NUMBER, RANK e DENSE_RANK?
Tutte e tre sono window function di ranking, ma gestiscono gli ex aequo in modo diverso: ROW_NUMBER() assegna numeri sequenziali univoci anche in caso di ex aequo (1, 2, 3, 4); RANK() assegna lo stesso rango agli ex aequo ma salta i numeri successivi (1, 2, 2, 4); DENSE_RANK() assegna lo stesso rango agli ex aequo senza salti (1, 2, 2, 3). Usa DENSE_RANK quando cerchi l'"ennesimo più alto" valore in cui gli ex aequo devono condividere la stessa posizione.
Data Scientist certificato IBM (2020), in precedenza geologo/geonumerico petrolifero con esperienza in campi oil & gas a livello mondiale e oltre 12 anni di lavoro internazionale. Competente in Python, R e SQL. Aree di competenza: data cleaning, manipolazione dei dati, visualizzazione dei dati, analisi dei dati, modellazione dei dati, statistica, storytelling, machine learning. Ampia esperienza nella gestione di community di data science e nella scrittura/revisione di articoli e tutorial su data science e temi di carriera.


