Torna all'elenco degli articoli Articoli
Tempo di lettura: 22 minuti

Scheda informativa sul colloquio SQL

Avete bisogno di consultare rapidamente tutte le conoscenze fondamentali per un colloquio SQL? Volete rinfrescarvi la memoria su un concetto SQL? Il nostro SQL Interview Cheat Sheet è il vostro nuovo migliore amico!

Per prepararsi a un colloquio SQL è necessario ripassare il proprio SQL. Ma è molto facile perdersi tra tutti i concetti SQL da rivedere. In queste situazioni, avete bisogno di una risorsa facilmente consultabile e ricca di nozioni SQL. Ecco perché abbiamo creato questo foglio informativo per il colloquio SQL. Se avete bisogno di consultare rapidamente i concetti di base di SQL, questo cheat sheet fa per voi!

Se invece avete bisogno di qualcosa di più di un rapido ripasso, prendete in considerazione il nostro SQL per principianti corso. Il corso insegna le basi dell'SQL, dal recupero dei dati alla creazione di semplici report, utilizzando 129 sfide di codifica. Poi potrete consolidare le vostre conoscenze esercitandovi sulle 1.190 sfide di codifica presenti nel nostro Pratica su SQL traccia. In questo modo sarete pronti per qualsiasi colloquio sul linguaggio SQL!

Senza ulteriori indugi, tuffiamoci direttamente nel nostro SQL Interview Cheat Sheet. Inizieremo con la domanda più elementare:

Che cos'è l'SQL?

Structured Query Language, o SQL, è un linguaggio di programmazione progettato per gestire i dati nei database. Consente agli utenti di interrogare, aggiungere, modificare, salvare e cancellare dati in un database. Può anche essere utilizzato per creare e modificare le strutture dei database.

Informazioni sulle tabelle SQL

