Page d'Accueil

Langage Structuré de Requête (SQL)

 

Introduction au SQL

 

Vue d'ensemble

Jusqu'ici pour créer une requête, nous avons appris à utiliser l'Assistant requête ou le mode création d'une requête. Dans les deux cas, nous sélectionnions des champs et les ajoutions à la requête. Ce concept d'établir une requête est basé sur le Langage Structuré de Requête dont le sigle anglais est SQL(Structured Query Language).

En fait, toutes les requêtes sont basées sur le SQL et ce langage est utilisé par la plupart des environnements de développement des bases de données, y compris  Microsoft Access.
Note de l'auteur Le SQL peut être prononcé Sequel. ou S. Q. L. Sur ce site, nous considérerons la prononciation Sequel. Pour cette raison, l'abréviation sera toujours considérée comme un mot, qui aurait comme conséquence « un énoncé SQL ». Nous écrirons régulièrement le  «le SQL » et au lieu de "Langage SQL".

Puisque Microsoft Access fournit des moyens très flexibles et avancés de créer des requêtes, vous pouvez créer presque n'importe quel type de requête sans savoir quelque chose au sujet du SQL. Cependant, il est important de comprendre ce langage parce que vous devrez avoir une idée de ce que Microsoft Access fait quand vous lui demandez de créer une requête. Ceci vous permettra de dépanner une requête si nécessaire. En outre, vous devez pouvoir interagir avec des applications créées dans d'autres environnements.

Des requêtes sont établies à partir du SQL. Comme chaque langage de programmation, le SQL vient avec sa syntaxe, son vocabulaire, et ses règles. Le SQL est équipé des mots-clés qui lui indiquent quoi faire et comment le faire. Nous avons établi qu'une requête ressemble à une question que vous posez à la base des données et la base des données vous répond. Ceci consiste à demander à la base de données comment isoler ou sélectionner certains champs et comment créer un nouvel objet pour ces champs. Pour demander à la base de données comment créer une requête, ou comment isoler des champs, vous devez écrire un énoncé fait de mots-clés, d'opérateurs et d'objets de la bases de données.

Le mot-clé SELECT

En créant une requête, nous avons vu que vous devez indiquer quel objet contient les champs que vous voulez inclure dans la requête. L'objet peut être une table ou une requête différente. Si vous utilisez l'Assistant Requête simple , vous sélectionnez l'objet dans la boîte bascule des Tables/Requêtes:

Si vous commencez une requête dans mode création, vous sélectionnez l'objet dans la zone de dialogue Affichage Table :

 

Le mot-clé le plus fondamental utilisé par le SQL est SELECT. Afin de traiter votre demande, vous devez indiquer quoi sélectionner. C'est en fait utiliser le mot-clé SELECT. Par conséquent, le mot-clé SELECT utilise la syntaxe suivante :

SELECT What FROM WhatObject;

Tout compte fait, le SQL n'est pas difficile à traduire. Ceci signifie que CHOISIR ET SELECTIONNER représentent le même mot. Pour différencier les mots-clés de SQL du langage « normal » d'un objet de la base de données, il est bien indiqué d'écrire les mots-clés de SQL en majuscule. Un énoncé SQL doit finir avec un point-virgule.

Dans le SQL, l'objet est indiqué après le mot-clé et par le paramètre WhatObject(quel objet) de notre syntaxe. Par exemple, si vous voulez créer une requête basée sur une table appelée Personnes, vous écririez l'énoncé comme :

SELECT What FROM Persons;

Nous avons également vu que, après l'indication de l'objet qui contient les champs, vous pouvez alors sélectionner chaque champ désiré et l'ajouter à la requête. Si vous utilisez l'Assistant Requête simple, vous pouvez double-cliquer le champ dans la liste des champs disponibles :

Si vous utilisez la fenêtre Requête Sélectionnée, vous pouvez traîner le champ de la liste et le laisser tomber dans la section inférieure de l'affichage :

Dans le SQL, pour sélectionner un champ, écrivez son nom après le mot-clé SELECT. Par exemple, pour sélectionner le champ LastName de la table Personnes, vous dactylographieriez

SELECT LastName FROM Persons;

Si vous voulez inclure plus d'un champ dans la même table, les séparer avec une virgule. Par exemple, pour sélectionner FirstName et LastName de la table Persons pour les ajourner et les inclure dans votre requête, vous pouvez utiliser l'énoncé suivant :

