Cheat sheet di SQL definitivo da aggiungere ai segnalibri per dopo [2022]
Pubblicato: 2022-06-17SQL, o Structured Q uery L anguage è un insieme di comandi per la gestione di operazioni di database relazionali come eliminare, creare, aggiornare, leggere e così via.
SQL è lo standard internazionale utilizzato dai database relazionali dal 1987. Esistono quattro tipi di comandi SQL:
- Data Definition Language (DDL) – Questi comandi definiscono la struttura del database. Ad esempio, rilascia, rinomina, modifica e crea. Influiscono sulla struttura del database. Ad esempio, la creazione di un database o la ridenominazione di una tabella.
- Data Manipulation Language (DML) – Questi comandi vengono utilizzati per lavorare con i dati. Ad esempio, inserisci, seleziona, aggiorna, elimina. Questi non influiscono sulle tabelle o sulla struttura del database, ma sui dati presenti nelle tabelle. Ad esempio, inserendo una nuova riga o aggiornando un valore nella riga.
- Transaction Control Language (TCL) – Questi comandi controllano l'elaborazione delle transazioni nel database. Ad esempio, eseguire il rollback, salvare, eseguire il commit. Questi comandi hanno un impatto permanente sul database. Ad esempio, ripristinare l'intera transazione allo stato precedente anche se un processo non riesce.
- Data Control Language (DCL) : i comandi di controllo dei dati vengono utilizzati per autorizzare gli utenti e concedere solo le autorizzazioni necessarie a un utente o un gruppo. Ad esempio, un utente può disporre dell'autorizzazione di sola lettura, mentre un altro può avere l'autorizzazione di lettura e scrittura. Il controllo dell'accesso viene eseguito utilizzando i comandi di concessione, negazione e revoca.
Di seguito è riportato il Cheat sheet di SQL contenente i comandi più utili. Il cheat sheet ti aiuterà a fare rapidamente riferimento ai comandi richiesti con la sintassi corretta e il risultato atteso di una query. In questo cheat sheet, ci concentriamo sui comandi DDL e DML poiché gli altri due tipi sono abbastanza semplici da usare.
Query di definizione e manipolazione dei dati
Comando | Descrizione | Esempio |
INSERISCI | Aggiunge una colonna o un vincolo (come specificato) alla tabella esistente. | ALTER TABLE employee ADD last_name varchar2(255); ALTER TABLE employee ADD CONSTRAINT emp_det PRIMARY KEY (id, last_name); ALTER TABLE employee ADD last_name varchar2(255); ALTER TABLE employee ADD CONSTRAINT emp_det PRIMARY KEY (id, last_name); |
ALTER TABELLA | Modifica la tabella specificata per aggiungere, aggiornare o eliminare la colonna di una tabella. | ALTER TABLE employee ADD last_name varchar2(255); ALTER TABLE employee DROP COLUMN last_name; |
ALTER COLONNA | Modifica il tipo di dati della colonna. Ad esempio, per modificare il tipo di colonna join_date della tabella employee da varchar2 a datetime. | ALTER TABLE employee ALTER COLUMN joining_date datetime; |
TUTTO | Operatore logico utilizzato con SELECT, WHERE e HAVING e restituisce true se tutti i valori soddisfano la condizione di subquery | SELECT employee_name, joining_date from employee WHERE employee_id = ALL (select employee_id from department_details WHERE department = 'R&D'); |
E | Operatore logico che restituisce true solo quando tutte le condizioni nella clausola WHERE sono soddisfatte. | SELECT employee_name, salary from employee WHERE city = 'California' AND salary > 2000; |
QUALUNQUE | Operatore logico; restituisce true se anche uno dei valori della sottoquery soddisfa la condizione in cui la clausola | SELECT employee_id, employee_name from employee WHERE employee_id = ANY (select employee_id from department_details WHERE department = 'HR' OR department = 'R&D'); |
COME | Crea un alias per la tabella o la colonna fino al momento dell'esecuzione della query, utile quando il nome viene utilizzato più volte, soprattutto durante i join di tabelle | SELECT count(employee_id) AS employees_from_houston from employee WHERE city = 'Houston'; |
ASC | Restituisce i dati in ordine finale ascendente, utilizzati con la clausola ORDER BY. ORDER BY stesso ordina i risultati in ordine crescente per impostazione predefinita. | SELECT employee_name, joining_date, salary from employee ORDER BY employee_name ASC; |
FRA | Per selezionare valori all'interno di un intervallo | SELECT employee_name, joining_date, department_id from employee WHERE salary BETWEEN 40000 AND 100000; |
ASTUCCIO | Consiste in una serie di dichiarazioni; restituisce il valore dell'istruzione che è vera, SE nessuna delle condizioni è soddisfatta, la condizione nella parte ELSE viene eseguita. Se non c'è altro, restituisce NULL. | SELECT order_amount, customer_id, contact_email CASE WHEN order_amount > 3000 THEN "Eligible for 40% discount" WHEN order_amount between 2000 and 3000 THEN "Eligible for 25% discount" ELSE "Eligible for 5% discount" END FROM order_details; |
CREA DATABASE | Crea un nuovo database con il nome specificato | CREATE DATABASE movies_development; |
CREA TABELLA | Crea una nuova tabella con il nome della tabella e i nomi e i tipi di colonna specificati | CREATE TABLE movie_info (movie_name varchar2(255), release_date datetime, lead_actor varchar2(255), music_director varchar2(255)); |
PREDEFINITO | Imposta un valore predefinito per la colonna specificata, utilizzato con i comandi CREATE o ALTER TABLE | CREATE TABLE employee (joining_date SET DEFAULT CURRENT_DATE); ALTER TABLE product ALTER is_available SET DEFAULT true; |
ELIMINA | Elimina i dati dalla tabella specificata | DELETE from employee where employee_id = 345; |
DEC | Restituisce i dati nell'ordine finale de sc , utilizzato con la clausola ORDER BY. | SELECT employee_name, joining_date, salary from employee ORDER BY employee_name DESC; |
COLONNA A GOCCIA | Elimina la colonna specificata dalla tabella specificata. | ALTER TABLE employee DROP COLUMN employee_name; |
DATABASE DI GOCCIA | Elimina l'intero database | DROP DATABASE movies_development; |
CADUTA PREDEFINITO | Elimina il valore predefinito della colonna specificata | ALTER TABLE employee ALTER COLUMN is_available DROP DEFAULT; |
TAVOLA A GOCCIA | Elimina la tabella specificata | DROP TABLE employee; |
ESISTE | Verifica se un record esiste o meno nella sottoquery e restituisce true se vengono trovati uno o più risultati. | SELECT employee_id, contact_number FROM employee WHERE EXISTS (SELECT employee_id, department FROM department WHERE employee_id = 345 AND department = 'HR'); |
DA | Specifica la tabella da cui selezionare o eliminare i dati | SELECT * FROM employee; DELETE FROM employee where employee_id = 345; |
RAGGRUPPA PER | Raggruppa i dati in base alla colonna specificata, utilizzati per le funzioni di aggregazione | Visualizza il numero di dipendenti in ogni paeseSELECT COUNT(employee_id), country from employee GROUP BY country; Mostra le valutazioni medie dei dipendenti di ciascun reparto SELECT AVG(rating), department from employee GROUP BY department; |
IN | Utilizzato per selezionare più valori contemporaneamente in una clausola WHERE invece di utilizzare più condizioni OR | SELECT employee_name FROM employee WHERE country IN ('India', 'United Kingdom', 'Singapore', 'Australia'); |
INDICE | Index rende l'interrogazione dei dati più efficiente e veloce. Gli indici vengono generalmente creati sulle colonne più cercate. | Crea indice:CREATE INDEX idx_employee ON employee (first_name, last_name); Crea un indice univoco in cui i valori non possono essere duplicati: CREATE UNIQUE INDEX idx_employee ON employee (first_name, last_name); Elimina l'indice: ALTER TABLE employee DROP INDEX idx_employee; |
INSERIRE | Aggiungi una nuova riga in una tabella | INSERT INTO employee (employee_id, employee_name, salary, core_skill) VALUES (451, 'Lee Cooper', 40000, 'Java'); |
È ZERO | Verifica la presenza di valori nulli | SELECT employee_id from employee where employee_name IS NULL; |
NON E' NULLA | Verifica la presenza di valori che non sono null | SELECT employee_id, core_skill from employee where core_skill IS NOT NULL; |
PIACE | Restituisce tutti i valori che corrispondono a un determinato modello | SELECT employee_id, first_name, last_name where first_name LIKE '%tony'; |
NON COME | Restituisce tutti i valori che non corrispondono al modello specificato | SELECT employee_id, first_name, last_name where first_name NOT LIKE '%tony'; |
O | Restituisce true se una delle condizioni nella clausola where è soddisfatta | SELECT * from employee where country = 'India' OR country = 'Australia'; |
ORDINATO DA | Ordina i risultati in ordine crescente (per impostazione predefinita) o nell'ordine specificato nella query ( finale ascendente o finale discendente ) | SELECT employee_name, salary from employee ORDER BY salary DESC; |
ROWNUM | Restituisce il numero di righe specificato menzionato nella clausola WHERE della query | SELECT * from employee where ROWNUM <= 5; This will return the first five rows in the resultset. |
SELEZIONARE | Seleziona le colonne menzionate della tabella in base alle condizioni specificate. Se viene specificato *, vengono restituiti tutti i valori delle colonne. | SELECT employee_id from employee; SELECT * from employee; |
SELEZIONA IN | Copia i dati dalla tabella di origine in un'altra tabella di destinazione. È possibile selezionare tutte le colonne (*) o colonne specifiche. | SELECT * INTO new_employee_info FROM employee; SELECT employee_name, joining_date, core_skill INTO new_employee_info FROM employee; |
SELEZIONA ALTO | Seleziona il numero specificato di record dalla tabella | SELECT TOP 5 employee_id from employee where employee_rating = 5; |
IMPOSTARE | Imposta il valore di una colonna sul nuovo valore specificato durante un'operazione UPDATE. | UPDATE employee SET first_name = 'Tony' WHERE employee_id = 345; |
ALCUNI | Restituisce true se una delle condizioni nella sottoquery è soddisfatta. SOME è simile al comando ANY. | SELECT employee_id, employee_name from employee WHERE salary > SOME (select salary from employee WHERE department = 'HR'); |
TRONCO TAVOLA | Elimina i dati dalla tabella: ricorda che la tabella non verrà eliminata. | TRUNCATE TABLE log_info; |
UNIONE | Restituisce valori distinti da 2 o più tabelle unite. Per ottenere anche i valori duplicati, utilizzare UNION ALL. | SELECT city from employee UNION SELECT city from office_locations; |
UNICO | Aggiunge un vincolo univoco alla colonna specificata, il che significa che la colonna non può avere valori duplicati. Può essere utilizzato durante la creazione o la modifica della tabella dei comandi. | CREATE TABLE employee (employee_id int NOT NULL, UNIQUE(employee_id)); ALTER TABLE employee ADD UNIQUE(employee_id); |
AGGIORNARE | Aggiorna il valore della colonna specificata con un nuovo valore | UPDATE employee SET first_name = 'Tony' WHERE employee_id = 345; |
I VALORI | Utilizzato con il comando INSERT per aggiungere una nuova riga di valori nella tabella | INSERT INTO employee (employee_id, employee_name, salary, core_skill) VALUES (451, 'Lee Cooper', 40000, 'Java'); |
DOVE | Aggiunge condizioni per filtrare il set di risultati di un'istruzione select | SELECT * from employee WHERE salary > 20000; |
Funzioni aggregate
Le funzioni aggregate sono comandi di manipolazione dei dati che funzionano su colonne numeriche come int e float. Questi sono utili per filtrare e ordinare i dati a livello di database stesso. Alcune funzioni aggregate comunemente utilizzate sono:

