4.1 LIMITE
Se prevedi che la tua query SQL restituisca troppi dati, puoi limitare il numero massimo in anticipo. Dopotutto, le tabelle possono contenere migliaia o addirittura milioni di righe.
SQL rende molto semplice limitare il numero di righe nel risultato di una query utilizzando l'estensione LIMIT
. Questa parola chiave viene utilizzata alla fine della query SQL e ha il seguente aspetto:
LIMIT quantity
Scriviamo una query sulla tabella dei prodotti, che contiene un elenco dei prodotti del nostro negozio. Ma poiché abbiamo un negozio di grande successo e vendiamo molti prodotti, vogliamo ottenere solo le prime 10 righe della risposta. Ecco come sarebbe la richiesta:
SELECT * FROM product
LIMIT 10
E otteniamo il seguente risultato della query:
id | nome | marca | prezzo | contare |
---|---|---|---|---|
1 | Tavolo | IKEA | 20.00 | 15 |
2 | Sedia | IKEA | 5.00 | 45 |
3 | Divano | IKEA | 80,00 | 10 |
4 | Letto | IKEA | 75,00 | 10 |
5 | Guardaroba | Bosch | 125,00 | 15 |
6 | Mensola | Mensola | 25.00 | 114 |
7 | tv | LG | 350,00 | 4 |
8 | Lampada | LG | 15.00 | 100 |
9 | Costumista | IKEA | 99,00 | 10 |
10 | Piatto | Bosch | 199,00 | 10 |
Ora richiederemo solo le prime 5 righe. Ecco come sarebbe la richiesta:
SELECT * FROM product
LIMIT 5
Otteniamo il seguente risultato della query:
id | nome | marca | prezzo | contare |
---|---|---|---|---|
1 | Tavolo | IKEA | 20.00 | 15 |
2 | Sedia | IKEA | 5.00 | 45 |
3 | Divano | IKEA | 80,00 | 10 |
4 | Letto | IKEA | 75,00 | 10 |
5 | Guardaroba | Bosch | 125,00 | 15 |
4.2 SCOSTAMENTO
L'ultima volta abbiamo imparato come limitare il numero di righe nella risposta del server. E ora, invece di migliaia di righe dalla tabella dei prodotti, possiamo ottenere le prime 10 righe e mostrarle all'utente. È perfettamente. Ma come mostriamo le seconde 10 righe? E il terzo?
Se scriviamo LIMIT 20
, o LIMIT 30
, il server non restituirà rispettivamente 20 e 30 righe?
È per questo caso che SQL ha una parola chiave speciale OFFSET
con la quale puoi chiedere al server di saltare N righe nella sua risposta. Questa parola chiave viene utilizzata alla fine della query SQL (dopo LIMIT
) e ha il seguente aspetto:
OFFSET quantity
Scriviamo una query sulla tabella del prodotto e proviamo a ottenere i record da 11 a 15. In altre parole, chiediamo al server di restituirci 5 righe, ma prima saltiamo le prime 10 righe della risposta. Ecco come sarebbe la richiesta:
SELECT * FROM product
LIMIT 5
OFFSET 10
Otteniamo il seguente risultato della query:
id | nome | marca | prezzo | contare |
---|---|---|---|---|
undici | Poltrona | Bosch | 44.00 | 8 |
12 | vaso di fiori | Fiore intelligente | 99,00 | 9 |
13 | In piedi | IKEA | 100,00 | 10 |
Il server ha restituito solo 3 righe, il che significa che c'erano 13 righe in totale nella nostra tabella. Il server ha saltato i primi 10 e ha restituito i successivi 5.
4.3 SELEZIONA DISTINTO
Un'altra parola chiave utile è DISTINCT
. Viene utilizzato quando nella tabella sono presenti record duplicati e si desidera rimuovere i duplicati.
Da dove vengono i duplicati nella nostra tabella? Potrebbero non esserci duplicati nella tabella, ma come risultato della query è facile. Scriviamo una query che restituirà i marchi di tutti i prodotti che vendiamo. Ecco come sarebbe la richiesta:
SELECT brand FROM product
Otteniamo il seguente risultato della query:
marca |
---|
IKEA |
IKEA |
IKEA |
IKEA |
Bosch |
Bosch |
LG |
LG |
IKEA |
Bosch |
Bosch |
Fiore intelligente |
IKEA |
È facile vedere che ci sono righe duplicate in questa tabella. È per garantire che non ci siano duplicati e devi usare la parola chiave DISTINCT
. Ecco come apparirà la richiesta corretta:
SELECT DISTINCT brand
FROM product
Otteniamo il seguente risultato della query:
marca |
---|
IKEA |
Bosch |
LG |
Fiore intelligente |
Molto meglio. Non è questo? ;)
4.4 ORDINE PER
E finalmente siamo arrivati allo smistamento . Per ordinare i risultati di una query, è necessario utilizzare la parola chiave ORDER BY
. Tecnicamente, queste sono due parole, ma l'essenza non è importante. Due parole, un operatore.
Deve essere scritto dopo la parola chiave WHERE
, ma prima LIMIT
e OFFSET
. Se scrivi ORDER BY
dopo LIMIT
, il server SQL ti restituirà semplicemente un errore.
In generale, questo operatore ha questo aspetto:
ORDER BY column order
Dove colonna è il nome della colonna nella tabella/risultato dell'ordinamento. E l'ordine è l'ordinamento.
L'ordinamento può essere di tre tipi:
ASC
(da Ascending) - ascendente;DESC
(da Discendente) - discendente;- Non specificato - verrà utilizzato
ASC
Scriviamo una query che restituirà un elenco di prodotti ordinati per prezzo in ordine crescente. Ecco come sarebbe la richiesta:
SELECT * FROM product
ORDER BY price ASC
LIMIT 10
Otteniamo il seguente risultato della query:
id | nome | marca | prezzo | contare |
---|---|---|---|---|
2 | Sedia | IKEA | 5.00 | 45 |
8 | Lampada | LG | 15.00 | 100 |
1 | Tavolo | IKEA | 20.00 | 15 |
6 | Mensola | Bosch | 25.00 | 114 |
undici | Poltrona | Bosch | 44.00 | 8 |
4 | Letto | IKEA | 75,00 | 10 |
3 | Divano | IKEA | 80,00 | 10 |
12 | vaso di fiori | Fiore intelligente | 99,00 | 9 |
9 | Costumista | IKEA | 99,00 | 10 |
13 | In piedi | IKEA | 100,00 | 10 |
Otterremo lo stesso risultato se non specifichiamo l'ordinamento: salteremo la parola ASC
.
4.5 ORDER BY su più colonne
L'operatore ORDER BY
consente di ordinare il risultato per diverse colonne. Questo può essere molto utile quando la prima colonna ha molti elementi duplicati. La forma generale di questo operatore è la seguente:
ORDER BY column 1 order 1, column 2 order 2, column 3 order 3
In altre parole, se dopo l'ordinamento in base alla prima colonna sono presenti diversi valori identici nelle vicinanze, vengono ordinati in base alla seconda colonna e così via.
Scriviamo una query che ordinerà i nostri prodotti per marca e per i prodotti con la stessa marca, in ordine decrescente del loro numero. Ecco come sarebbe la richiesta:
SELECT * FROM product
ORDER BY brand ASC, count
DESC
Otteniamo il seguente risultato della query:
id | nome | marca | prezzo | contare |
---|---|---|---|---|
6 | Mensola | Bosch | 25.00 | 114 |
5 | Guardaroba | Bosch | 125,00 | 15 |
10 | Piatto | Bosch | 199,00 | 10 |
undici | Poltrona | Bosch | 44.00 | 8 |
2 | Sedia | IKEA | 5.00 | 45 |
1 | Tavolo | IKEA | 20.00 | 15 |
9 | Costumista | IKEA | 99,00 | 10 |
13 | In piedi | IKEA | 100,00 | 10 |
4 | Letto | IKEA | 75,00 | 10 |
3 | Divano | IKEA | 80,00 | 10 |
8 | Lampada | LG | 15.00 | 100 |
7 | tv | LG | 350,00 | 4 |
12 | vaso di fiori | Fiore intelligente | 99,00 | 9 |
Osserva attentamente la tabella: le sue righe sono ordinate per nome del marchio (ordine alfabetico) e le righe con lo stesso nome del marchio sono ordinate per numero di prodotto in ordine decrescente (ultima colonna).
GO TO FULL VERSION