SELECT FirstName, LastName FROM Persons;

Nous avons également vu que, pour sélectionner tous les champs à partir d'un objet et les inclure dans votre requête, vous pouvez traîner l'astérisque du champ et le laisser tomber dans la section inférieure de la requête en mode création. De la même manière, pour inclure tous les champs dans la table ou dans la requête de départ, utilisez l'astérisque * comme champ. Voici un énoncé qui inclut tous les champs de la table Persons :

SELECT * FROM Persons;

Etude Pratique Étude pratique : Utiliser le mot-clé SELECT

  1. Commencez Microsoft Access et ouvrez la base de données Bethesda Car Rental1.
  2. Ouvrez la table Cars et le muter en mode création pour passer en revue sa liste des champs.
  3. Fermez la table Cars.
  4. Dans la fenêtre de la base des données, cliquez le bouton Formulaires.
  5. Sur le menu principal, cliquez Insertion - > Requête.
  6. Dans la zone de dialogue Nouvelle requête, cliquez Mode création et cliquez OK.
  7. Cliquez le bouton Fermer dans la zone de dialogue Afficher la Table.
  8. Sur le menu principal, cliquez Affichage - > Mode SQL. Notez que la fenêtre apparaît comme un Bloc-notes. 
  9. Changez la teneur de la fenêtre par SELECT Make FROM Cars;
     
  10. pour Exécuter la requête, sur la barre d'outils en mode SQL, cliquez le bouton Exécuter. 
  11. Après avoir visionné la requête, pour revenir de nouveau à la fenêtre mode SQL, sur le menu principal, cliquer Affichage - > Mode SQL. 
  12. Pour lister les marques, les modèles, et les années des voitures, changez l'énoncé comme suit :
     
    SELECT Make, Model, Year FROM Cars;
  13. Exécutez la requête pour voir le résultat :
     
  14. Après avoir visionné la requête, droit-cliquez sa barre de titres et cliquez mode SQL
  15. Pour créer une requête qui inclut tous les champs de la table, changez l'énoncé comme suit :
     
    SELECT * FROM Cars;
  16. Exécutez la requête.
  17. Après avoir visionné la requête, droit-cliquez sa barre de titre et cliquez Mode SQL

Trier les enregistrements sur des requêtes

Toutes les techniques utilisées pour trier les enregistrements dans une table peuvent également être appliquées à une requête qui s'affiche en mode feuille de données. Pour créer des requêtes plus avancées, le SQL vous permet de trier un champ sur une requête et d'utiliser cet arrangement comme élément de la requête.

Pour créer une requête qui a un champ à trier comme élément de son énoncé, ouvrez la requête en mode création. Une fois en mode création, cliquez la colonne désirée du champ Croissant et sélectionnez croissant à partir de sa boîte bascule. De la même manière, vous pouvez trier le champ dans l'ordre contraire en sélectionnant l'option Decroissant.

Dans le SQL, pour trier un champ dans l'ordre croissant, vous pouvez inclure la clause ORDER BY dans votre énoncé. La syntaxe utilisée serait :

SELECT What FROM WhatObject ORDER BY WhatField;

Le champ utilisé comme base doit être identifié comme élément des colonnes sélectionnées. Imaginez que vous voulez créer une liste des membres du personnel constituée de leurs prénoms et noms dans une table appelé StaffMembers. Si vous voulez commander la liste dans l'ordre alphabétique basé sur la colonne LastName, vous utiliserez un énoncé comme :

SELECT FirstName, LastName FROM StaffMembers ORDER BY LastName;

Si vous utilisez l'opérateur * pour inclure tous les champs, vous pouvez commander la liste basée sur les champs de l'une des tables comme nous avons appris pendant l'analyse des données. Imaginez que vous avez créé une requête qui inclut tous les champs. L'énoncé suivant énumérerait les enregistrements de la table StaffMembers basé sur l'ordre alphabétique de la colonne LastName :

SELECT * FROM StaffMembers ORDER BY LastName;

Par défaut, les enregistrements sont commandés dans l'ordre croissant. Néanmoins, l'ordre croissant est commandé en utilisant le mot-clé de ASC indiqué après le champ de base. Par exemple, pour trier les noms dans l'ordre croissant dans une requête qui inclut les prénoms et les noms, l'énoncé ci-dessus peut également être écrit comme suit :

SELECT FirstName, LastName FROM StaffMembers ORDER BY LastName ASC;

Le deuxième énoncé peut être écrit comme:

