SELECT (Transact-SQL)
Extrait des lignes de la base de données et permet de sélectionner une ou plusieurs lignes ou colonnes d'une ou de plusieurs tables. La syntaxe complète de l'instruction SELECT est complexe mais en voici les principales clauses :
[ WITH <common_table_expression>]
SELECT select_list [ INTO new_table ]
[ FROM table_source ] [ WHERE search_condition ]
[ GROUP BY group_by_expression ]
[ HAVING search_condition ]
[ ORDER BY order_expression [ ASC | DESC ] ]
Les opérateurs UNION, EXCEPT et INTERSECT peuvent être utilisés entre les requêtes pour combiner ou comparer leurs résultats dans un seul jeu de résultats.
Syntaxe
<SELECT statement> ::=
[WITH <common_table_expression> [,...n]]
<query_expression>
[ ORDER BY { order_by_expression | column_position [ ASC | DESC ] }
[ ,...n ] ]
[ COMPUTE
{ { AVG | COUNT | MAX | MIN | SUM } (expression )} [ ,...n ]
[ BY expression [ ,...n ] ]
]
[ <FOR Clause>]
[ OPTION ( <query_hint> [ ,...n ] ) ]
<query_expression> ::=
{ <query_specification> | ( <query_expression> ) }
[ { UNION [ ALL ] | EXCEPT | INTERSECT }
<query_specification> | ( <query_expression> ) [...n ] ]
<query_specification> ::=
SELECT [ ALL | DISTINCT ]
[TOP ( expression ) [PERCENT] [ WITH TIES ] ]
< select_list >
[ INTO new_table ]
[ FROM { <table_source> } [ ,...n ] ]
[ WHERE <search_condition> ]
[ <GROUP BY> ]
[ HAVING < search_condition > ]
Notes
En raison de la complexité de l'instruction SELECT, les éléments et les arguments de la syntaxe sont détaillés par clause :
L'ordre des clauses dans une instruction SELECT est de première importance. Vous pouvez omettre n'importe quelle clause facultative mais, lorsque vous employez les clauses facultatives, elles doivent apparaître dans l'ordre adéquat.
Les instructions SELECT sont autorisées dans les fonctions définies par l'utilisateur uniquement si les listes de sélection de ces instructions contiennent des expressions qui attribuent des valeurs aux variables qui sont locales aux fonctions.
Un nom en quatre parties, dont la partie nom de serveur est établie à l'aide de la fonction OPENDATASOURCE, peut être utilisé en tant que source de table dans toutes les situations où un nom de table peut être inclus dans une instruction SELECT.
Certaines restrictions syntaxiques s'appliquent aux instructions SELECT impliquant des tables distantes. Pour plus d'informations, consultez Consignes pour l'utilisation des requêtes distribuées.
Ordre de traitement de l'instruction SELECT
Les étapes suivantes indiquent l'ordre de traitement d'une instruction SELECT.
FROM
ON
JOIN
WHERE
GROUP BY
WITH CUBE ou WITH ROLLUP
HAVING
SELECT
DISTINCT
ORDER BY
TOP
Autorisations
Nécessite l'appartenance au rôle serveur fixe sysadmin, aux rôles de base de données fixes db_owner et db_datareader, et nécessite d'être propriétaire de la table. Les membres des rôles sysadmin, db_owner et db_securityadmin, ainsi que le propriétaire de la table peuvent transférer des autorisations à d'autres utilisateurs.