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

Quali sono le query SQL di base?

È possibile accedere ai dati di un database utilizzando alcune query SQL di base. In questo articolo esaminiamo le query SQL fondamentali che ogni principiante dovrebbe conoscere.

I database sono ovunque e contengono diversi tipi di dati. Quasi tutti supportano l'SQL, un linguaggio che consente di leggere e manipolare i dati all'interno di un database. In questo articolo vi mostrerò le query SQL di base che potete utilizzare per eseguire molte operazioni quotidiane sui dati.

Il modo migliore per imparare l'SQL è il nostro SQL per principianti corso interattivo. Contiene oltre 120 esercizi, a partire da esempi molto semplici per poi passare a concetti come le JOIN e le condizioni WHERE. Per saperne di più sull'SQL, consultate il nostro articolo Cos'è l'SQL? Potete anche scoprire perché l 'SQL non è difficile da imparare.

Che cos'è una query SQL?

Un database è un programma informatico che memorizza grandi quantità di dati. I database sono tipicamente organizzati in tabelle. Ogni tabella memorizza i dati relativi a una cosa, una persona, un luogo o un altro oggetto (ad esempio, la descrizione di clienti, prodotti, appuntamenti o dipendenti). Una volta che i dati sono stati memorizzati in un database, è possibile creare dei report utilizzando questi dati; ad esempio, è possibile creare un elenco dei clienti che hanno effettuato transazioni nell'ultimo mese.

I report del database si creano con l'aiuto di SQL, o Structured Query Language. SQL è il linguaggio di programmazione utilizzato per parlare con i database. Una query SQL è un'espressione, simile a una frase inglese, che definisce l'insieme di dati da recuperare dal database. Si può pensare a una query SQL come a una domanda inviata al database; dopo di che, ci si aspetta che il database risponda alla domanda inviando i dati.

In questo articolo vi mostreremo le query SQL più elementari. Queste possono essere utilizzate per eseguire operazioni comuni sui dati. È possibile modificare facilmente queste query SQL e utilizzarle nel proprio database.

Prima di iniziare le query, diamo un'occhiata ai dati che utilizzeremo.

La nostra tabella di esempio

Le query si baseranno su una tabella chiamata products. Questa tabella contiene tutte le informazioni sui prodotti di un'azienda di e-commerce. Le colonne della tabella sono visibili nell'immagine sottostante:

prod_codenameprod_ familycostpricestockproviderstatus
1001Cell Phone A200Phones50085035Trixavailable
1002Cell Phone A310Phones740120050Trixavailable
1003HeadsetAudio2450150Zeysold out
2001Portable SpeakerAudio14023050Zeyavailable
2002Sound Box Hulk1Audio2203400Zeydiscontinued
2003Sound Box Hulk2Audio32053012Zeyavailable
2004HeadsetAudio325885Zeyavailable
3001Tablet X8 8 inchTablets15530035MiniSOftavailable
3002Tablet X12 12 inchTablets21543040MiniSoftavailable