SELECT * FROM StaffMembers ORDER BY LastName ASC;

Si vous voulez trier des enregistrements dans l'ordre décroissant, utilisez le mot-clé DESC. Il produit le résultat opposé à ASC. Pour trier les enregistrements dans l'ordre alphabétique inverse, les deux énoncés ci-dessus peuvent être écrits comme :

SELECT FirstName, LastName FROM StaffMembers ORDER BY LastName DESC;

Le deuxième énoncé peut être écrit comme :

SELECT * FROM StaffMembers ORDER BY LastName DESC;

Etude Pratique Étude pratique :  Trier les enregistrements dans les requêtes

  1. Ouvrez la base de données ROSH.
  2. Dans la section Tables de la fenêtre de la base de données, cliquez Students1 pour la sélectionner.
  3. Pour créer une nouvelle requête, sur le menu principal, cliquez Insertion - > Requête et, dans la zone de dialogue des Nouvelle requête, double-cliquez Mode création.
  4. Dans Students1 listé, double-cliquez FirstName, LastName, Gender, DOB.
  5. Cliquez la cellule qui est à l'intersection de LastName et Tri pour révéler sa boîte bascule.
  6. Cliquez sa flèche et sélectionnez Croissant.
     
  7. Pour visionner le résultat, sur la barre d'outils en mode création des requêtes, cliquez le bouton Exécuter
  8. Fermez la requête. Une fois demandé de la sauvegarder, cliquez oui.
  9. Dactylographiez Liste des étudiants comme nom de la requête et cliquez OK.
  10. Dans la fenêtre de la base de données, cliquez le bouton Requêtes. Pour créer une nouvelle requête, sur la fenêtre de la base de données, cliquez Nouveau et double-cliquez Mode création.
  11. Dans la zone de dialogue Afficher la table, cliquez Terminer. Droit-cliquez un secteur vide de la fenêtre Requête Sélectionnée et cliquez Mode SQL.
  12. Changez l'énoncé comme suit :
     
    SELECT LastName, FirstName, DateHired, Salary, MaritalStatus
    FROM Staff
    ORDER BY DateHired;
  13. Exécutez la requête.
     
  14. fermez la requête. Une fois demandé si vous voulez la sauvegarder, cliquer oui.
  15. Dactylographiez Membres du personnel par ancienneté comme nom de la requête et Cliquez OK.

SQL et filtrer par sélection

Le filtre par Sélection dans le SQL est représenté par WHERE (en majuscule) dans un énoncé SQL. Sa syntaxe de base est :

SELECT What FROM WhatObject WHERE Expression;

Nous avons appris que, pour exécuter l'analyse de données, un critère est indiqué en utilisant une expression. L'expression pourrait être que les enregistrements devraient concerner seulement les étudiants célibataire ou qui vivent seuls à domicile. Les mêmes types d'expressions sont utilisés dans le SQL, après quelques règles. Nous avons vu que, pour obtenir une liste d'employés habitant dans le Maryland, dans le filtre à côté du formulaire, nous pourrions dactylographier une expression telle que =MD ou = " MD " (se rappeler que si vous dactylographiez =MD et validez Entrer, Microsoft Access la changerait en = " MD "). Dans le SQL, pour créer une liste des membres du personnel qui habitent dans le Maryland, nous pouvons écrire l'énoncé suivant :

SELECT FirstName, LastName, State FROM Staff WHERE State="MD";

Pour établir vos expressions, vous pouvez utiliser l'un des opérateurs booléens et logiques de comparaison que nous avons étudiés.

