Principes de base des requêtes

Une requête est une demande de données stockées dans SQL Server. Une requête peut être émise de plusieurs manières :

  • Un utilisateur MS Query ou Microsoft Access peut utiliser une interface utilisateur graphique (GUI, Graphical User Interface) pour extraire d'une ou plusieurs tables de SQL Server les données qui l'intéressent.

  • Un utilisateur de SQL Server Management Studio ou de l'utilitaire osql peut émettre une instruction SELECT.

  • Une application cliente ou de niveau intermédiaire, comme Microsoft Visual Basic, peut mapper les données d'une table SQL Server avec un contrôle lié, tel qu'une grille.

Bien que les requêtes interagissent de différentes manières avec un utilisateur, elles réalisent toutes la même tâche : Elles présentent le jeu de résultats d'une instruction SELECT à l'utilisateur. Même si l'utilisateur ne précise jamais une instruction SELECT, comme c'est généralement le cas avec des outils graphiques tels que Visual Studio Query Designer, le logiciel client transforme chaque requête utilisateur en une instruction SELECT qu'il transmet à SQL Server.

L'instruction SELECT extrait les données de SQL Server et les retourne à l'utilisateur dans un ou plusieurs jeux de résultats. Un jeu de résultats est une présentation tabulaire des données extraites par l'instruction SELECT. De même qu'une table SQL, le jeu de résultats se compose de colonnes et de lignes.

La syntaxe complète de l'instruction SELECT est complexe, mais dans la plupart des cas, les instructions SELECT décrivent quatre propriétés principales d'un jeu de résultats :

  • Le numéro et les attributs des colonnes du jeu de résultats. Les attributs suivants doivent être définis pour chacune des colonnes du jeu de résultats :

    • Type de données de la colonne

    • La taille de la colonne, et en cas de colonne de type numérique son degré de précision et son échelle.

    • L'origine des valeurs des données retournées dans la colonne.

  • Les tables d'où sont extraites les données du jeu de résultats, ainsi que les relations logiques existant entre les tables.

  • Les critères que les lignes des tables source doivent remplir pour être sélectionnées par l'instruction SELECT. Les lignes qui ne répondent pas à ces critères sont ignorées.

  • L'ordre dans lequel les lignes du jeu de résultats sont classées.

L'instruction SELECT suivante recherche l'ID produit, le nom et le tarif de tous les produits dont le prix unitaire dépasse $40 :

SELECT ProductID, Name, ListPrice
FROM Production.Product
WHERE ListPrice > $40
ORDER BY ListPrice ASC

Les noms de colonnes énumérés après le mot clé SELECT (ProductID, Name et ListPrice) composent la liste de sélection. Cela signifie que le jeu de résultats comporte trois colonnes et que chaque colonne possède le nom, le type de données et la taille de la colonne associée de la table Product. Puisque la clause FROM n'indique qu'une seule table de base, tous les noms de colonnes de l'instruction SELECT font référence aux colonnes de cette table.

La clause FROM spécifie la table Product comme la table d'où les données doivent être extraites.

La clause WHERE spécifie la condition que seules les lignes de la table Product qui correspondent à cette instruction SELECT sont les lignes dans lesquelles la valeur de la colonne ListPrice est supérieure à $40.

La clause ORDER BY indique que le jeu de résultats doit être trié en ordre croissant (ASC) en fonction de la valeur de la colonne ListPrice.