Pour sélectionner des données à partir d'une base de données SQLite, utilisez le SELECT
déclaration.
Lorsque vous utilisez cette instruction, vous spécifiez la ou les tables à partir desquelles sélectionner les données, ainsi que les colonnes à renvoyer à partir de la requête.
Vous pouvez également fournir des critères supplémentaires pour affiner davantage les données renvoyées.
Simple SELECT
Déclaration
Nous avons déjà utilisé un SELECT
déclaration précédemment, lorsque nous avons inséré des données.
La déclaration que nous avons utilisée était la suivante :
SELECT * FROM Artists;
C'est assez explicite - il dit à SQLite de sélectionner toutes les colonnes des
Artistes
table. L'astérisque (*
) est une manière abrégée de dire "toutes les colonnes". Cela nous évite d'écrire les noms de toutes les colonnes.
Par conséquent, cette requête renvoie tous les enregistrements et toutes les colonnes. Comme ceci :
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
Formatage
Formatons la sortie afin que nos résultats soient un peu plus faciles à lire.
Utiliser des colonnes
Vous pouvez utiliser .mode
pour changer le mode de sortie. L'exemple ci-dessus utilise .mode list
, qui affiche les résultats sous forme de liste.
Changeons le mode pour utiliser des colonnes.
.mode column
Lorsque vous faites cela, vous devrez peut-être ajuster la largeur des colonnes (toutes les données trop larges pour la colonne seront tronquées).
Ajuster la largeur des colonnes
Pour ajuster la largeur des colonnes, utilisez le .width
commande, suivi des largeurs pour chaque colonne.
L'exemple suivant définit la première colonne sur 12
et la deuxième colonne à 20
.
.width 12 20
Ajouter des en-têtes
Vous pouvez également utiliser .headers
pour spécifier s'il faut ou non afficher les en-têtes de colonne.
Pour afficher les en-têtes, utilisez ceci :
.headers on
Vous pouvez les supprimer avec .headers off
.
Afficher les paramètres
Vous pouvez consulter ces paramètres et d'autres à tout moment en saisissant .show
sqlite> .show echo: off eqp: off explain: off headers: on mode: column nullvalue: "" output: stdout separator: "|" stats: off width: 12 20
Nouveau format
Voici à quoi ressemble l'exemple précédent en mode colonnes et en-têtes :
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
Le WHERE
Article
Vous pouvez utiliser le WHERE
clause pour réduire les résultats. La clause vous permet de stipuler des critères spécifiques à appliquer à la requête.
Par exemple, vous pouvez spécifier que seuls les enregistrements dans lesquels un certain champ contient une certaine valeur doivent être renvoyés.
Voici un exemple très précis. Il précise que seul l'enregistrement avec un ArtistId égal à 6 doit être renvoyé :
SELECT * FROM Artists WHERE ArtistId = 6;
Résultat :
ArtistId ArtistName ------------ -------------------- 6 Mr Percival
Pour trouver tous les artistes dont le nom commence par la lettre "S", vous pouvez faire ceci :
SELECT * FROM Artists WHERE ArtistName LIKE 'S%';
Résultat :
ArtistId ArtistName ------------ -------------------- 2 Steve Vai 11 Strapping Young Lad 12 Slayer
Le signe pourcentage (%
) est un caractère générique qui peut être utilisé pour spécifier n'importe quel caractère. Ainsi, dans cet exemple, nous spécifions que le nom de l'artiste doit ressembler à ce motif (c'est-à-dire le motif commençant par la lettre
S
et suivant avec n'importe quel autre caractère).
Un autre exemple d'utilisation de WHERE
clause consiste à récupérer une plage de valeurs. Par exemple, nous pourrions rechercher des enregistrements dont la valeur est inférieure à un nombre, supérieure à un nombre ou comprise dans une certaine plage.
Voici un exemple de sélection uniquement des enregistrements avec un ArtistId moins qu'un nombre :
SELECT * FROM Artists WHERE ArtistId < 6;
Résultat :
ArtistId ArtistName ------------ -------------------- 1 Joe Satriani 2 Steve Vai 3 The Tea Party 4 Noiseworks 5 Wayne Jury
Voici un exemple de sélection uniquement des enregistrements avec un ArtistId dans une certaine plage :
SELECT * FROM Artists WHERE ArtistId BETWEEN 5 AND 10;
Résultat :
ArtistId ArtistName ------------ -------------------- 5 Wayne Jury 6 Mr Percival 7 Iron Maiden 8 Atmasphere 9 Ian Moss 10 Magnum
Sélectionner des colonnes
Vous pouvez spécifier que seules certaines colonnes sont renvoyées dans le jeu de résultats. Écrivez simplement les noms des colonnes dans la requête. Les noms de plusieurs colonnes doivent être séparés par une virgule.
Il est recommandé de sélectionner uniquement les colonnes dont vous avez besoin. Utilisation de *
, bien que pratique, peut entraîner une surcharge supplémentaire s'il renvoie plus de colonnes que nécessaire.
Exécutons donc à nouveau la même requête, mais cette fois, sélectionnez uniquement le ArtistName colonne :
SELECT ArtistName FROM Artists WHERE ArtistId BETWEEN 5 AND 10;
Résultat :
ArtistName ------------ Wayne Jury Mr Percival Iron Maiden Atmasphere Ian Moss Magnum
Le ORDER BY
Article
Vous pouvez utiliser le ORDER BY
clause pour limiter le nombre d'enregistrements renvoyés.
Vous pouvez ajouter ASC
pour l'ordre croissant, ou DESC
pour l'ordre décroissant. Si vous n'ajoutez rien, il utilisera l'ordre croissant.
Ici, nous commandons par ArtistName champ dans l'ordre croissant :
SELECT * FROM Artists ORDER BY ArtistName;
Résultat :
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
Et si on passe en ordre décroissant :
SELECT * FROM Artists ORDER BY ArtistName DESC;
Résultat :
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
La LIMIT
Article
Vous pouvez utiliser la LIMIT
clause pour limiter le nombre d'enregistrements renvoyés. Cela peut être pratique si votre table contient un grand nombre d'enregistrements mais que vous ne voulez en voir qu'une poignée.
Ici, nous limitons le jeu d'enregistrements à seulement cinq enregistrements :
SELECT * FROM Artists LIMIT 5;
Résultat :
ArtistId ArtistName ------------ -------------------- 1 Joe Satriani 2 Steve Vai 3 The Tea Party 4 Noiseworks 5 Wayne Jury