Etude Pratique Étude pratique : Requête par sélection

  1. Ouvrez la base de données  Bethesda car Rental1.
  2. Pour créer une nouvelle requête, sur le menu principal, cliquez Insertion - > Requête et double-cliquez Mode création.
  3. Dans la zone de dialogue Afficher la table, cliquez Fermer.
  4. Pour écrire un énoncé de SQL, droit-cliquez un secteur vide dans la fenêtre et cliquez Mode SQL.
  5. Pour lister seulement les voitures Ford, changez l'énoncé comme suit :
     
    SELECT Make, Model, Year FROM Cars WHERE Make="Ford";
  6. Exécutez la requête.
  7. Après avoir visionné le résultat, droit-cliquez sa barre de titres et cliquez Mode SQL.
  8. Pour questionner la liste des voitures disponibles, changez l'énoncé en ce qui suit :
     
    SELECT Make, Model, Year, Available FROM Cars WHERE Available=True;
  9. Exécutez la requête.
  10. fermez la requête. Une fois demandé de sauvegardé, cliquez non.
  11. Ouvrez la base de données ROSH.
  12. Pour créer une nouvelle requête, sur le menu, cliquez Insertion - > Requête et double-cliquez Mode création.
  13. Dans la liste Students1, double-cliquez LastName, FirstName, Gender, SingleParentHome, EmergencyName, EmergencyPhone.
  14. Pour créer une liste des étudiants célibataires ou qui vivent seuls, cliquez la boîte qui est à l'intersection de SingleParentHome et Critères, dactylographiez =True.
     
  15. Pour visionner l'énoncé SQL, droit-cliquez la barre des titres de la fenêtre et cliquez Mode SQL
     
  16. Exécutez la requête.
  17. Muter la requête de nouveau en mode création.
  18. Puisque nous savons déjà ce que la liste inclut, nous n'avons pas besoin d'afficher la colonne SingleParentHome.
    Sous SingleParentHome, enlever la boîte de contrôle Afficher.
  19. Pour visionner l'énoncé SQL, droit-cliquez un secteur vide de la fenêtre et cliquez mode SQL.
  20. Exécutez la requête.
  21. Fermez la requête. Une fois demandé si vous voulez la sauvegarder, cliquez oui.
  22. Dactylographiez Etudiants qui habitent seuls à la maison comme nom de la requête et cliquez OK.

Microsoft Access et les énoncés SQL

 

Champs de qualification dans les énoncés

Bien que Microsoft Access soit fidèle au SQL, il ajoute ses propres petits détails en créant ou en interprétant les énoncés auxquels il est confronté. Au lieu d'utiliser les noms des champ comme nous avons fait jusqu'ici, Microsoft Access aime identifier l'objet qui héberge un champ juste en recherchant le champ référé.

En étudiant les opérateurs, nous avons vu que le nom d'un champ devrait être délimité par les crochets pour réduire la confusion au cas où le nom serait constitué de plus d'un mot. Nous avons également mentionné que les crochets fournissent une sécurité même si le nom est en un mot. Basé sur ceci, pour créer un énoncé pour une requête qui inclut les prénoms et les noms dans la table Persons, vous pouvez l'écrire comme suit :

SELECT [FirstName], [LastName] FROM [Persons];

Pour identifier un champ comme appartenant à une table ou à une requête spécifique,  Microsoft Access associe habituellement son nom à l'objet mère. Cette association est désignée sous le nom de qualification. Pour qualifier un champ, vous considérez l'objet qui contient le champ, puis ajouter un point suivi du nom du champ. La syntaxe de base d'un énoncé SELECT serait :

SELECT WhatObject.WhatField FROM WhatObject;

Imaginez que vous voulez obtenir une liste des personnes par leurs noms dans les données stockées dans la table Persons. En utilisant cette syntaxe, vous pouvez utiliser un énoncé comme suit :

SELECT Persons.LastName FROM Persons;

Ou

SELECT [Persons].[LastName] FROM [Persons];

De la même manière, si vous voulez inclure beaucoup de champs de la même table, qualifiez chacun et les séparer avec une virgule. Pour lister les prénoms et les noms des enregistrements de la table Persons, vous pouvez utiliser l'énoncé suivant :

SELECT Persons.FirstName, Persons.LastName FROM Persons;

Ou

SELECT [Persons].[FirstName], [Persons].[LastName] FROM [Persons];

Si vous voulez inclure tout d'une table ou d'une requête différente, vous pouvez qualifier le champ par *  et le qualifier pendant que vous cliquez n'importe quel autre champ. Voici un exemple :

SELECT Persons.* FROM Persons;

Ou

SELECT [Persons].* FROM [Persons];

Énoncé linéaire

Certains mots-clés de SQL sont utilisés pour contrôler des blocs d'énoncés secondaires. De tels mots que nous avons vus jusqu'ici sont SELECT et FROM. Une bonne technique de rendre un énoncé SQL facile à lire consiste à isoler chaque mot-clé principal et son énoncé secondaire sur sa propre ligne. En utilisant cette approche, un énoncé SELECT de base suivrait cette syntaxe :

SELECT WhatObject.WhatField
FROM WhatObject;

Voici un exemple :

SELECT Persons.FirstName, Persons.LastName
FROM Persons;
 

Précédent Copyright © 2007, Yevol Suivant