For at vælge data fra en SQLite-database skal du bruge SELECT
erklæring.
Når du bruger denne sætning, angiver du, hvilke tabeller der skal vælges data fra, samt hvilke kolonner der skal returneres fra forespørgslen.
Du kan også angive ekstra kriterier for yderligere at indsnævre de data, der returneres.
Simpel SELECT
Erklæring
Vi har allerede brugt en SELECT
erklæring tidligere, da vi indsatte data.
Udsagnet, vi brugte, var dette:
SELECT * FROM Artists;
Dette er ret selvforklarende - det fortæller SQLite at vælge alle kolonner fra
Kunstnere
bord. Stjernen (*
) er en kortfattet måde at sige "alle kolonner". Det sparer os for at skrive navnene på alle kolonnerne.
Derfor returnerer denne forespørgsel alle poster og alle kolonner. Sådan:
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
Formattering
Lad os formatere outputtet, så vores resultater er lidt nemmere at læse.
Brug kolonner
Du kan bruge .mode
for at ændre udgangstilstanden. Ovenstående eksempel bruger .mode list
, som viser resultaterne som en liste.
Lad os ændre tilstanden for at bruge kolonner.
.mode column
Når du gør dette, skal du muligvis justere kolonnebredderne (alle data, der er for brede til kolonnen, vil blive afkortet).
Juster kolonnebredder
For at justere kolonnebredderne skal du bruge .width
kommando efterfulgt af bredder for hver kolonne.
Følgende eksempel indstiller den første kolonne til 12
og den anden kolonne til 20
.
.width 12 20
Tilføj overskrifter
Du kan også bruge .headers
for at angive, om kolonneoverskrifter skal vises eller ej.
Brug denne for at vise overskrifter:
.headers on
Du kan fjerne dem med .headers off
.
Vis indstillinger
Du kan til enhver tid gennemgå disse og andre indstillinger ved at skrive .show
sqlite> .show echo: off eqp: off explain: off headers: on mode: column nullvalue: "" output: stdout separator: "|" stats: off width: 12 20
Nyt format
Sådan ser det forrige eksempel ud ved brug af kolonner og overskrifter:
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
HVOR Klausul
Du kan bruge WHERE
klausul for at indsnævre resultaterne. Klausulen giver dig mulighed for at angive specifikke kriterier, som skal gælde for forespørgslen.
For eksempel kan du angive, at kun poster, hvor et bestemt felt indeholder en bestemt værdi, skal returneres.
Her er et meget specifikt eksempel. Det specificerer, at kun posten med et ArtistId lig med 6 skal returneres:
SELECT * FROM Artists WHERE ArtistId = 6;
Resultat:
ArtistId ArtistName ------------ -------------------- 6 Mr Percival
For at finde alle kunstnere, hvis navn begynder med bogstavet "S", kan du gøre dette:
SELECT * FROM Artists WHERE ArtistName LIKE 'S%';
Resultat:
ArtistId ArtistName ------------ -------------------- 2 Steve Vai 11 Strapping Young Lad 12 Slayer
Procenttegnet (%
) er et jokertegn, der kan bruges til at angive et hvilket som helst tegn. Så i dette eksempel specificerer vi, at kunstnerens navn skal være som dette mønster (dvs. mønsteret, der starter med bogstavet
S
og følger med ethvert andet tegn).
Et andet eksempel på brug af WHERE
klausul er at hente en række værdier. For eksempel kunne vi lede efter poster, hvor værdien er mindre end et tal, større end et tal eller inden for et bestemt interval.
Her er et eksempel på kun at vælge de poster med et ArtistId mindre end et tal:
SELECT * FROM Artists WHERE ArtistId < 6;
Resultat:
ArtistId ArtistName ------------ -------------------- 1 Joe Satriani 2 Steve Vai 3 The Tea Party 4 Noiseworks 5 Wayne Jury
Her er et eksempel på kun at vælge de poster med et ArtistId inden for et bestemt interval:
SELECT * FROM Artists WHERE ArtistId BETWEEN 5 AND 10;
Resultat:
ArtistId ArtistName ------------ -------------------- 5 Wayne Jury 6 Mr Percival 7 Iron Maiden 8 Atmasphere 9 Ian Moss 10 Magnum
Valg af kolonner
Du kan angive, at kun bestemte kolonner returneres i resultatsættet. Du skal blot skrive kolonnenavnene i forespørgslen. Flere kolonnenavne skal adskilles med et komma.
Det er god praksis kun at vælge de kolonner, du har brug for. Brug af *
Selvom det er praktisk, kan det forårsage ekstra overhead, hvis det returnerer flere kolonner end nødvendigt.
Så lad os køre den samme forespørgsel igen, men denne gang skal du kun vælge Kunstnernavn kolonne:
SELECT ArtistName FROM Artists WHERE ArtistId BETWEEN 5 AND 10;
Resultat:
ArtistName ------------ Wayne Jury Mr Percival Iron Maiden Atmasphere Ian Moss Magnum
ORDER BY Klausul
Du kan bruge ORDER BY
klausul for at begrænse antallet af returnerede poster.
Du kan tilføje ASC
for stigende rækkefølge, eller DESC
for faldende rækkefølge. Hvis du ikke tilføjer noget, vil den bruge stigende.
Her sorterer vi efter ArtistName felt i stigende rækkefølge:
SELECT * FROM Artists ORDER BY ArtistName;
Resultat:
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
Og hvis vi skifter til faldende rækkefølge:
SELECT * FROM Artists ORDER BY ArtistName DESC;
Resultat:
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
LIMIT
Klausul
Du kan bruge LIMIT
klausul for at begrænse antallet af returnerede poster. Dette kan være praktisk, hvis din tabel indeholder et stort antal poster, men du kun ønsker at se en håndfuld.
Her begrænser vi rekorden til kun fem poster:
SELECT * FROM Artists LIMIT 5;
Resultat:
ArtistId ArtistName ------------ -------------------- 1 Joe Satriani 2 Steve Vai 3 The Tea Party 4 Noiseworks 5 Wayne Jury