Chapitre 7. Requêtes

Table des matières
7.1. Survol
7.2. Expressions de table
7.2.1. La clause FROM
7.2.2. La clause WHERE
7.2.3. Les clauses GROUP BY et HAVING
7.3. Listes de sélection
7.3.1. Éléments de la liste de sélection
7.3.2. Labels de colonnes
7.3.3. DISTINCT
7.4. Combiner des requêtes
7.5. Tri de lignes
7.6. LIMIT et OFFSET

Les précédents chapitres expliquaient comme créer des tables, comment les remplir avec des données et comment manipuler ces données. Il est temps d'aborder maintenant la façon de récupérer ces données depuis la base de données.

7.1. Survol

Le processus de récupération des données et la commande elle-même sont appelés requête. En SQL, la commande SELECT est utilisée pour spécifier des requêtes. La syntaxe générale de la commande SELECT est

SELECT liste_select FROM expression_table [specification_tri]

Les sections suivantes décrivent en détails la liste de sélection, l'expression de tables et la spécification du tri.

Le type de requête le plus simple est de la forme

SELECT * FROM table1;

En supposant qu'il existe une table appelée table1, cette commande récupérera toutes les lignes et toutes les colonnes de table1. (La méthode de récupération dépend de l'application client. Par exemple, le programme psql affichera une table, façon art ASCII, alors que les bibliothèques client offriront des fonctions d'extraction de valeurs individuelles à partir du résultat de la requête.) * utilisé comme liste de sélection désigne toutes les colonnes que l'expression de la table fournie. Une liste de sélection peut aussi sélectionner un sous-ensemble des colonnes disponibles ou effectuer un calcul en utilisant les colonnes. Par exemple, si table1 dispose des colonnes nommées a, b et c (et peut-être d'autres), la requête suivante peut être effectuée :

SELECT a, b + c FROM table1;

(en supposant que b et c soient de type numérique). Voir Section 7.3 pour plus de détails.

FROM table1 est un type très simple d'expression de tables : il lit une seule table. En général, les expressions de tables sont des constructions complexes de tables de base, de jointures et de sous-requêtes. Il est également possible d'omettre l'expression de table et d'utiliser la commande SELECT comme une calculatrice :

SELECT 3 * 4;

Ceci est plus utile si les expressions de la liste de sélection renvoient des résultats variables. Il est, par exemple, possible d'appeler une fonction de cette façon :

SELECT random();