Citation :
Référence de Transact-SQL
Clause SELECT
Définit les colonnes à renvoyer par la requête.
Syntaxe
SELECT [ ALL | DISTINCT ]
[ TOP n [ PERCENT ] [ WITH TIES ] ] < select_list > < select_list > ::= { * | { table_name | view_name | table_alias }.* | { column_name | expression | IDENTITYCOL | ROWGUIDCOL } [ [ 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 n [PERCENT]
Spécifie que seules les n premières lignes doivent être produites dans le jeu de résultats de la requête. n est un entier compris entre 0 et 4 294 967 295. Si la valeur PERCENT est également spécifiée, seul n premier(s) pour cent des lignes sont produites dans le jeu de résultats. Lorsque la clause PERCENT est spécifiée, n doit être un nombre entier compris entre 0 et 100.
Lorsque la requête comprend une clause ORDER BY, les n premières lignes (ou n pour cent de lignes) ordonnées par la clause ORDER BY sont extraites. Lorsque la requête ne comprend pas de clause ORDER BY, l'ordre des lignes est arbitraire.
WITH TIES
Indique que les lignes supplémentaires sont renvoyées avec la même valeur du jeu de résultats de base dans les colonnes ORDER BY que dans la dernière ligne de TOP n (PERCENT). TOP ... WITH TIES peut être défini uniquement s'il existe une clause ORDER BY.
< 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. * Indique que toutes les colonnes de toutes les tables et vues de la clause FROM doivent être renvoyées. Les colonnes sont renvoyé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 à renvoyer. Spécifiez column_name pour éviter une référence ambiguë, notamment lorsque deux tables dans la clause FROM possèdent des noms de colonnes en double. Par exemple, les tables Customers et Orders de la base de données Northwind ont toutes les deux une colonne intitulée CustomerID. Si les deux tables sont jointes dans une requête, l'ID du client peut être spécifié dans la liste de sélection en tant que Customers.CustomerID.
expression Nom de colonne, constante, fonction ou toute combinaison de noms de colonnes, de constantes ou de fonctions reliés par un ou plusieurs opérateurs ou par une sous-requête.
IDENTITYCOL Renvoie la colonne d'identité. Pour plus d'informations, voir IDENTITY (Propriété), ALTER TABLE et CREATE TABLE. Si plusieurs tables de la clause FROM possèdent une colonne dotée de la propriété IDENTITY, IDENTITYCOL doit être qualifié avec le nom de table approprié, tel que T1.IDENTITYCOL. ROWGUIDCOL Renvoie la colonne contenant l'identificateur unique globale de la ligne. Si plusieurs tables de la clause FROM sont dotées de la propriété ROWGUIDCOL, ROWGUIDCOL doit être qualifié avec le nom de table approprié, tel que T1.ROWGUIDCOL. column_alias Nom utilisé pour remplacer le nom de colonne dans le jeu de résultats de la requête. Par exemple, un alias tel que « Quantity », « Quantity to Date » ou « Qty » doit être spécifié pour une colonne nommée quantity. Les alias sont également utilisés pour spécifier les noms des résultats d'expressions, par exemple : USE Northwind
SELECT AVG(UnitPrice) AS 'Average Price'
FROM [Order Details]
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. Clause INTO
Crée une nouvelle table et y insère les lignes résultant de la requête.
L'utilisateur exécutant une instruction SELECT avec la clause INTO doit disposer de l'autorisation CREATE TABLE dans la base de données de destination. Vous ne pouvez pas utiliser SELECT ... INTO avec COMPUTE. Pour plus d'informations, voir Transactions et Transactions explicites.
Vous pouvez utiliser SELECT ... INTO pour créer une définition de table identique (portant un nom différent) sans aucune donnée en utilisant une condition FALSE dans la clause WHERE.
Syntaxe
[ INTO new_table ]
Arguments
new_table
Nom d'une nouvelle table à créer à partir des colonnes de la liste de sélection et des lignes choisies par la clause WHERE. Le format de la variable new_table est déterminé par l'évaluation des expressions de la liste de sélection. Les colonnes de new_table sont créées dans l'ordre spécifié par la liste de sélection. Chaque colonne de new_table a le même nom, le même type de données et la même valeur que l'expression correspondante dans la liste de sélection.
Lorsqu'une colonne calculée est comprise dans la liste de sélection, la colonne correspondante de la nouvelle table n'est pas une colonne calculée. Les valeurs de la nouvelle colonne sont les valeurs calculées au moment où l'instruction SELECT ... INTO a été exécutée.
Dans cette version de SQL Server, l'option de base de données select into/bulkcopy n'influence pas la possibilité de créer ou non une table permanente avec SELECT INTO. L'importance de la consignation de certaines opérations en bloc, y compris SELECT INTO, dépend du modèle de restauration effectif pour la base de données. Pour plus d'informations, voir Utilisation des modèles de récupération.
Dans les versions précédentes, la création d'une table permanente avec SELECT INTO n'était possible que si l'option select into/bulkcopy était définie.
L'option select into/bulkcopy permet d'assurer la compatibilité ascendante, mais elle ne sera peut-être plus prise en charge dans les versions futures. Pour plus d'informations, voir les rubriques Modèles de récupération et compatibilité ascendante et ALTER DATABASE.
Clause FROM
Spécifie la ou les tables à partir desquelles extraire les lignes. La clause FROM est obligatoire sauf lorsque la liste de sélection ne contient que des constantes, des variables et des expressions arithmétiques (pas de nom de colonne). Pour plus d'informations, voir FROM.
Syntaxe
[ FROM { < table_source > } [ ,...n ] ] < table_source > ::= table_name [ [ AS ] table_alias ] [ WITH ( < table_hint > [ ,...n ] ) ] | view_name [ [ AS ] table_alias ] | rowset_function [ [ AS ] table_alias ] | OPENXML | derived_table [ AS ] table_alias [ ( column_alias [ ,...n ] ) ] | < joined_table > < joined_table > ::= < table_source > < join_type > < table_source > ON < search_condition > | < table_source > CROSS JOIN < table_source > | < joined_table > < join_type > ::= [ INNER | { { LEFT | RIGHT | FULL } [ OUTER ] } ] [ < join_hint > ] JOIN Arguments
< table_source >
Tables, vues, tables dérivées et tables jointes de l'instruction SELECT. table_name [[AS] table_alias ] Nom d'une table et d'un alias optionnel.
view_name [ [ AS ] table_alias ] Nom d'une vue et d'un alias optionnel.
rowset_function [ [AS] table_alias ] Nom d'une fonction rowset et d'un alias optionnel. Pour obtenir la liste des fonctions d'ensemble de lignes, voir Fonctions d'ensembles de lignes.
OPENXML Fournit une vue de l'ensemble des lignes d'un document XML. Pour plus d'informations, voir OPENXML.
WITH ( < table_hint > [ ,...n ] ) Spécifie un ou plusieurs indicateurs de table. Pour plus d'informations sur les indicateurs de table, voir FROM.
derived_table [ [ AS ] table_alias ] Instruction SELECT imbriquée qui extrait les lignes de la base de données et des tables spécifiées. column_alias Alias facultatif qui peut remplacer un nom de colonne dans le jeu de résultats. < joined_table >
Jeu de résultats qui correspond au produit de deux ou plusieurs tables. Exemple :
SELECT *
FROM tab1 LEFT OUTER JOIN tab2 ON tab1.c3 = tab2.c3
RIGHT OUTER JOIN tab3 LEFT OUTER JOIN tab4
ON tab3.c1 = tab4.c1
ON tab2.c3 = tab4.c3
Pour plusieurs jointures CROSS, vous devez utiliser les parenthèses pour modifier l'ordre naturel des jointures.
< join_type >
Type d'opération de jointure. INNER Indique que tous les couples de lignes correspondants sont renvoyés. Supprime les lignes n'ayant pas de correspondance entre les deux tables. Ceci est l'option par défaut si aucun type de jointure n'est spécifié.
LEFT [OUTER] Indique que toutes les lignes de la table de gauche ne réunissant pas les critères spécifiés sont comprises dans le jeu de résultats en plus de l'ensemble des lignes renvoyées par la jointure interne. Les colonnes de sortie de la table de gauche prennent la valeur NULL.
RIGHT [OUTER] Indique que toutes les lignes de la table de droite ne réunissant pas les critères spécifiés sont comprises dans le jeu de résultats en plus de l'ensemble des lignes renvoyées par la jointure interne. Les colonnes de sortie de la table de droite prennent la valeur NULL.
FULL [OUTER] Si une ligne d'une des deux tables ne répond pas aux critères de sélection, cette option spécifie la ligne à inclure dans le jeu de résultats et les colonnes de sortie qui correspondent à l'autre table doivent prendre la valeur NULL. Ceci en plus de toutes les lignes généralement renvoyées par la jointure interne.
< join_hint > Option de jointure ou algorithme d'exécution. Si <join_hint> est spécifié, INNER, LEFT, RIGHT ou FULL doivent également être spécifiés de manière explicite. Pour plus d'informations sur les indicateurs de jointure, voir FROM.
JOIN Indique que les tables ou vues spécifiées doivent être jointes. ON < search_condition >
Indique la condition sur laquelle se base la jointure. Celle-ci peut spécifier tout prédicat, bien que les opérateurs de colonne et de comparaison soient souvent utilisés. Exemple :
SELECT ProductID, Suppliers.SupplierID
FROM Suppliers JOIN Products ON (Suppliers.SupplierID = Products.SupplierID)
Lorsque la condition spécifie des colonnes, celles-ci ne doivent pas porter le même nom ou être du même type de données. Cependant, si les types de données ne sont pas identiques, ils doivent être compatibles ou pouvoir être convertis de manière implicite par Microsoft® SQL Server. Si les types de données ne peuvent pas être convertis implicitement, la condition de jointure doit le faire explicitement à l'aide de la fonction CAST.
Pour plus d'informations sur les conditions de recherche et les prédicats, voir Search Condition.
CROSS JOIN
Spécifie le produit croisé de deux tables. Renvoie les mêmes lignes comme si les tables à joindre étaient simplement énumérées dans la clause FROM et qu'aucune clause WHERE n'était spécifiée. Par exemple, les deux requêtes suivantes renvoient un jeu de résultats qui est une jointure croisée de toutes les lignes de T1 et T2.
SELECT * FROM T1, T2
SELECT * FROM T1 CROSS JOIN T2
©1988-2000 Microsoft Corporation. Tous droits réservés.
|