Clause SELECT (Transact-SQL)

Définit les colonnes à retourner par la requête.

Icône Lien de rubriqueConventions de syntaxe Transact-SQL

Syntaxe

SELECT [ ALL | DISTINCT ]
[ TOP ( expression ) [ PERCENT ] [ WITH TIES ] ] 
<select_list> 
<select_list> ::= 
    { 
      | { table_name | view_name | table_alias }.* 
      | {
          [ { table_name | view_name | table_alias }. ]
               { column_name | $IDENTITY | $ROWGUID } 
          | udt_column_name [ { . | :: } { { property_name | field_name } 
            | method_name (argument [ ,...n] ) } ]
          | expression
          [ [ AS ] column_alias ] 
         }
      | column_alias = expression 
    } [ ,...n ] 

Arguments

  • ALL
    Indique que les doublons de lignes peuvent apparaître dans le jeu de résultats. ALL est l'argument par défaut.

  • DISTINCT
    Indique que seules des lignes uniques peuvent apparaître dans le jeu de résultats. Les valeurs Null sont considérées comme étant égales pour le mot clé DISTINCT.

  • TOP ( expression ) [ PERCENT ] [ WITH TIES ]
    Indique que seul un premier ensemble ou pourcentage de lignes spécifié sera retourné à partir du jeu de résultats de la requête. expression peut être un nombre ou un pourcentage de lignes.

    Pour la compatibilité descendante, l'utilisation de l'expression TOP sans parenthèses dans les instructions SELECT est prise en charge, mais déconseillée. Pour plus d'informations, consultez TOP (Transact-SQL).

  • < select_list >
    Colonnes à sélectionner pour le jeu de résultats. La liste de sélection est une série d'expressions séparées par des virgules. Le nombre maximum d'expressions pouvant être spécifiées dans la liste de sélection est de 4 096.

  • *
    Indique que toutes les colonnes de toutes les tables et vues de la clause FROM doivent être retournées. Les colonnes sont retournées par table ou vue, comme indiqué dans la clause FROM, et par ordre d'apparition dans la table ou la vue.

  • table_name | view_name | table_alias.*
    Limite l'étendue de l'astérisque * sur la table ou la vue spécifiée.

  • column_name
    Nom d'une colonne à retourner. Spécifiez column_name pour éviter une référence ambiguë, notamment lorsque deux tables dans la clause FROM possèdent des noms de colonne en double. Par exemple, les tables SalesOrderHeader et SalesOrderDetail de la base de données AdventureWorks possèdent toutes les deux une colonne nommée ModifiedDate. Si les deux tables sont associées dans une requête, la date de modification des entrées SalesOrderDetail peut être spécifiée dans la liste de sélection en tant que SalesOrderDetail.ModifiedDate.

  • expression
    Constante, fonction ou toute combinaison de noms de colonne, de constantes et de fonctions reliées par un ou plusieurs opérateurs, ou par une sous-requête.

  • $IDENTITY
    Retourne la colonne d'identité. Pour plus d'informations, consultez IDENTITY (Propriété) (Transact-SQL), ALTER TABLE (Transact-SQL) et CREATE TABLE (Transact-SQL).

    Si plusieurs tables de la clause FROM possèdent une colonne dotée de la propriété IDENTITY, $IDENTITY doit être qualifié avec le nom de table approprié, tel que T1.$IDENTITY.

  • $ROWGUID
    Retourne la colonne GUID de la ligne.

    Si plusieurs tables de la clause FROM sont dotées de la propriété ROWGUIDCOL, $ROWGUID doit être qualifié avec le nom de table approprié, tel que T1.$ROWGUID.

  • udt_column_name
    Nom d'une colonne de type CLR (Common Language Runtime) défini par l'utilisateur à retourner.

    [!REMARQUE]

    SQL Server Management Studio retourne des valeurs de type défini par l'utilisateur en représentation binaire. Pour retourner des valeurs de type défini par l'utilisateur au format de chaîne ou XML, utilisez CAST ou CONVERT.

  • { . | :: }
    Spécifie une méthode, une propriété ou un champ d'un type CLR défini par l'utilisateur. Utilisez . pour une méthode, une propriété ou un champ d'instance (non statique). Utilisez :: pour une méthode, une propriété ou un champ statique. Pour appeler une méthode, une propriété ou un champ d'un type CLR défini par l'utilisateur, vous devez disposer d'une autorisation EXECUTE sur le type.

  • property_name
    Propriété publique de udt_column_name.

  • field_name
    Membre de données publiques de udt_column_name.

  • method_name
    Méthode publique de udt_column_name qui prend un ou plusieurs arguments. method_name ne peut pas être une méthode mutateur.

    L'exemple suivant sélectionne les valeurs pour la colonne Location, définie comme étant de type point, à partir de la table Cities, en appelant une méthode du type appelé Distance :

    CREATE TABLE Cities (
         Name varchar(20),
         State varchar(20),
         Location point );
    GO
    DECLARE @p point (32, 23), @distance float
    GO
    SELECT Location.Distance (@p)
    FROM Cities;
    
  • column_ alias
    Nom utilisé pour remplacer le nom de colonne dans le jeu de résultats de la requête. Par exemple, vous pouvez spécifier un alias tel que Quantité, Quantité à la date du jour ou Qté pour une colonne appelée quantité.

    Les alias sont également utilisés pour spécifier les noms des résultats d'expressions, par exemple :

    USE AdventureWorks;

    GO

    SELECT AVG(UnitPrice) AS 'Average Price'

    FROM Sales.SalesOrderDetail;

    L'argument column_alias peut être utilisé dans une clause ORDER BY. Il ne peut toutefois pas être utilisé dans une clause WHERE, GROUP BY ou HAVING. Si l'expression de requête fait partie d'une instruction DECLARE CURSOR, column_alias ne peut pas être utilisé dans la clause FOR UPDATE.

Notes

La longueur des données retournées pour les colonnes text ou ntext incluses dans la liste de sélection est égale à la plus petite des valeurs suivantes : la taille réelle de la colonne text, le paramètre de session TEXTSIZE par défaut ou la limite codée en dur dans l'application. Pour modifier la longueur du texte retourné dans la session, utilisez l'instruction SET. Par défaut, la limite de longueur pour des données textuelles retournées avec une instruction SELECT est de 4 Ko.

Le Moteur de base de données SQL Server déclenche l'exception 511 et annule l'instruction en cours d'exécution dans les cas suivants :

  • L'instruction SELECT produit une ligne de résultats ou une ligne de table de travail intermédiaire excédant 8 060 octets.

  • L'instruction DELETE, INSERT ou UPDATE tente d'opérer une action sur une ligne excédant 8 060 octets.

Une erreur se produit si aucun nom de colonne n'est attribué à une colonne créée par une instruction SELECT INTO ou CREATE VIEW.