FUNZIONE | DESCRIZIONE | ESEMPIO |
AVG | Restituisce il valore medio della colonna specificata | SELECT AVG(marks) from students where subject = 'English'; |
MIN | Restituisce il valore più piccolo della colonna specificata | SELECT MIN(price) from product WHERE product_category = 'shoes'; |
MASSIMO | Restituisce il valore più grande della colonna specificata | SELECT MAX(quantity), product_name from inventory; |
CONTARE | Restituisce il numero di righe che soddisfano la query | Mostra un numero totale di record nella tabella dei dipendenti.SELECT COUNT(*) from employee; Mostra il numero di dipendenti il cui stipendio è maggiore di 20000 SELECT COUNT(*) from employee where salary > 20000; |
SOMMA | Restituisce la somma dei valori della colonna numerica specificata | SELECT SUM(marks) from students where subject = 'English'; |
Join SQL
I join SQL sono molto importanti perché connettono e filtrano i dati da più tabelle. I join sono un po' complicati e possono dare risultati inaspettati, se non eseguiti correttamente. La tabella seguente ti aiuterà a fare rapidamente riferimento ai 4 tipi di join SQL:
TIPO DI ISCRIZIONE | DESCRIZIONE | SINTASSI | ESEMPIO |
Giunzione interna | Restituisce i record che corrispondono nelle tabelle unite; è simile a un incrocio. | SELECT column1, column2… da table1 INNER JOIN table2 su table1.columnN = table2.columnN; | select c.customer_id, o.order_id, c.customer_phone from customer c INNER JOIN order o on c.customer_id = o.customer_id; |
Join completo (esterno). | Restituisce tutti i record che hanno una corrispondenza su entrambi i lati, sinistro o destro. È simile a un sindacato. | SELECT column1, column2… from table1 FULL OUTER JOIN table2 su table1.columnN = table2.columnN; | select c.customer_id, o.order_id, c.customer_phone from customer c FULL OUTER JOIN order o on c.customer_id = o.customer_id; |
Unisciti a sinistra | Restituisce tutti i record della tabella di sinistra e i record che corrispondono ai criteri della tabella di destra | SELECT column1, column2… from table1 LEFT JOIN table2 su table1.columnN = table2.columnN; | select c.country_id, c.country_name, l.location_name from country c LEFT JOIN locations l on c.country_id = l.country_id; |
Partecipa a destra | Restituisce tutti i record della tabella di destra e i record che corrispondono ai criteri della tabella di sinistra | SELECT column1, column2… da table1 RIGHT JOIN table2 su table1.columnN = table2.columnN; | select c.country_id, c.country_name, l.location_name from country c RIGHT JOIN locations l on c.country_id = l.country_id; |
Risorse addizionali
SQL è uno strumento importante per sviluppatori di software, data scientist e analisti allo stesso modo. Un pratico riferimento ai comandi SQL sotto forma di un cheat sheet può farti risparmiare molto tempo e aiutarti a comprendere l'output atteso di ciascuna parola chiave.
Per ulteriori informazioni, fare riferimento alle seguenti risorse:
Esercitazione SQL: Cheat Sheet di SQL
Intellipaat: cheat sheet dei comandi SQL
Configurazione del sito Web: cheat sheet di SQL
ProgrammingWithMosh: cheat sheet di SQL
Cheat sheet di PostgreSQL