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

Le query SQL più importanti per i principianti

Come si ottengono i dati da una tabella? Come si crea o si cancella una tabella? Come si visualizzano i record distinti? Come si selezionano le righe che memorizzano un valore specifico in una colonna? Tutto questo si può fare facilmente scrivendo query SQL di base.

Questa guida illustra le 30 query SQL più importanti per i principianti. Diamo un'occhiata.

1. Recupero di dati da tutte le colonne

Questa è una query molto semplice per visualizzare tutti i dati di una tabella. Si noti che questa query ha un solo carattere dopo SELECT: "*" (che indica tutte le colonne). Pertanto, non è necessario elencare i nomi delle colonne. Naturalmente, ricordarsi di scrivere FROM e il nome della tabella da cui si vogliono recuperare i dati. In questo esempio, stiamo recuperando i dati dalla tabella animal.

SELECT *
FROM animal;

2. Recupero di dati da alcune colonne

La query precedente visualizza tutti i dati della tabella animal. Se si desidera recuperare solo i dati di alcune colonne, elencarle dopo SELECT. In questo esempio, vengono recuperati i dati dalle colonne id e name.

SELECT id, name
FROM animal;

3. Filtrare i dati usando la clausola WHERE

Oltre a recuperare i dati da determinate colonne, è possibile filtrare i dati elencando le condizioni dopo WHERE. In questo esempio, c'è una condizione: age>=2. Stiamo cercando i record con un valore di 2 o più nella colonna age.

SELECT id, name, age
FROM animal
WHERE age>=2;

4. Filtrare i dati utilizzando condizioni unite dall'operatore AND

Se si desidera filtrare i dati utilizzando più di una condizione, è possibile utilizzare AND. In questo esempio, cerchiamo i record con un valore pari o superiore a 2 nella colonna age e 'dog' nella colonna name.

SELECT id, name, age 
FROM animal
WHERE age >= 2 AND name = 'dog';

5. Filtrare i dati usando le condizioni unite dall'operatore OR

Se solo una delle condizioni deve essere soddisfatta, si può usare OR. In questo esempio, cerchiamo i record con un valore pari o superiore a 2 nella colonna age o 'dog' nella colonna name.

SELECT id, name, age 
FROM animal
WHERE age >= 2 OR name = 'dog';

6. Uso di DISTINCT per recuperare record non ripetuti

