SQLite
 sql >> Base de données >  >> RDS >> SQLite

SQLite - Sélectionner des données

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