Requêtes: select, where

Une base pour les exemples

Pour introduire les premières requêtes sur une base, nous allons utiliser les exemples donnés dans le tutoriel du site de SQLite dans cette page.

La base de données utilisée ne présente qu'une seule table qui est la suivante :

id nom age adresse salaire
1 Paul 32 California 20000
2 Allen 25 Texas 15000
3 Teddy 23 Norway 20000
4 Mark 25 Rich-Mond 65000
5 David 27 Texas 85000
6 Kim 22 South-Hall 45000
7 James 24 Houston 10000

Vous pouvez la télécharger ici. Prenez le temps de tester chacune des requêtes proposées ci-après.

Afficher des colonnes

On utilise également SELECT pour afficher une ou des colonnes.

Afficher une colonne (projection)

La commande suivante permet de n'afficher que la colonne adresse.


SELECT adresse FROM  COMPANY;

Testez !

Si l'on veut éviter les doublons:


SELECT DISTINCT adresse FROM  COMPANY;

Afficher plusieurs colonnes

Pour afficher le nom et l'adresse:


SELECT nom, adresse FROM  COMPANY;	

La clause WHERE

Le mot clef   WHERE permet de préciser des critères, ce qui limitera l'affichage aux lignes satisfaisant ces critères.

Affichons par exemple les noms des personnes ayant au moins 25 ans:


SELECT nom  FROM  COMPANY WHERE age >= 25 ;

Testez !

Ou encore les lignes correspondant aux personnes ayant 32 ans :


SELECT nom  FROM  COMPANY WHERE age = 32 ;

Ou encore les lignes correspondant aux personnes n'ayant pas 32 ans :


SELECT nom  FROM  COMPANY WHERE age <> 32 ;

AND, OR

Les critères de sélection utilisés peuvent utiliser les opérateurs de comparaison comme dans l'exemple ci-dessus ( < , = , > , <= , >= , <>) ainsi que les constructions usuelles logiques comme AND, OR.

On trouvera une liste d'opérateurs sur cette page.

AND

Affichons par exemple les noms des personnes ayant au moins 25 ans et un salaire d'au moins 40000:


SELECT nom  FROM  COMPANY WHERE age >= 25 AND salaire >= 40000 ;

Testez ! Le résultat est l'ensemble des lignes satisfaisant les deux conditions.

Pour afficher les lignes des personnes ayant entre 25 et 32 ans, on peut écrire la requête suivante:


SELECT * FROM  COMPANY WHERE age >= 25 AND age <= 32 ;

ou encore la requête suivante :

SELECT * FROM  COMPANY WHERE age  BETWEEN 25 AND 32 ;

Pour en savoir plus sur l'usage du mot clef BETWEEN, on pourra consulter cette page.

OR

Affichons par exemple les noms des personnes ayant au moins 25 ans ou un salaire d'au moins 40000 :


SELECT nom  FROM  COMPANY WHERE age >= 25 OR salaire >= 40000 ;

Le résultat est l'ensemble des lignes satisfaisant au moins l'une des deux conditions.

Pour afficher les lignes correspondant aux personnes ayant 25 ou 32 ans, on pourra écrire :


SELECT * FROM COMPANY WHERE  age = 25 OR age = 32 ;

mais on pourra aussi écrire :

SELECT * FROM COMPANY WHERE  age IN (25, 32) ;

Pour en savoir plus sur le mot clef IN, on pourra consulter cette page.

On peut également utiliser la négation et afficher les lignes des personnes n'ayant ni 25, ni 32 ans :


SELECT * FROM COMPANY WHERE  age NOT IN (25, 32) ;

On pourra consulter cette page pour en savoir plus sur le mot clef NOT.

like

Affichons les noms des personnes dont le nom commence par K:


SELECT * FROM COMPANY WHERE nom LIKE 'K%';

Affichons les noms des personnes dont le nom termine par k:


SELECT * FROM COMPANY WHERE nom LIKE '%k';

Pour en savoir plus sur l'usage de LIKE, consultez cette page.

On utilisera également GLOB pour des recherches analogues. Renseignements sur cette page.

ORDER BY

On peut vouloir trier les résultats d'une requête.

Affichons les lignes par ordre croissant (ASCendant) des salaires:


SELECT * FROM COMPANY ORDER BY salaire ASC;

Affichons les lignes par ordre croissant des salaires puis ordre croissant des âges (ainsi à salaire égal le plus jeune est affiché avant):


SELECT * FROM COMPANY ORDER BY salaire ASC, age ASC;

Affichons les lignes par ordre décroissant des salaires:


SELECT * FROM COMPANY ORDER BY salaire DESC;

Page du site SQLite concernant ORDER BY.