För att välja data från en SQLite-databas, använd SELECT
uttalande.
När du använder den här satsen anger du vilka tabeller du ska välja data från, samt kolumnerna som ska returneras från frågan.
Du kan också ange extra kriterier för att ytterligare begränsa den data som returneras.
Enkel SELECT
Uttalande
Vi har redan använt en SELECT
uttalande tidigare, när vi infogade data.
Uttalandet vi använde var detta:
SELECT * FROM Artists;
Detta är ganska självförklarande – det säger åt SQLite att välja alla kolumner från
Artister
tabell. Asterisken (*
) är ett förkortat sätt att säga "alla kolumner". Det sparar oss att skriva ut namnen på alla kolumner.
Därför returnerar den här frågan alla poster och alla kolumner. Så här:
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
Formatera
Låt oss formatera utdata så att våra resultat är lite lättare att läsa.
Använd kolumner
Du kan använda .mode
för att ändra utgångsläget. Exemplet ovan använder .mode list
, som visar resultaten som en lista.
Låt oss ändra läget för att använda kolumner.
.mode column
När du gör detta kan du behöva justera kolumnbredderna (alla data som är för breda för kolumnen kommer att trunkeras).
Justera kolumnbredder
För att justera kolumnbredderna, använd .width
kommando, följt av bredder för varje kolumn.
Följande exempel ställer in den första kolumnen till 12
och den andra kolumnen till 20
.
.width 12 20
Lägg till rubriker
Du kan också använda .headers
för att ange om kolumnrubriker ska visas eller inte.
För att visa rubriker, använd detta:
.headers on
Du kan ta bort dem med .headers off
.
Visa inställningar
Du kan granska dessa och andra inställningar när som helst genom att skriva .show
sqlite> .show echo: off eqp: off explain: off headers: on mode: column nullvalue: "" output: stdout separator: "|" stats: off width: 12 20
Nytt format
Så här ser det föregående exemplet ut med kolumn- och rubrikläge:
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
VAR Klausul
Du kan använda WHERE
klausul för att begränsa resultaten. Klausulen låter dig ange specifika kriterier som du ska tillämpa på frågan.
Du kan till exempel ange att endast poster där ett visst fält innehåller ett visst värde ska returneras.
Här är ett mycket specifikt exempel. Den anger att endast posten med ett ArtistId lika med 6 ska returneras:
SELECT * FROM Artists WHERE ArtistId = 6;
Resultat:
ArtistId ArtistName ------------ -------------------- 6 Mr Percival
För att hitta alla artister vars namn börjar med bokstaven "S", kan du göra så här:
SELECT * FROM Artists WHERE ArtistName LIKE 'S%';
Resultat:
ArtistId ArtistName ------------ -------------------- 2 Steve Vai 11 Strapping Young Lad 12 Slayer
Procenttecknet (%
) är ett jokertecken som kan användas för att ange vilket tecken som helst. Så i det här exemplet specificerar vi att artistens namn måste vara som det här mönstret (dvs mönstret som börjar med bokstaven
S
och följer med någon annan karaktär).
Ett annat exempel på att använda WHERE
sats är att hämta en rad värden. Till exempel kan vi leta efter poster där värdet är mindre än ett tal, större än ett tal eller inom ett visst intervall.
Här är ett exempel på att bara välja de poster med ett ArtistId mindre än ett 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
Här är ett exempel på att bara välja de poster med ett ArtistId inom ett visst intervall:
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
Välja kolumner
Du kan ange att endast vissa kolumner returneras i resultatuppsättningen. Skriv helt enkelt kolumnnamnen i frågan. Flera kolumnnamn måste separeras med ett kommatecken.
Det är bra att välja endast de kolumner du behöver. Använder *
, även om det är bekvämt, kan det orsaka extra omkostnader om det returnerar fler kolumner än vad som krävs.
Så låt oss köra samma fråga igen, men den här gången väljer du bara Artistnamn kolumn:
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 använda ORDER BY
klausul för att begränsa antalet poster som returneras.
Du kan lägga till ASC
för stigande ordning, eller DESC
för fallande ordning. Om du inte lägger till något kommer den att använda stigande.
Här sorterar vi efter ArtistName fält i stigande ordning:
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
Och om vi byter till fallande ordning:
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 använda LIMIT
klausul för att begränsa antalet poster som returneras. Detta kan vara praktiskt om din tabell innehåller ett stort antal poster men du bara vill se en handfull.
Här begränsar vi rekordet till endast 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