SELECT
Echantillonnage des données
DSQL, ESQL, PSQL
[WITH [RECURSIVE] <cte> [, <cte> ...]] SELECT [FIRST <limit-expression>] [SKIP <limit-expression>] [DISTINCT | ALL] <select-list> FROM <table-reference> [, <table-reference> ...] [WHERE <search-condition>] [GROUP BY <value-expression> [, <value-expression> ...]] [HAVING <aggregate-condition>] [WINDOW <window-definition> [, <window-definition> ...]] [PLAN <plan-expression>] [UNION [DISTINCT | ALL] <query-term>] [ORDER BY <sort-specification> [, <sort-specification> ...]] [ { ROWS <value-expression> [TO <value-expression>] } | { [OFFSET <offset-fetch-expression> {ROW | ROWS}] [FETCH {FIRST | NEXT} [<offset-fetch-expression>] {ROW | ROWS} ONLY] } ] [FOR UPDATE [OF <column-name-list>]] [WITH LOCK [SKIP LOCKED]] [OPTIMIZE FOR {FIRST | ALL} ROWS] [INTO <variable-list>] <variables-list> ::= varname varname ...]
Description
L’instruction SELECT
extrait des données de la base de données et les transmet à l’application ou à la commande SQL appelante. Les données sont renvoyées sous la forme d’un ensemble de lignes (qui peuvent être 0 ou plus), chaque ligne contenant une ou plusieurs colonnes ou champs. L’ensemble des lignes renvoyées est le jeu de données de la commande résultante.
Les parties suivantes de la commande SELECT
sont obligatoires :
-
Le mot-clé
SELECT
suivi d’une liste de champs. Cette partie précise ce qui est demandé à la base de données ; -
Le mot-clé
FROM
suivi de l’objet échantillonné (par exemple une table). Cette partie indique au serveur où chercher les données demandées.
Dans sa forme la plus simple, SELECT
récupère un certain nombre de champs d’une seule table, par ex :
SELECT id, name, address
FROM contacts
Ou, afin d’extraire tous les champs d’une table :
SELECT * FROM contacts
En pratique, la commande SELECT
est généralement exécutée avec l’expression WHERE
, qui contraint le jeu de données retourné. De même, le jeu de données résultant est généralement trié avec l’expression ORDER BY
, puis contraint (afin d’organiser la navigation des données paginées) par les expressions FIRST … SKIP', `OFFSET … FETCH
ou ROWS
.
Une liste de champs peut contenir différents types d’expressions au lieu de noms de champs et la source n’est pas nécessairement une table ou une vue, elle peut aussi être une table dérivée, une expression de table générique (CTE) ou une procédure stockée sélective.
Plusieurs sources de données peuvent être jointes à l’aide de la clause JOIN
, et plusieurs ensembles de données résultants peuvent être combinés à l’aide de la clause UNION
.
Dans les sections suivantes, nous allons examiner en détail toutes les expressions de la commande SELECT
et leur utilisation.