SELECT (Transact-SQL)
Récupère 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 dans SQL Server.La syntaxe complète de l'instruction SELECT est complexe mais en voici les principales clauses :
[ WITH { [ XMLNAMESPACES ,] [ <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.
S'applique à : SQL Server (SQL Server 2008 et version actuelle), Base de données SQL Azure. |
Conventions de la syntaxe Transact-SQL
Syntaxe
<SELECT statement> ::=
[ WITH { [ XMLNAMESPACES ,] [ <common_table_expression> [,...n] ] } ]
<query_expression>
[ ORDER BY { order_by_expression | column_position [ ASC | DESC ] }
[ ,...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.Un nom en quatre parties ne peut pas être spécifié pour Base de données SQL Azure.
Certaines restrictions syntaxiques s'appliquent aux instructions SELECT impliquant des tables distantes.
Ordre de traitement logique de l'instruction SELECT
Les étapes suivantes indiquent l'ordre de traitement logique, ou ordre de liaison, d'une instruction SELECT.Cet ordre détermine à quel moment les objets définis au cours d'une étape deviennent disponibles pour les clauses des étapes suivantes.Par exemple, si le processeur de requêtes peut se lier (accéder) aux tables ou vues définies dans la clause FROM, ces objets et leurs colonnes deviennent disponibles pour toutes les étapes suivantes.À l'inverse, puisque la clause SELECT correspond à l'étape 8, aucun alias de colonne ni aucune colonne dérivée défini(e) dans cette clause ne peut être référencé(e) par les clauses précédentes.Cependant, ils peuvent être référencés par les clauses suivantes telles que la clause ORDER BY.Notez que l'exécution physique réelle de l'instruction est déterminée par le processeur de requêtes et que l'ordre peut différer de cette liste.
FROM
ON
JOIN
WHERE
GROUP BY
WITH CUBE ou WITH ROLLUP
HAVING
SELECT
DISTINCT
ORDER BY
HAUT
Autorisations
La sélection de données requiert l'autorisation SELECT sur la table ou la vue, qui pourrait être héritée d'une étendue supérieure telle que l'autorisation SELECT sur le schéma ou l'autorisation CONTROL sur la table.Ou requiert l'appartenance aux rôles de base de données fixes db_datareader ou db_owner ou au rôle serveur fixe sysadmin.La création d'une table à l'aide de SELECTINTO requiert également l'autorisation CREATETABLE et l'autorisation ALTERSCHEMA sur le schéma qui possède la nouvelle table.