Per selezionare i dati da un database SQLite, usa il SELECT
dichiarazione.
Quando utilizzi questa istruzione, specifichi da quale tabella/e selezionare i dati, nonché le colonne da restituire dalla query.
Puoi anche fornire criteri aggiuntivi per restringere ulteriormente i dati restituiti.
Semplice SELECT
Dichiarazione
Abbiamo già utilizzato un SELECT
istruzione precedente, quando abbiamo inserito i dati.
La dichiarazione che abbiamo usato era questa:
SELECT * FROM Artists;
Questo è abbastanza autoesplicativo:sta dicendo a SQLite di selezionare tutte le colonne da
Artisti
tavolo. L'asterisco (*
) è un modo abbreviato per dire "tutte le colonne". Ci evita di scrivere i nomi di tutte le colonne.
Pertanto, questa query restituisce tutti i record e tutte le colonne. In questo modo:
1|Joe Satriani 2|Steve Vai 3|The Tea Party 4|Noiseworks 5|Wayne Jury 6|Mr Percival 7|Iron Maiden 8|Atmasphere 9|Ian Moss 10|Magnum 11|Strapping Young Lad 12|Slayer 13|Primus 14|Pat Metheny 15|Frank Gambale 16|Frank Zappa 17|The Wiggles
Formattazione
Formattiamo l'output in modo che i nostri risultati siano un po' più facili da leggere.
Usa colonne
Puoi usare .mode
per cambiare la modalità di uscita. L'esempio sopra usa .mode list
, che mostra i risultati come un elenco.
Cambiamo la modalità di utilizzo delle colonne.
.mode column
Quando si esegue questa operazione, potrebbe essere necessario regolare le larghezze delle colonne (tutti i dati troppo larghi per la colonna verranno troncati).
Regola la larghezza delle colonne
Per regolare le larghezze delle colonne, usa .width
comando, seguito dalle larghezze per ogni colonna.
L'esempio seguente imposta la prima colonna su 12
e la seconda colonna a 20
.
.width 12 20
Aggiungi intestazioni
Puoi anche usare .headers
per specificare se visualizzare o meno le intestazioni delle colonne.
Per visualizzare le intestazioni, usa questo:
.headers on
Puoi rimuoverli con .headers off
.
Mostra impostazioni
Puoi rivedere queste e altre impostazioni in qualsiasi momento digitando .show
sqlite> .show echo: off eqp: off explain: off headers: on mode: column nullvalue: "" output: stdout separator: "|" stats: off width: 12 20
Nuovo formato
Ecco come appare l'esempio precedente utilizzando la modalità colonne e intestazioni:
ArtistId ArtistName ---------- ------------ 1 Joe Satriani 2 Steve Vai 3 The Tea Part 4 Noiseworks 5 Wayne Jury 6 Mr Percival 7 Iron Maiden 8 Atmasphere 9 Ian Moss 10 Magnum 11 Strapping Yo 12 Slayer 13 Primus 14 Pat Metheny 15 Frank Gambal 16 Frank Zappa 17 The Wiggles
Il WHERE
Clausola
Puoi usare il WHERE
clausola per restringere i risultati. La clausola consente di stabilire criteri specifici per i quali applicare alla query.
Ad esempio, è possibile specificare che devono essere restituiti solo i record in cui un determinato campo contiene un determinato valore.
Ecco un esempio molto specifico. Specifica che solo il record con un ArtistId uguale a 6 deve essere restituito:
SELECT * FROM Artists WHERE ArtistId = 6;
Risultato:
ArtistId ArtistName ------------ -------------------- 6 Mr Percival
Per trovare tutti gli artisti il cui nome inizia con la lettera "S", puoi fare questo:
SELECT * FROM Artists WHERE ArtistName LIKE 'S%';
Risultato:
ArtistId ArtistName ------------ -------------------- 2 Steve Vai 11 Strapping Young Lad 12 Slayer
Il segno di percentuale (%
) è un carattere jolly che può essere utilizzato per specificare qualsiasi carattere. Quindi, in questo esempio, stiamo specificando che il nome dell'artista deve essere come questo pattern (cioè il pattern che inizia con la lettera
S
e a seguire con qualsiasi altro carattere).
Un altro esempio di utilizzo di WHERE
clausola è recuperare un intervallo di valori. Ad esempio, potremmo cercare record in cui il valore è minore di un numero, maggiore di un numero o entro un determinato intervallo.
Ecco un esempio di selezione solo dei record con un ArtistId meno di un numero:
SELECT * FROM Artists WHERE ArtistId < 6;
Risultato:
ArtistId ArtistName ------------ -------------------- 1 Joe Satriani 2 Steve Vai 3 The Tea Party 4 Noiseworks 5 Wayne Jury
Ecco un esempio di selezione solo dei record con un ArtistId entro un certo intervallo:
SELECT * FROM Artists WHERE ArtistId BETWEEN 5 AND 10;
Risultato:
ArtistId ArtistName ------------ -------------------- 5 Wayne Jury 6 Mr Percival 7 Iron Maiden 8 Atmasphere 9 Ian Moss 10 Magnum
Selezione delle colonne
È possibile specificare che nel set di risultati vengano restituite solo determinate colonne. Scrivi semplicemente i nomi delle colonne nella query. I nomi di più colonne devono essere separati da una virgola.
È buona norma selezionare solo le colonne di cui hai bisogno. Usando *
, sebbene conveniente, può causare un sovraccarico aggiuntivo se restituisce più colonne del necessario.
Quindi eseguiamo di nuovo la stessa query, ma questa volta selezioniamo solo ArtistName colonna:
SELECT ArtistName FROM Artists WHERE ArtistId BETWEEN 5 AND 10;
Risultato:
ArtistName ------------ Wayne Jury Mr Percival Iron Maiden Atmasphere Ian Moss Magnum
Il ORDER BY
Clausola
Puoi utilizzare il ORDER BY
clausola per limitare il numero di record restituiti.
Puoi aggiungere ASC
per ordine crescente, o DESC
per ordine decrescente. Se non aggiungi nulla, utilizzerà il crescente.
Qui ordiniamo per ArtistName campo in ordine crescente:
SELECT * FROM Artists ORDER BY ArtistName;
Risultato:
ArtistId ArtistName ------------ -------------------- 8 Atmasphere 15 Frank Gambale 16 Frank Zappa 9 Ian Moss 7 Iron Maiden 1 Joe Satriani 10 Magnum 6 Mr Percival 4 Noiseworks 14 Pat Metheny 13 Primus 12 Slayer 2 Steve Vai 11 Strapping Young Lad 3 The Tea Party 17 The Wiggles 5 Wayne Jury
E se passiamo all'ordine decrescente:
SELECT * FROM Artists ORDER BY ArtistName DESC;
Risultato:
ArtistId ArtistName ------------ -------------------- 5 Wayne Jury 17 The Wiggles 3 The Tea Party 11 Strapping Young Lad 2 Steve Vai 12 Slayer 13 Primus 14 Pat Metheny 4 Noiseworks 6 Mr Percival 10 Magnum 1 Joe Satriani 7 Iron Maiden 9 Ian Moss 16 Frank Zappa 15 Frank Gambale 8 Atmasphere
Il LIMIT
Clausola
Puoi usare il LIMIT
clausola per limitare il numero di record restituiti. Questo può essere utile se la tua tabella contiene un numero elevato di record ma vuoi vederne solo una manciata.
Qui limitiamo il record impostato a soli cinque record:
SELECT * FROM Artists LIMIT 5;
Risultato:
ArtistId ArtistName ------------ -------------------- 1 Joe Satriani 2 Steve Vai 3 The Tea Party 4 Noiseworks 5 Wayne Jury