È possibile inserire DISTINCT dopo SELECT per recuperare un solo record di ogni tipo. In questo esempio, si vogliono recuperare i record delle colonne name e color. Se i valori di queste colonne sono uguali in più di un record (ad esempio, c'è più di una maglietta gialla nella tabella), la query restituisce solo uno di questi record.

SELECT DISTINCT name, color
FROM clothing;

7. Recupero di dati senza NULL in una determinata colonna

Se si desidera recuperare i dati solo dalle righe senza NULL in una determinata colonna, utilizzare IS NOT NULL. In questo esempio, il valore della colonna color potrebbe non essere NULL. Pertanto, verranno restituiti solo i record con un valore memorizzato nella colonna color. Un operatore simile a IS NOT NULL è IS NULL, che verifica se un valore è uguale a NULL.

SELECT name, color
FROM clothing
WHERE color IS NOT NULL;

8. Ordinamento dei dati in base a una colonna

Per ordinare i dati in base a una colonna, inserire il nome della colonna dopo ORDER BY. Il metodo di ordinamento predefinito è quello alfabetico, ma è possibile visualizzare le righe in ordine decrescente aggiungendo DESC dopo il nome della colonna. In questo esempio, si desidera ordinare i dati delle colonne id e name in base alla colonna name.

SELECT id, name 
FROM animal
ORDER BY name;

9. Ordinamento dei dati in base a più colonne

È anche possibile ordinare i dati in base a più di una colonna. In questo esempio, i record vengono ordinati prima secondo la colonna name in ordine decrescente e poi secondo la colonna id in ordine crescente. Se la query trova record con lo stesso nome (ad esempio, tutti i record con 'dog' nel nome della colonna), ordina questi record in ordine crescente secondo id.

SELECT id, name 
FROM animal
ORDER BY name DESC, id;

10. Ricerca di valori che corrispondono a un certo schema

È possibile utilizzare LIKE per recuperare i dati che corrispondono a un determinato modello. In questo esempio, si vogliono recuperare i record delle colonne id e name che memorizzano una stringa contenente il carattere "e" nella colonna name (ad esempio, record con nomi come elefante,apee così via).

SELECT id, name 
FROM animal
WHERE name LIKE '%e%';

11. Unire i valori delle colonne di testo in un'unica stringa

La funzione CONCAT unisce le stringhe. In questo esempio, le stringhe memorizzate nelle colonne category e name vengono restituite come una singola colonna di stringhe con uno spazio tra il valore della colonna category e il valore della colonna name.

SELECT CONCAT(category, ' ', name) 
FROM tab;

12. Uso degli operatori matematici

È possibile scrivere query per calcolare valori utilizzando operatori matematici come "+", "-", "*" e "/". In questo esempio, si vuole calcolare il prezzo scontato sottraendo il valore della colonna discount dal valore della colonna price.

SELECT price - discount
FROM product;

13. Aggiunta di dati da tabelle diverse

È possibile unire record di tabelle diverse utilizzando l'operatore UNION ALL. Ricordate che i record devono essere dello stesso tipo di dati. In questo esempio, si vogliono recuperare tutte le righe con i cognomi dalla tabella customer e tutte le righe con i cognomi dalla tabella employee. Verranno recuperati tutti i cognomi, anche se ripetuti. Se si vogliono selezionare tutti i cognomi senza ripetizioni, si deve usare UNION invece di UNION ALL.

SELECT last_name FROM customer
UNION ALL
SELECT last_name FROM employee;

14. Trovare l'intersezione di insiemi di dati

INTERSECT restituisce l'intersezione di due insiemi di dati. In questo esempio, si vogliono recuperare solo i cognomi elencati in entrambe le tabelle. Per vedere cosa c'è di diverso tra gli insiemi, utilizzare gli operatori MINUS o EXCEPT.

Se volete saperne di più sugli operatori di insiemi e vedere la spiegazione visiva di questo concetto, leggete questo articolo.

SELECT last_name FROM customer
INTERSECT
SELECT last_name FROM employee;

15. Unire i dati di tabelle diverse

È possibile unire le tabelle usando JOIN, comprese INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL JOIN e CROSS JOIN (per ulteriori informazioni, consultare i corsi elencati alla fine di questo articolo). In questo esempio, vogliamo unire i dati delle tabelle customer e city. INNER JOIN deve venire dopo FROM e il nome della prima tabella, customer. Dopo INNER JOIN, inserire il nome della seconda tabella, city. I record con i dati di entrambe le tabelle vengono abbinati da ON con la condizione di unione. I record della tabella city sono abbinati ai record della tabella customer se hanno lo stesso valore nella colonna id nella tabella customer e nella colonna customer_id della tabella city.

SELECT customer.last_name, city.name 
FROM customer
INNER JOIN city 
  ON customer.id = city.customer_id;

16. Utilizzo di alias di tabelle e colonne

Se si uniscono tabelle, è buona norma utilizzare degli alias per i nomi delle tabelle e delle colonne. In questo esempio, vogliamo unire due tabelle, customer e citye chiamarle c e t, rispettivamente. Definiamo questi nuovi nomi in FROM o JOIN, usando AS. Allo stesso modo, rinominiamo le colonne last_name nella tabella customer e name nella tabella city come lname e city, rispettivamente.

SELECT c.last_name AS lname, t.name AS city
FROM customer AS c
INNER JOIN city AS t
  ON c.id = t.customer_id;

17. Conteggio del numero di righe in una tabella

COUNT conta il numero di righe. In questo esempio, restituisce il numero di valori della colonna id memorizzata nella tabella product (il numero di tutti i prodotti).

SELECT COUNT(id)
FROM product;

18. Calcolo della media dei valori di una colonna

È possibile calcolare la media dei valori di una colonna utilizzando AVG. In questo esempio, la query restituisce il prezzo medio di tutti i prodotti della tabella product.

SELECT AVG(price)
FROM product;

19. Calcolo della somma dei valori di una colonna

SUM calcola la somma dei valori di una colonna. In questo esempio, restituisce il valore di tutti i prodotti.

SELECT SUM(price)
FROM product;

20. Trovare il valore minimo di una colonna

È possibile trovare il valore minimo memorizzato in una colonna utilizzando MIN. In questo esempio, la query restituisce il prezzo minimo tra i prodotti.

SELECT MIN(price)
FROM product;

21. Trovare il valore massimo in una colonna

È possibile trovare il valore massimo memorizzato in una colonna utilizzando MAX. In questo esempio, la query restituisce il prezzo massimo tra i prodotti.

SELECT MAX(price)
FROM product;

22. Calcolo del valore aggregato per gruppi di record

GROUP BY raggruppa le righe per calcolare un valore. In questo esempio, si usa COUNT per calcolare il numero di righe (il numero di prodotti) in ogni gruppo (category). Le colonne in SELECT devono essere inserite nella clausola GROUP BY. GROUP BY può essere utilizzato allo stesso modo con altre funzioni aggregate come MAX, MIN, AVG e SUM.

SELECT category, COUNT(id)
FROM product
GROUP BY category;

23. Filtrare le righe usando le funzioni aggregate

È possibile filtrare i record dopo aver calcolato i valori per ciascun gruppo utilizzando HAVING. In questo esempio, si desidera recuperare le categorie con un prezzo medio dei prodotti inferiore a 56,50.

SELECT category, AVG(price)
FROM product
GROUP BY category
HAVING AVG(price) < 56.50;

24. Rimozione di dati da una tabella

DELETE FROM rimuove tutti i dati da una tabella. In questo esempio, si vogliono eliminare tutti i dati dalla tabella product.

DELETE FROM product;

25. Rimozione dei record che soddisfano una determinata condizione da una tabella

È possibile rimuovere i record che soddisfano una determinata condizione utilizzando WHERE. In questo esempio, si desidera rimuovere i record dalla tabella product con id uguale a 5.

DELETE FROM product
WHERE id = 5;

26. Inserimento di dati in una tabella

È possibile aggiungere un nuovo record a una tabella utilizzando INSERT INTO. Dopo INSERT INTO, inserire il nome della tabella e poi tra parentesi i nomi delle colonne della tabella. Poi si inserisce VALUES e tra le parentesi si inseriscono i valori delle colonne. In questo esempio, si vuole inserire 25 in id, 'sofa' in name, e 'furniture' in category nella tabella product.

INSERT INTO product(id, name, category) 
VALUES(25, 'sofa', 'furniture');

27. Aggiornamento di una colonna in una tabella

UPDATE consente di modificare i dati contenuti nei record. Dopo UPDATE, inserire il nome della tabella, poi SET, quindi il nome della colonna da modificare con "=" e il nuovo valore da inserire. Questa query modifica tutti i valori della colonna. In questo esempio, vogliamo modificare tutti i valori della colonna company in 'ABC'.

UPDATE product SET company = 'ABC';

28. Aggiornare una colonna filtrando i record

Tuttavia, se non si desidera modificare tutti i valori di una colonna, è possibile aggiungere WHERE con una condizione. Nella condizione si può specificare quali record modificare. In questo esempio, si desidera modificare i valori della colonna name in 'armchair' solo per i record con id=25.

UPDATE product
SET name = 'armchair'
WHERE id = 25;

29. Creazione di una tabella

È possibile creare una tabella utilizzando CREATE TABLE. Dopo CREATE TABLE, inserire il nome della tabella e definire tra parentesi i nomi delle colonne e i loro tipi di dati. In questo esempio, si vuole creare la tabella tab con due colonne: id con un tipo di dato intero e name limitata a un massimo di 50 caratteri.

CREATE TABLE tab(id int, name varchar(50));

30. Eliminazione di una tabella

È possibile eliminare una tabella utilizzando DROP TABLE. È sufficiente inserire il nome della tabella che si desidera cancellare dopo DROP TABLE. In questo esempio, si vuole cancellare la tabella tab.

DROP TABLE tab;

Riassunto

Le query descritte in precedenza sono le più utilizzate sia dai principianti che dai professionisti. Queste query servono per creare o eliminare una tabella, inserire dati in una tabella, aggiornare record o rimuovere dati da una tabella.

Volete saperne di più sulla creazione e sull'eliminazione delle tabelle? Volete immergervi nell'inserimento, nell'aggiornamento e nella rimozione dei dati in SQL? Date un'occhiata a questi utili corsi in cui potrete fare esperienza pratica:"Creare tabelle in SQL" e "Come inserire, aggiornare o eliminare dati in SQL"."

Per saperne di più sul controllo dei dati in una tabella, sul filtraggio dei dati, sul calcolo dei valori aggregati in colonne o gruppi e sulla ricerca di valori che corrispondono a un modello, consultare il corso "SQL Basics" e il relativo set di esercitazioni.

Se volete saperne di più sull'unione di dati provenienti da più di due tabelle, perfezionate le vostre abilità con il corso " ".SQL JOINs."