SELECT, instruction (SQL Server Compact Edition)

Extrait des lignes de la base de données et permet de sélectionner une ou plusieurs lignes ou colonnes d'une ou plusieurs tables. Il s'agit de la principale construction SQL utilisée pour exprimer les requêtes. L'instruction SELECT ne modifie, n'insère ou ne supprime aucune donnée.

Syntaxe

SELECT select_list 
[ FROM table_source ]
[ WHERE search_condition ] 
[ GROUP BY group_by_expression ] 
[ HAVING search_condition ] 
[ ORDER BY order_expression [ ASC | DESC ] ] 

Notes

Une instruction SELECT décrit une requête au système. L'exécution de la requête ne met à jour aucune donnée. Le résultat de la requête est une table dont les lignes présentent la même structure et le même ensemble de colonnes. L'instruction SELECT définit exactement les colonnes qui apparaissent dans la table obtenue et les lignes qui composent celle-ci. L'instruction SELECT n'indique pas au système comment exécuter la requête ; par contre, celui-ci exécute la requête d'une façon qui lui semble optimale à l'aide d'un module d'optimisation interne basé sur les coûts. Le résultat est nécessairement équivalent à la stratégie d'exécution canonique ci-après. Les seules différences peuvent résider dans l'ordre des lignes dans la table, bien que celui-ci soit cohérent avec tout classement spécifié par une clause ORDER BY.

Stratégie d'exécution
  1. Générez la jointure des tables dans la clause FROM. Si vous utilisez la syntaxe JOIN explicite, le résultat de JOIN est manifeste. Si la clause FROM possède une liste de noms de tables séparés par des virgules, il s'agit implicitement d'une jointure inter-produits des tables.
  2. Si une clause WHERE existe, appliquez la condition de recherche aux lignes obtenues à l'étape 1, puis conservez uniquement celles qui satisfont à la condition.
  3. Si la clause SELECT ne possède aucune agrégation et qu'il n'existe aucune clause GROUP BY, passez à l'étape 7.
  4. S'il existe une clause GROUP BY, divisez les lignes obtenues à l'étape 2 en plusieurs groupes, de manière à ce que toutes les lignes de chaque groupe possèdent la même valeur sur toutes les colonnes de regroupement. S'il n'existe aucune clause GROUP BY, placez toutes les lignes dans un même groupe.
  5. Pour chaque groupe issu de l'étape 4, appliquez la clause HAVING, si elle est spécifiée. Seuls les groupes qui satisfont à la clause HAVING sont conservés.
  6. Pour chaque groupe issu de l'étape 5, générez exactement une ligne de résultat en évaluant la liste de sélection de la clause SELECT par rapport au groupe considéré.
  7. Si la clause SELECT possède le mot clé DISTINCT, éliminez toutes les lignes dupliquées dans le résultat de l'étape 6.
  8. S'il existe une clause ORDER BY, triez le résultat de l'étape 7 conformément à l'expression de classement.

Voir aussi

Aide et information

Assistance sur SQL Server Compact Edition