I nomi delle colonne si spiegano da soli. Forse la colonna più importante è prod_code. Essa memorizza un codice numerico che identifica ogni prodotto (cioè l'ID di ogni prodotto). Inoltre, è bene notare che la colonna status può avere solo quattro valori validi: "disponibile", "esaurito", "in arrivo" o "fuori produzione".

Ora che sappiamo quali dati aspettarci, iniziamo a scrivere qualche query SQL!

Query SQL di base

Query 1: Selezione di tutti i dati di una tabella

La prima query è un modo semplice per recuperare tutte le informazioni da una tabella del database. La seguente query mostra tutti i record di tutte le colonne della tabella product colonne della tabella:

SELECT * 
FROM products

Questa istruzione SELECT utilizza il simbolo * per rappresentare "tutte le colonne". Successivamente, la clausola FROM indica la tabella da leggere. Come si può vedere qui sotto, il risultato è la tabella completa: tutti i record e tutte le colonne. È possibile utilizzare questa query per sbirciare in una tabella e conoscere il tipo di dati presenti nella tabella.

prod_codenameprod_ familycostpricestockproviderstatus
1001Cell Phone A200Phones50085035Trixavailable
1002Cell Phone A310Phones740120050Trixavailable
1003HeadsetAudio2450150Zeysold out
2001Portable SpeakerAudio14023050Zeyavailable
2002Sound Box Hulk1Audio2203400Zeydiscontinued
2003Sound Box Hulk2Audio32053012Zeyavailable
2004HeadsetAudio325885Zeyavailable
3001Tablet X8 8 inchTablets15530035MiniSOftavailable
3002Tablet X12 12 inchTablets215430140MiniSoftavailable

Query 2: Selezione di colonne specifiche da una tabella

È anche possibile mostrare solo alcune colonne di una tabella. Supponiamo di volere un listino prezzi con le colonne name, provider, prod_family e price. La query è molto semplice:

SELECT 
  name, 
  provider, 
  prod_family, 
  price 
FROM products

Abbiamo specificato le colonne che vogliamo estrarre dalla tabella: name provider , prod_family e price. Nella seconda riga della query, utilizziamo la clausola FROM per indicare la tabella da leggere. Il risultato è:

nameproviderprod_familyprice
Cell Phone A200TrixPhones850
Cell Phone A310TrixPhones1200
HeadsetZeyAudio50
Portable SpeakerZeyAudio230
Sound Box Hulk1ZeyAudio340
Sound Box Hulk2ZeyAudio530
HeadsetZeyAudio58
Tablet X8 8 inchMiniSOftTablets300
Tablet X12 12 inchMiniSoftTablets430

Query 3: Eseguire semplici calcoli

È possibile eseguire calcoli all'interno di una query SQL. Queste ci permettono di ottenere un valore calcolato derivato da altri valori memorizzati nella tabella del database.

Calcoliamo l'importo dell'affittabilità dei prodotti utilizzando le colonne price e cost e mostriamo l'importo accanto al nome del prodotto. Ecco la query da utilizzare:

SELECT 
  name,
  price - cost AS rentability
FROM products

La seconda riga della query contiene l'espressione aritmetica price - cost. La parola chiave AS permette di assegnare il nome rentability al risultato di questa espressione aritmetica. La nuova informazione viene mostrata come colonna nel risultato della query:

namerentability
Cell Phone A200350
Cell Phone A310460
Headset26
Portable Speaker90
Sound Box Hulk1120
Sound Box Hulk2210
Headset26
Tablet X8 8 inch145
Tablet X12 12 inch215

Query 4: Filtrare i dati

Di solito non si vogliono vedere tutti i dati di un database. Si desidera vedere solo le righe che corrispondono a determinati criteri: prodotti di una famiglia di prodotti o con un prezzo inferiore a una certa soglia. In SQL, questa operazione si chiama filtrare i dati.

La clausola WHERE filtra i dati desiderati dal resto dei dati della tabella. Estrae i record che corrispondono a determinate condizioni. Ad esempio, supponiamo di voler ottenere un listino prezzi per i prodotti della famiglia "Audio". Per ottenere il risultato possiamo utilizzare la seguente query:

SELECT 
  name, 
  provider, 
  prod_family, 
  price 
FROM products
WHERE prod_family = ‘Audio’

La clausola WHERE indica che vogliamo ottenere solo i record in cui la condizione prod_family = ‘Audio’ è TRUE. Gli altri record (quelli appartenenti alle famiglie Phones o Tablets) non faranno parte del risultato. In altre parole, stiamo filtrando i record dalla tabella products.

nameproviderprod_ familyprice
HeadsetZeyAudio50
Sound Box Hulk1ZeyAudio340
Portable SpeakerZeyAudio230
Sound Box Hulk2ZeyAudio530
HeadsetZeyAudio58

Query 5: Ordinamento dei dati nel risultato della query

Spesso si desidera visualizzare i risultati della query in un certo ordine, ad esempio i prodotti dal più economico al più costoso o i nomi dei prodotti in ordine alfabetico. La clausola ORDER BY viene utilizzata per definire come verranno ordinati i record nel risultato della query.

Supponiamo di voler ordinare i prodotti della nostra precedente query per nome. Si noti l'uso di ORDER BY in questa query:

SELECT 	
  name, 
  provider, 
  prod_family, 
  price 
FROM products
WHERE prod_family = ‘Audio’
ORDER BY name

Possiamo vedere gli stessi record in ordine alfabetico per nome di prodotto:

nameproviderprod_ familyprice
HeadsetZeyAudio50
HeadsetZeyAudio58
Portable SpeakerZeyAudio230
Sound Box Hulk1ZeyAudio340
Sound Box Hulk2ZeyAudio530

Combinare tutto per risolvere i problemi aziendali

È possibile combinare tutte le funzioni SQL illustrate in questo articolo in un'unica query. Combinando le funzioni SQL in questo modo si ottiene una query più complessa che può risolvere problemi aziendali reali.

Il risultato dell'ultima query della sezione precedente è simile a un listino prezzi dei prodotti della famiglia Audio. Tuttavia, mostra i prodotti fuori produzione o esauriti. Nella prossima query, aggiungeremo una seconda condizione logica nella clausola WHERE per includere solo i prodotti attualmente disponibili:

SELECT 	
  name, 
  provider, 
  prod_family, 
  price 
FROM products
WHERE prod_family = ’Audio’  
  AND status = ’available’
ORDER BY name

Le condizioni della clausola WHERE sono collegate al connettore logico AND; pertanto, il risultato includerà solo i record in cui entrambe le condizioni logiche sono VERE. Lo si può vedere nei risultati seguenti:

nameproviderprod_ familyprice
HeadsetZeyAudio50
HeadsetZeyAudio58
Portable SpeakerZeyAudio230
Sound Box Hulk2ZeyAudio530

Nel prossimo esempio di query, proveremo a combinare tutte le clausole SQL trattate in questo articolo. Supponiamo di stare pianificando una campagna di marketing e di dover scegliere due prodotti da promuovere. Vogliamo prodotti con un prezzo di noleggio superiore a 200 dollari e con uno stock superiore a 25 unità. Ordineremo il report anche in base a una metrica chiamata "affittabilità potenziale", calcolata con la formula: (price - cost) * stock. Ecco la query:

SELECT 
  name, 
  price - cost AS rentability,
  stock, 
  (price - cost) * stock AS potential_rentability
FROM products
WHERE price - cost > 200  
AND stock > 25
ORDER BY (price - cost) * stock DESC;

La query precedente calcola due metriche. Una metrica è rentability, calcolata con la formula price - cost. L'altra metrica è potential_rentability, calcolata con la formula (price - cost) * stock. Nella clausola WHERE, la query specifica due condizioni: i record da restituire devono avere un rentability maggiore di 200 e un stock maggiore di 25 unità. Infine, il risultato della query viene ordinato in base alla metrica potential_rentability in ordine decrescente (dal più grande al più piccolo). Di seguito è riportato il risultato:

namerentabilitystockpotential rentability
Tablet X12 12 inch21514030100
Cell Phone A3104605023000
Cell Phone A2003503512250

Continuate a imparare le query SQL di base!

In questo articolo abbiamo illustrato le query SQL di base che possono essere utilizzate per eseguire semplici operazioni sui dati. Tuttavia, l'SQL offre molte altre clausole e tecniche che consentono di eseguire altre operazioni sui dati.

Il nostro corso interattivo SQL per principianti è il modo migliore per padroneggiare l'SQL di base. Contiene oltre 120 esercizi che coprono le query SQL di base (come quelle mostrate in questo articolo) e altri costrutti SQL che consentono di combinare i dati di più tabelle e di calcolare varie statistiche.

Se conoscete già le basi dell'SQL, il nostro SQL Basic Cheat Sheet è una comoda risorsa di riferimento. Vi fornirà un promemoria conciso della sintassi SQL con query di esempio.