Om gegevens uit een SQLite-database te selecteren, gebruikt u de SELECT
verklaring.
Wanneer u deze instructie gebruikt, geeft u op uit welke tabel(len) gegevens moeten worden geselecteerd, evenals de kolommen die uit de query moeten worden geretourneerd.
U kunt ook extra criteria opgeven om de geretourneerde gegevens verder te verfijnen.
Eenvoudige SELECT
Verklaring
We hebben al een SELECT
. gebruikt verklaring eerder, toen we gegevens invoegden.
De verklaring die we gebruikten was deze:
SELECT * FROM Artists;
Dit is vrij duidelijk - het vertelt SQLite om alle kolommen van de
Artiesten
te selecteren tafel. Het sterretje (*
) is een verkorte manier om "alle kolommen" te zeggen. Het bespaart ons het schrijven van de namen van alle kolommen.
Daarom retourneert deze query alle records en alle kolommen. Zoals dit:
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
Opmaak
Laten we de uitvoer formatteren zodat onze resultaten wat gemakkelijker te lezen zijn.
Kolommen gebruiken
U kunt .mode
. gebruiken om de uitvoermodus te wijzigen. Het bovenstaande voorbeeld gebruikt .mode list
, die de resultaten als een lijst weergeeft.
Laten we de modus wijzigen om kolommen te gebruiken.
.mode column
Wanneer u dit doet, moet u mogelijk de kolombreedten aanpassen (alle gegevens die te breed zijn voor de kolom worden afgekapt).
Kolombreedtes aanpassen
Gebruik de .width
. om de kolombreedten aan te passen commando, gevolgd door breedtes voor elke kolom.
In het volgende voorbeeld wordt de eerste kolom ingesteld op 12
en de tweede kolom naar 20
.
.width 12 20
Koppen toevoegen
U kunt ook .headers
. gebruiken om aan te geven of kolomkoppen wel of niet moeten worden weergegeven.
Gebruik dit om kopteksten weer te geven:
.headers on
Je kunt ze verwijderen met .headers off
.
Instellingen weergeven
Je kunt deze en andere instellingen op elk moment bekijken door .show
. te typen
sqlite> .show echo: off eqp: off explain: off headers: on mode: column nullvalue: "" output: stdout separator: "|" stats: off width: 12 20
Nieuw formaat
Zo ziet het vorige voorbeeld eruit met de modus voor kolommen en kopteksten:
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
De WHERE
Clausule
U kunt de WHERE
. gebruiken clausule om de resultaten te beperken. Met de clausule kunt u specifieke criteria specificeren die op de vraag van toepassing zijn.
U kunt bijvoorbeeld specificeren dat alleen records, waarin een bepaald veld een bepaalde waarde bevat, moeten worden geretourneerd.
Hier is een heel specifiek voorbeeld. Het specificeert dat alleen het record met een ArtistId gelijk aan 6 moet worden geretourneerd:
SELECT * FROM Artists WHERE ArtistId = 6;
Resultaat:
ArtistId ArtistName ------------ -------------------- 6 Mr Percival
Om alle artiesten te vinden wiens naam begint met de letter "S", kun je dit doen:
SELECT * FROM Artists WHERE ArtistName LIKE 'S%';
Resultaat:
ArtistId ArtistName ------------ -------------------- 2 Steve Vai 11 Strapping Young Lad 12 Slayer
Het procentteken (%
) is een jokerteken dat kan worden gebruikt om elk teken op te geven. In dit voorbeeld specificeren we dus dat de naam van de artiest moet zijn zoals dit patroon (d.w.z. het patroon dat begint met de letter
S
en gevolgd door een ander teken).
Een ander voorbeeld van het gebruik van de WHERE
clausule is om een reeks waarden op te halen. We kunnen bijvoorbeeld zoeken naar records waarvan de waarde kleiner is dan een getal, groter dan een getal of binnen een bepaald bereik valt.
Hier is een voorbeeld van het selecteren van alleen die records met een ArtistId minder dan een getal:
SELECT * FROM Artists WHERE ArtistId < 6;
Resultaat:
ArtistId ArtistName ------------ -------------------- 1 Joe Satriani 2 Steve Vai 3 The Tea Party 4 Noiseworks 5 Wayne Jury
Hier is een voorbeeld van het selecteren van alleen die records met een ArtistId binnen een bepaald bereik:
SELECT * FROM Artists WHERE ArtistId BETWEEN 5 AND 10;
Resultaat:
ArtistId ArtistName ------------ -------------------- 5 Wayne Jury 6 Mr Percival 7 Iron Maiden 8 Atmasphere 9 Ian Moss 10 Magnum
Kolommen selecteren
U kunt opgeven dat alleen bepaalde kolommen worden geretourneerd in de resultatenset. Schrijf gewoon de kolomnamen in de query. Meerdere kolomnamen moeten worden gescheiden door een komma.
Het is een goede gewoonte om alleen die kolommen te selecteren die u nodig hebt. Met behulp van *
, hoewel handig, kan extra overhead veroorzaken als het meer kolommen retourneert dan nodig is.
Dus laten we dezelfde query opnieuw uitvoeren, maar deze keer alleen de ArtistName selecteren kolom:
SELECT ArtistName FROM Artists WHERE ArtistId BETWEEN 5 AND 10;
Resultaat:
ArtistName ------------ Wayne Jury Mr Percival Iron Maiden Atmasphere Ian Moss Magnum
De ORDER BY
Clausule
U kunt de ORDER BY
. gebruiken clausule om het aantal geretourneerde records te beperken.
U kunt ASC
. toevoegen voor oplopende volgorde, of DESC
voor aflopende volgorde. Als je niets toevoegt, wordt oplopend gebruikt.
Hier bestellen we op ArtistName veld in oplopende volgorde:
SELECT * FROM Artists ORDER BY ArtistName;
Resultaat:
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
En als we overschakelen naar aflopende volgorde:
SELECT * FROM Artists ORDER BY ArtistName DESC;
Resultaat:
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
De LIMIT
Clausule
U kunt de LIMIT
. gebruiken clausule om het aantal geretourneerde records te beperken. Dit kan handig zijn als uw tabel een groot aantal records bevat, maar u slechts een handvol records wilt zien.
Hier beperken we de recordset tot slechts vijf records:
SELECT * FROM Artists LIMIT 5;
Resultaat:
ArtistId ArtistName ------------ -------------------- 1 Joe Satriani 2 Steve Vai 3 The Tea Party 4 Noiseworks 5 Wayne Jury