Termine Spiegazione
Tabella Un oggetto di base del database. Composta da righe e colonne, memorizza i dati relativi a un particolare argomento (ad esempio, una tabella "dipendenti" memorizza i dati relativi ai dipendenti dell'azienda).
Colonne (o attributi) Come le colonne di un foglio di calcolo, le colonne della tabella contengono dettagli sull'oggetto del database (ad esempio, la colonna "ID" contiene i numeri identificativi dei dipendenti).
Righe (o record) Come le righe di un foglio di calcolo, le righe della tabella contengono dati su una singola istanza dell'oggetto del database (ad esempio, una riga registra tutti i dati di un dipendente).
Campi Come una cella in un foglio di calcolo, un campo è l'intersezione tra una colonna e una riga. Memorizza un dato, ad esempio il numero identificativo di un dipendente.
Tipi di dati Definisce il tipo di dati che possono essere memorizzati in ogni colonna.

Ecco una visualizzazione della terminologia di cui sopra.

Scheda informativa sui colloqui SQL

Comandi SQL

Termine Spiegazione
Interrogazione Un'istruzione SQL che recupera i dati, ovvero un'istruzione SELECT.
Dichiarazione Un comando che può essere eseguito sul database; è l'elemento di base dell'SQL.
Dichiarazioni DDL Le istruzioni del Data Definition Language creano e modificano gli oggetti del database, come le tabelle o gli indici. Il DDL è un sottoinsieme dell'SQL.
Dichiarazioni DCL Le istruzioni del Data Control Language danno o tolgono i diritti di accesso a parti del database. Il DCL è un sottoinsieme dell'SQL.
Dichiarazioni DML Le istruzioni del linguaggio di manipolazione dei dati consentono di manipolare le informazioni di un database. Il DML è un sottoinsieme dell'SQL. Le istruzioni DML più diffuse sono le seguenti:
INSERT Inserisce una o più nuove righe di dati in una tabella.
UPDATE Modifica i valori esistenti in una colonna della tabella.
DELETE Rimuove una o più righe dalla tabella.
Dichiarazioni DQL Le istruzioni Data Query Language recuperano i dati da un database, ovvero le istruzioni SELECT.
SELECT Recupera i dati da una o più tabelle di un database.

Query SQL

Clausole di base di una query SQL

SELECT è l'istruzione più comunemente usata nelle query SQL. Questa tipica query SQL può includere anche diverse clausole che consentono di affinare i risultati della query. Ecco la sintassi di una query SQL:

SELECT column_1, 
 column_2, 
 aggregate_function(column_3),
 …
FROM table_1
JOIN table_2 
ON table_1.common_column = table_2.common_column
WHERE column_1 <condition>
GROUP BY column_1, column_2, …
HAVING aggregate_function(column_3) <condition>
ORDER BY column_1 [ASC|DESC];

Ecco una spiegazione e un esempio di ciascuna clausola:

Clausola SQL Spiegazione Esempio di codice Output del codice
FROM Definisce la tabella da cui estrarre i dati.
SELECT 
  first_name, 
  last_name
FROM employees;
Restituisce il nome e il cognome dei dipendenti dalla tabella employees.
JOIN Unisce i dati di due o più tabelle in modo da poterli interrogare come un'unica tabella.
SELECT 
  e.first_name,
  e.last _name,
  d.name
FROM employees e
JOIN department d
ON e.department_id = d.id;
Unisce le tabelle employees e department in base all'ID del reparto. Restituisce il nome e il cognome dei dipendenti e il nome del loro reparto.
WHERE Filtra i record prima dell' aggregazione e restituisce solo quelli che soddisfano la condizione indicata.
SELECT 
  first_name,
  last_name
FROM employees
WHERE last_name = 'Smith';
Restituisce il nome e il cognome di tutti i dipendenti il cui cognome è Smith dalla tabella employees.
GROUP BY Raggruppa i risultati della query in base ai valori delle colonne condivise. Spesso utilizzato con le funzioni aggregate.
SELECT 
  nationality,
  AVG(salary)
FROM employees
GROUP BY nationality;
Restituisce il salario medio dei dipendenti per ogni nazionalità.
HAVING Filtra i record dopo l' aggregazione e restituisce solo quelli che soddisfano la condizione indicata.
SELECT 
  nationality,
  AVG(salary)
FROM employees
GROUP BY nationality
HAVING AVG(salary) > 5000;
Restituisce il salario medio dei dipendenti per ogni nazionalità, ma solo per le nazionalità in cui il salario medio è superiore a 5.000.
ORDER BY Ordina il risultato in ordine crescente (1-10, A-Z) o decrescente (10-1, Z-A) in base ai valori delle colonne indicate.
SELECT 
  first_name,
  last_name
FROM employees
ORDER BY last_name ASC;
Restituisce il nome e il cognome dei dipendenti e ordina l'output in ordine alfabetico per cognome.

JOIN

JOIN è una clausola SQL che unisce due o più tabelle, consentendo il recupero dei dati da tutte le tabelle unite.

Nel grafico seguente sono riportate le spiegazioni e le rappresentazioni dei diversi tipi di JOIN.

INNER JOIN: restituisce solo le righe corrispondenti delle tabelle unite.

Scheda informativa sui colloqui SQL

LEFT (OUTER) JOIN: restituisce tutte le righe della prima tabella (sinistra) e solo le righe corrispondenti della seconda tabella (destra). I valori non corrispondenti della tabella di destra vengono visualizzati come NULL.

Scheda informativa sui colloqui SQL

RIGHT (OUTER) JOIN: restituisce tutte le righe della seconda tabella (destra) e solo le righe corrispondenti della prima tabella (sinistra). I valori non corrispondenti della tabella di sinistra vengono visualizzati come NULL.

Scheda informativa sui colloqui SQL

FULL (OUTER) JOIN: restituisce tutte le righe della tabella di sinistra e di quella di destra. I valori non corrispondenti di entrambe le tabelle vengono visualizzati come NULL.

Scheda informativa sui colloqui SQL

Aggregazione in SQL

L'aggregazione consiste nell'eseguire calcoli su più righe e restituire un singolo valore che rappresenta un risultato riassuntivo o statistico. È anche nota come aggregazione di righe (ad esempio, conteggio di righe, calcolo della media o della somma per gruppo di righe, ecc.

Come si esegue l'aggregazione dei dati in SQL: Questa operazione viene eseguita utilizzando le funzioni funzioni di aggregazione; è sufficiente passare l'argomento tra le parentesi della funzione. In altre parole, scrivere il nome della colonna che si desidera aggregare:

SELECT aggregate_function (column_name) 
FROM table_name;

GROUP BY: L'aggregazione viene solitamente eseguita insieme alla clausola GROUP BY. GROUP BY organizza le righe con gli stessi valori di colonna in un gruppo. La combinazione delle funzioni di aggregazione con GROUP BY consente di mostrare le etichette accanto ai valori aggregati, come nel grafico seguente:

Scheda informativa sui colloqui SQL

HAVING: La clausola HAVING filtra i gruppi in base al risultato di una funzione aggregata; solo i record che soddisfano la condizione vengono mostrati nell'output.

Ecco un esempio di come funziona:

Scheda informativa sui colloqui SQL

Funzioni aggregate: Le funzioni aggregate più comuni sono elencate di seguito. Per ulteriori informazioni sulle funzioni aggregate, consultare il nostro foglio informativo sulle funzioni aggregate di SQL.

Funzione aggregata Spiegazione Codice Esempio Codice di uscita
COUNT() Conta il numero di righe.
SELECT 
  country,
  COUNT(id)
FROM orders
GROUP BY country;
Restituisce il numero di ordini di ciascun paese nella tabella.
AVG() Calcola il valore medio.
SELECT 
  country,
  AVG(value)
FROM orders
GROUP BY country;
Restituisce il valore medio dell'ordine per paese.
SUM() Calcola la somma dei valori.
SELECT 
  country,
  SUM(value)
FROM orders
GROUP BY country;
Totalizza il valore degli ordini per paese.
MIN() Restituisce il valore più piccolo.
SELECT 
  country,
  MIN(value)
FROM orders
GROUP BY country;
Restituisce il valore più basso dell'ordine per paese.
MAX() Restituisce il valore maggiore.
SELECT 
  country,
  MAX(value)
FROM orders
GROUP BY country;
Restituisce il valore più alto dell'ordine per paese.

Per un approfondimento su GROUP BY e sulle funzioni aggregate, consultate il nostro articolo GROUP BY e funzioni aggregate: Una panoramica completa.

Operatori di insieme

Gli operatori set di SQL combinano i risultati di una o più istruzioni in un unico risultato . SELECT in un unico risultato.

Operatore Set Spiegazione
UNION Mostra solo le righe uniche (non duplicate) da tutti gli output dell'istruzione SELECT.
UNION ALL Mostra tutte le righe di tutti gli output delle istruzioni SELECT, compresi i duplicati.
INTERSECT Mostra solo le righe che esistono in tutti gli output delle istruzioni SELECT.
MINUS or EXCEPT Restituisce le righe del primo output SELECT che non esistono in altri output SELECT.

Sottoquery

SELECT Le query incorporate in un'altra query SQL sono chiamate subquery.

Possono essere utilizzate nelle seguenti istruzioni principali:

  • SELECT
  • INSERT
  • UPDATE
  • DELETE

Le clausole che accettano le subquery sono:

  • SELECT
  • FROM
  • WHERE
  • HAVING
  • JOIN

I tipi di subquery sono:

  • Scalare - Restituisce esattamente un valore.
  • Multi-fila - Restituisce più valori.
  • Correlata - Fa riferimento alla query principale.

L'infografica seguente illustra i diversi tipi di subquery.

Esempio 1: Subquery scalare

Scheda informativa sui colloqui SQL

Esempio 2: Subquery a più righe

Scheda informativa sui colloqui SQL

Esempio 3: Subquery correlata

Scheda informativa sui colloqui SQL

Operatori di subquery: Le subquery sono comunemente utilizzate con diversi operatori che consentono di confrontare i dati della query principale con l'output della subquery.

Operatore di subquery Spiegazione
ANY o SOME Restituisce VERO se un valore di una sottoquery soddisfa la condizione della query principale.
ALL Restituisce VERO se tutti i valori di una sottoquery soddisfano la condizione della query principale.
EXISTS Restituisce VERO se una sottoquery restituisce delle righe.
IN Restituisce tutti i valori della query principale che possono essere trovati nella sottoquery che restituisce più valori, ovvero un elenco di valori.

Operatori ed espressioni SQL

Gli operatori in SQL sono utilizzati per il confronto, le operazioni aritmetiche e logiche.

Le espressioni sono costituite da uno o più valori, operatori, funzioni e altri componenti della query che calcolano valori e creano condizioni. L'espressione più comune è CASE WHEN.

Operatori di confronto

Gli operatori di confronto sono utilizzati per confrontare i valori all'interno di una query.

Operatore di confronto Spiegazione Codice Esempio Codice di uscita
= Entrambi i valori sono uguali o corrispondenti.
SELECT 
  first_name,
  last_name
FROM employees
WHERE salary = 5000;
Restituisce tutti i dipendenti il cui stipendio è esattamente 5.000.
< Meno (inferiore, più piccolo) del valore confrontato.
SELECT 
  first_name,
  last_name
FROM employees
WHERE salary < 5000;
Restituisce tutti i dipendenti il cui stipendio è inferiore a 5.000.
<= Inferiore o uguale al valore confrontato.
SELECT 
  first_name,
  last_name
FROM employees
WHERE salary <= 5000;
Restituisce tutti i dipendenti il cui stipendio è pari o inferiore a 5.000.
> Maggiore (più alto, più grande) del valore confrontato.
SELECT 
  first_name,
  last_name
FROM employees
WHERE salary > 5000;
Restituisce tutti i dipendenti il cui stipendio è superiore a 5.000.
>= Maggiore o uguale al valore confrontato.
SELECT 
  first_name,
  last_name
FROM employees
WHERE salary >= 5000
Restituisce tutti i dipendenti il cui stipendio è pari o superiore a 5.000.
<> I valori non sono uguali o non corrispondono.
SELECT 
  first_name,
  last_name
FROM employees
WHERE salary <> 5000;
Restituisce tutti i dipendenti il cui stipendio non è pari a 5.000.
BETWEEN Controlla se il valore è compreso nell'intervallo specificato. L'operatore è inclusivo, il che significa che i valori uguali ai valori superiori e inferiori dell'intervallo sono inclusi.
SELECT 
  first_name, 
  last_name
FROM employees
WHERE salary BETWEEN 5000 
  AND 6000;
Restituisce tutti i dipendenti il cui stipendio è compreso tra 5.000 e 6.000, inclusi quelli il cui stipendio è esattamente 5.000 o 6.000.
LIKE Controlla se il valore corrisponde al modello di stringa (testo) indicato. Importante: questo operatore è sensibile alle maiuscole e alle minuscole.
SELECT 
  first_name,
  last_name
FROM employees
WHERE last_name LIKE 'van%';
Restituisce tutti i dipendenti il cui cognome inizia con 'van', come 'van Basten' e 'vanBeek'. Non include 'Vandeley', poiché la ricerca è sensibile alle maiuscole.
ILIKE Controlla se il valore corrisponde a un modello di stringa (senza distinzione tra maiuscole e minuscole).
SELECT 
  first_name,
  last_name
FROM employees
WHERE last_name ILIKE 'van%';
Restituisce tutti i dipendenti il cui cognome inizia con "van", ad esempio "van Basten", "vanBeek" e "Vandeley"; la ricerca non è sensibile alle maiuscole.
IS NULL controlla se il valore è NULL.
SELECT 
  first_name,
  last_name
FROM employees
WHERE end_date IS NULL;
Restituisce tutti i dipendenti che sono ancora nell'azienda, ovvero la cui data di fine rapporto è NULL.
IS NOT NULL Controlla se il valore non è NULL.
SELECT 
  first_name,
  last_name
FROM employees
WHERE end_date IS NOT NULL;
Restituisce tutti gli ex dipendenti, cioè i record in cui la data di fine lavoro non è NULL.
IN Controlla se il valore o i valori possono essere trovati nell'elenco di valori fornito.
SELECT 
  first_name,
  last_name
FROM employees
WHERE city IN (
  'New York', 
  'Los Angeles', 
  'Baltimore');
Restituisce tutti i dipendenti che vivono a New York, Los Angeles o Baltimora.

Operatori aritmetici

Gli operatori aritmetici sono utilizzati per eseguire operazioni matematiche in SQL.

Operatore aritmetico Spiegazione Codice Esempio Codice di uscita
+ Aggiunge valori.
SELECT 
  first_name,
  last_name,
  salary + bonus
FROM employees;
Restituisce i nomi dei dipendenti e calcola la loro retribuzione totale, ovvero la somma di stipendio e bonus.
- Sottrae i valori.
SELECT 
  first_name,
  last_name,
  vacation_days - used_vacation_day
FROM employees;
Restituisce i nomi dei dipendenti e calcola i loro giorni di ferie rimanenti, ovvero la differenza tra i giorni di ferie totali e quelli utilizzati.
* Moltiplica i valori.
SELECT 
  first_name,
  last_name,
  salary*1.03
FROM employees;
Restituisce i nomi dei dipendenti e calcola il loro stipendio dopo un aumento del 3%, cioè il prodotto del loro stipendio attuale per 1,03.
/ Divide i valori.
SELECT 
  first_name,
  last_name,
  salary/12
FROM employees;
Restituisce i nomi dei dipendenti e calcola il loro stipendio mensile, cioè il loro stipendio annuale diviso per 12.
** Eleva un numero a potenza di un altro.
SELECT 
  first_name,
  last_name,
salary * 1.05 ** 3
FROM employees;
Restituisce i nomi dei dipendenti e calcola il loro stipendio dopo tre anni di aumenti annuali del 5%, ovvero il prodotto del loro stipendio attuale per 1,05 alla potenza di 3.
% Restituisce il resto della divisione (operatore modulo).
SELECT 
  first_name,
  last_name
FROM employees
WHERE id % 2 = 0;
Restituisce tutti i dipendenti il cui ID è un numero pari (perché il resto di ID diviso per due è zero).

Operatori logici

Gli operatori logici combinano più condizioni.

Operatore logico Spiegazione Esempio di codice Codice di uscita
AND Verifica se entrambe le condizioni sono soddisfatte.
SELECT 
  first_name,
  last_name
FROM employees
WHERE department = 'IT' 
  AND salary > 5000;
Restituisce tutti i dipendenti che lavorano nel settore IT e il cui stipendio è superiore a 5.000.
OR Controlla se una delle due condizioni è soddisfatta.
SELECT 
  first_name,
  last_name
FROM employees
WHERE department= 'IT' 
  OR salary > 5000;
Restituisce tutti i dipendenti che lavorano nel settore IT o il cui stipendio è superiore a 5.000.
NOT Controlla se la condizione data non è soddisfatta.
SELECT 
  first_name,
  last_name
FROM employees
WHERE NOT department = 'IT';
Restituisce tutti i dipendenti che non lavorano nel settore IT.

CASO QUANDO

CASE WHEN è un'espressione condizionale che restituisce i valori specificati nei casi in cui la condizione è o non è soddisfatta. È l'implementazione di SQL della logica IF-THEN.

La sintassi di CASE WHEN è:

CASE 
    WHEN condition_1 THEN value_1
    WHEN condition_2 THEN value_2
    ...
    ELSE default_value
END;
  • CASE inizia l'espressione.
  • WHEN specifica la condizione che deve essere soddisfatta.
  • THEN specifica il valore che verrà restituito se la condizione è soddisfatta.
  • ELSE specifica il valore che verrà restituito se la condizione non è soddisfatta.
  • END termina l'espressione.

Funzioni SQL

Lefunzioni SQL sono parti di codice denominate e predefinite che possono essere utilizzate in una query SQL. Queste funzioni accettano argomenti (scritti tra le parentesi della funzione) che indicano alla funzione come o dove eseguirli.

I tipi fondamentali di funzioni SQL sono:

Funzioni di testo

Funzione di testo Spiegazione Esempio di codice Codice di uscita
CONCAT() Concatena due o più stringhe in un'unica stringa.
SELECT 
  CONCAT(first_name, 
    ' ', last_name)
FROM employees;
Concatena il nome e il cognome dei dipendenti da due colonne separate in un'unica stringa visualizzata in una colonna.
SUBSTRING() Restituisce parte di una stringa.
SELECT 
  first_name,
  last_name,
  SUBSTRING(last_name, 4)
FROM employees;
Restituisce i nomi completi dei dipendenti e le prime quattro lettere dei loro cognomi.
LENGTH() Restituisce la lunghezza di una stringa (come numero di caratteri).
SELECT 
  first_name,
  last_name,
  LENGTH(last_name)
FROM employees;
Restituisce i nomi completi dei dipendenti e il numero di caratteri del loro cognome.
LEFT() Restituisce un numero specifico di caratteri dall'inizio (lato sinistro) di una stringa.
SELECT 
  first_name,
  last_name,
  LEFT(last_name, 3)
FROM employees;
Restituisce i nomi completi dei dipendenti e le prime tre lettere dei loro cognomi.
RIGHT() Restituisce un numero specifico di caratteri dalla fine (lato destro) di una stringa.
SELECT 
  first_name,
  last_name,
  RIGHT(last_name, 3)
FROM employees;
Restituisce i nomi completi dei dipendenti e le ultime tre lettere del loro cognome.
TRIM() Rimuove gli spazi vuoti da entrambi i lati di una stringa.
SELECT 
  TRIM(first_name),
  TRIM(last_name),
FROM employees;
Restituisce i nomi completi dei dipendenti senza spazi iniziali e finali, ad esempio, il cognome Jonas" diventa "Jonas".
REPLACE() Sostituisce una sottostringa specificata con un'altra sottostringa.
SELECT 
  first_name,
  last_name,
  REPLACE(department,
    'Acuonting', 'Accounting')
FROM employees; 
Restituisce i nomi completi dei dipendenti e i loro reparti, rinominando il reparto 'Acuonting' in 'Accounting'.
REVERSE() Inverte una stringa.
SELECT REVERSE(last_name)
FROM employees;
Restituisce le versioni invertite dei cognomi dei dipendenti, ad esempio 'Jonas' diventa 'sanoJ'.
UPPER() Converte una stringa in tutti i caratteri maiuscoli.
SELECT UPPER(last_name)
FROM employees;
Restituisce le versioni tutte maiuscole dei cognomi dei dipendenti, ad esempio 'Jonas' diventa 'JONAS'.
LOWER() Converte una stringa in tutti i caratteri minuscoli.
SELECT LOWER(last_name)
FROM employees;
Restituisce le versioni tutte minuscole dei cognomi dei dipendenti, ad esempio 'Jonas' diventa 'jonas'.

Un'analisi approfondita delle funzioni di testo è disponibile nell'articolo Una panoramica delle funzioni di testo SQL.

Funzioni numeriche

Funzione numerica Spiegazione Esempio di codice Codice di uscita
ABS() Restituisce il valore assoluto di un valore numerico.
SELECT ABS(-169.23);
-169,23 diventa 169,23.
ROUND() Arrotonda un valore numerico al numero di cifre decimali specificato.
SELECT ROUND(169.2389, 3);
169,2389 viene arrotondato al terzo decimale e diventa 169,239.
CEILING() Arrotonda un valore numerico fino al primo intero maggiore o uguale ad esso.
SELECT CEILING(169.2389);
169,2389 viene arrotondato a 170.
FLOOR() Arrotonda un valore numerico fino al primo intero inferiore o uguale ad esso.
SELECT FLOOR(169.2389);
169,2389 viene arrotondato per difetto a 169.
POWER() Eleva un valore numerico alla potenza di un altro valore numerico.
SELECT POWER(5, 4);
Aumenta 5 alla potenza di 4, che equivale a 625.
SQRT() Restituisce la radice quadrata di un valore numerico.
SELECT SQRT(25);
Restituisce la radice quadrata di 25, che equivale a 5.
RAND() oppure RANDOM() Restituisce un numero casuale a virgola mobile compreso tra 0 e 1.
SELECT RANDOM();
Ad esempio, restituisce 0,4371221377641987.
LOG() Restituisce il logaritmo di un valore numerico in una base specificata.
SELECT LOG(12, 2);
Restituisce il logaritmo in base 2 di 12, ovvero 0,2789429456511298.
LN() Restituisce il logaritmo naturale di un valore numerico.
SELECT LN(12);
Restituisce il logaritmo naturale di 12, che è 2,4849066497880004.

Per un approfondimento sulle funzioni numeriche, consultare l'articolo Funzioni numeriche SQL.

Funzioni NULL

NULL Funzione Spiegazione Esempio di codice Codice di uscita
COALESCE() Restituisce il primo valore non NULL di un elenco di argomenti.
SELECT 
  first_name,
  last_name,
  COALESCE(department, 'N/A')
FROM employees;
Restituisce i dipendenti e i loro dipartimenti. Quando il valore della colonna department è NULL, viene visualizzato come N/A nell'output.
NULLIF() Restituisce NULL se due espressioni sono uguali; altrimenti, restituisce la prima espressione.
SELECT 
  first_name,
  last_name
  NULLIF(department, 'N/A')
FROM employees;
Restituisce i dipendenti e i loro reparti. Quando il valore della colonna department è N/A, viene visualizzato come NULL nell'output.

DML - Modifica dei dati in SQL

Di seguito viene fornita una panoramica dei tre comandi utilizzati per la modifica dei dati (comandi DML).

Comando DML Spiegazione Esempio di codice Codice di uscita
INSERT Inserisce una o più righe di dati in una tabella.
INSERT INTO employees (first_name, 
  last_name, department)
VALUES ('Francis', 'Ford', 'Sales');
Inserisce un nuovo dipendente nella tabella employees. Il nome del dipendente inserito è Francis, il suo cognome è Ford e lavora nel reparto vendite.
UPDATE Modifica il valore di una colonna per una o più righe.
UPDATE employees
SET department = 'Accounting'
WHERE department = 'Acuonting';
Aggiorna il nome del reparto errato "Acuonting" con quello corretto "Accounting".
DELETE Elimina una o più righe dalla tabella.
DELETE
FROM employees
WHERE id = 6;
Cancella tutti i dati dalla riga in cui il valore dell'ID dipendente è 6.

DDL - Definizione della struttura dei dati in SQL

I concetti chiave del DDL (Data Definition Language) sono:

Comandi DDL

Ecco una panoramica dei comandi DDL:

Comando DDL Spiegazione Esempio di codice Codice di uscita
CREATE TABLE Crea una nuova tabella con i nomi delle colonne, i tipi di dati e i vincoli specificati.
CREATE TABLE customers(
  id INT PRIMARY KEY,
  first_name VARCHAR(120),
  last_name VARCHAR(120)
);
Crea la tabella customers con colonne denominate id, first_name, e last_name. I tipi di dati delle colonne sono rispettivamente INT, VARCHAR(120) e VARCHAR(120). Inoltre, il vincolo di chiave primaria è definito sulla colonna ID.
DROP TABLE Rimuove l'intera tabella e la sua definizione da un database.
DROP TABLE customers;
Elimina la tabella customers insieme alle sue colonne, ai dati, alle definizioni dei tipi di dati, ai vincoli, ecc.
CREATE VIEW Crea una query memorizzata (o "vista") che può essere riutilizzata e usata in altre query.
CREATE VIEW salary_summary AS
SELECT 
  department, 
  AVG(salary)
FROM employees
GROUP BY department;
Crea una vista denominata salary_summary, che calcola lo stipendio medio per reparto.
DROP VIEW Elimina completamente una vista e la sua definizione dal database.
DROP VIEW salary_summary;
Elimina la vista salary_summary e la sua definizione dal database.
ALTER TABLE Modifica la struttura della tabella esistente ...
... rinominare la tabella
ALTER TABLE employees
RENAME TO salaries;
Cambia il nome della tabella employees in salaries.
... rinominare una colonna
ALTER TABLE employees
RENAME COLUMN last_name TO surname;
Cambia il nome della colonna last_name in surname.
.. modifica del tipo di dati di una colonna
ALTER TABLE employees
ALTER COLUMN salary DECIMAL(10,2);
Cambia il tipo di dati della colonna salary in DECIMAL(10,2).
... aggiungendo una colonna
ALTER TABLE employees
ADD date_of_birth DATE;
Aggiunge la colonna date_of_birth (del tipo di dati DATE ) alla tabella employees.
... eliminando (cancellando) la colonna
ALTER TABLE employees
DROP COLUMN  end_date;
Rimuove la colonna end_date dalla tabella employees.

Tipi di dati SQL

Di seguito è riportata una panoramica dei tipi di dati SQL più comuni.

Tipo di dati Spiegazione
Tipi di dati numerici
INT Rappresenta i numeri interi, cioè i numeri interi. L'intervallo va da -2147483648 a 2147483648 e utilizza 4 byte di memoria.
DECIMAL(p, s) Rappresenta numeri decimali a virgola fissa con precisione p (il numero totale di cifre prima e dopo la virgola) e scala s (cifre dopo la virgola).
FLOAT Rappresenta valori approssimati con precisione in virgola mobile.
SMALLINT Rappresenta piccoli numeri interi da -32.768 a 32.767; utilizza 2 byte di memoria.
Tipi di dati stringa
CHAR(n) Rappresenta una stringa di lunghezza fissa composta da un numero n di caratteri; la lunghezza massima è 255.
VARCHAR(n) Rappresenta una stringa di lunghezza variabile di n caratteri (massimo 255).
TEXT Rappresenta una stringa di lunghezza variabile grande (fino a 65.535 byte).
Tipi di dati di data e ora
DATE Una data nel formato AAAA-MM-GG.
TIME Un'ora nel formato HH:MI:SS.
DATETIME Data e ora nel formato AAAA-MM-GG HH:MI:SS.
INTERVAL Una data o un periodo di tempo, ad esempio ANNO, MESE, GIORNO, ORA, ecc.
BOOLEAN Un valore logico, ad esempio VERO o FALSO.

Vincoli SQL

Ecco una panoramica dei vincoli SQL più comuni:

Vincolo Spiegazione Esempio di codice Output del codice
PRIMARY KEY Assicura che i valori della colonna siano unici (non duplicati) e non NULL.
CREATE TABLE orders (
  id INT PRIMARY KEY,
  value DECIMAL(10,2)
);
I valori della colonna id della tabella orders saranno unici e non accetteranno NULL.
FOREIGN KEY Collega una colonna di una tabella alla chiave primaria di un'altra tabella. In questo modo si crea una relazione tra le due tabelle.
CREATE TABLE orders (
  id INT PRIMARY KEY,
  value DECIMAL(10,2),
  customer_id INT,
  FOREIGN KEY (customer_id) REFERENCES customers (id)
);
La colonna customer_id della tabella orders è una chiave esterna che fa riferimento alla colonna id della tabella customers.
NOT NULL Assicura che una colonna non accetti valori NULL.
CREATE TABLE orders (
  id INT PRIMARY KEY,
  value DECIMAL(10,2) NOT NULL
);
I valori della colonna value non possono essere NULL, cioè ogni ordine deve avere un valore.
UNIQUE Assicura che i valori della colonna siano unici, ma consente i valori NULL.
CREATE TABLE customer(
  id INT PRIMARY KEY,
  name VARCHAR(120),
  nin INT UNIQUE
);
I valori della colonna nin (National Identification Number) devono essere univoci, ma sono ammessi i valori NULL.
DEFAULT Definisce un valore di colonna predefinito quando non viene specificato un valore per quella colonna durante INSERT.
CREATE TABLE orders (
  id INT PRIMARY KEY,
  value DECIMAL(10,2),
  order_date DEFAULT CURRENT_DATE
);
Se order_date non viene definito durante INSERT, il valore predefinito sarà la data corrente.
CHECK Controlla se i valori di una colonna soddisfano una determinata condizione; rifiuta quelli che non la soddisfano.
CREATE TABLE orders (
  id INT PRIMARY KEY,
  value DECIMAL(10,2),
  check(value>0)
);
Impone una regola per cui il valore di un ordine non può essere zero se deve essere memorizzato nella tabella orders.

Ulteriori risorse per il colloquio SQL

Oltre a questo foglio informativo sul colloquio SQL, utilizzate queste risorse aggiuntive per rivedere le domande e gli argomenti del colloquio SQL:

  1. Pratica su SQL completo per i colloqui
  2. Top 100+ domande di colloquio SQL ed esercizi di pratica
  3. Le 10 migliori domande di colloquio SQL JOIN con le relative risposte
  4. Le 9 principali domande di SQL GROUP BY
  5. Top 10 SQL Window Functions (Funzioni Finestra) Domande per i colloqui
  6. Top 5 domande di intervista su SQL CTE
  7. Top 27 SQL avanzato Domande di intervista con risposte
  8. 15 domande di colloquio SQL difficili per utenti esperti

Oltre il foglio informativo del colloquio SQL

In questa scheda informativa sul colloquio SQL abbiamo trattato tutti i concetti fondamentali. Per fare colpo durante il colloquio, dovrete dimostrare di padroneggiare questi concetti.

Questo cheat sheet vi aiuterà a trovare rapidamente la definizione o un esempio di un particolare comando SQL. Utilizzatelo ogni volta che vi bloccate sulla terminologia o sui concetti SQL. Tuttavia, non si tratta di una risorsa di apprendimento a sé stante. È meglio utilizzarlo insieme al nostro SQL per principianti corso, Pratica su SQL o ad altre risorse principali per l'apprendimento e la pratica di SQL.

Combinate questi materiali, continuate a esercitarvi e riuscirete a superare il colloquio SQL!