Access SQL : concepts de base, vocabulaire et syntaxe
Applies ToAccess pour Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Lorsque vous souhaitez récupérer des données à partir d’une base de données, vous demandez les données à l’aide de langage SQL ou SQL. SQL est un langage informatique qui ressemble étroitement à l’anglais, mais que les programmes de base de données comprennent. Chaque requête que vous exécutez utilise SQL en arrière-plan.

Comprendre le fonctionnement de SQL peut vous aider à créer de meilleures requêtes et à comprendre plus facilement comment corriger une requête qui ne retourne pas les résultats souhaités.

Cet article fait partie d’une série d’articles à propos d’Access SQL. Cet article décrit l’utilisation de base de SQL pour sélectionner des données et utilise des exemples pour illustrer la syntaxe SQL.

Contenu de cet article

Qu’est-ce que SQL ?

SQL est un langage informatique permettant d’utiliser des ensembles de faits et les relations entre eux. Les programmes de base de données relationnelle, tels que Microsoft Office Access, utilisent SQL pour travailler avec des données. Contrairement à de nombreux langages informatiques, SQL n’est pas difficile à lire et à comprendre, même pour un débutant. Comme de nombreux langages informatiques, SQL est une norme internationale reconnue par les organismes de normalisation tels que ISO et ANSI.

Vous utilisez SQL pour décrire des ensembles de données qui peuvent vous aider à répondre aux questions. Lorsque vous utilisez SQL, vous devez utiliser la syntaxe correcte. La syntaxe est l’ensemble de règles par lesquelles les éléments d’un langage sont correctement combinés. La syntaxe SQL est basée sur la syntaxe anglaise et utilise de nombreux éléments identiques à la syntaxe Visual Basic pour Applications (VBA).

Par exemple, une instruction SQL simple qui récupère une liste de noms de noms pour les contacts dont le prénom est Mary peut ressembler à ceci :

SELECT Last_NameFROM ContactsWHERE First_Name = 'Mary';

Remarque : SQL est non seulement utilisé pour manipuler des données, mais également pour créer et modifier la conception d’objets de base de données, tels que des tables. La partie de SQL utilisée pour créer et modifier des objets de base de données est appelée data-definition language (DDL). Cette rubrique ne couvre pas DDL. Pour plus d’informations, consultez l’article Créer ou modifier des tables ou des index à l’aide d’une requête de définition de données.

Instructions SELECT

Pour décrire un jeu de données à l’aide de SQL, vous écrivez une instruction SELECT. Une instruction SELECT contient une description complète d’un jeu de données que vous souhaitez obtenir à partir d’une base de données. Cela se produit dans les situations suivantes :

  • Quelles tables contiennent les données.

  • Relation entre les données de différentes sources.

  • Quels champs ou calculs produisent les données.

  • Critères auxquels les données doivent correspondre pour être inclus.

  • Indique si et comment trier les résultats.

Clauses SQL

Comme une phrase, une instruction SQL a des clauses. Chaque clause exécute une fonction pour l’instruction SQL. Certaines clauses sont requises dans une instruction SELECT. Le tableau suivant répertorie les clauses SQL les plus courantes.

Clause SQL

Fonction

Obligatoire

SELECT

Listes les champs qui contiennent des données intéressantes.

Oui

FROM

Listes les tables qui contiennent les champs répertoriés dans la clause SELECT.

Oui

WHERE

Spécifie les critères de champ qui doivent être remplis par chaque enregistrement à inclure dans les résultats.

Non

ORDER BY

Spécifie comment trier les résultats.

Non

GROUP BY

Dans une instruction SQL qui contient des fonctions d’agrégation, répertorie les champs qui ne sont pas résumés dans la clause SELECT.

Uniquement s’il existe de tels champs

HAVING

Dans une instruction SQL qui contient des fonctions d’agrégation, spécifie des conditions qui s’appliquent aux champs qui sont résumés dans l’instruction SELECT.

Non

Termes SQL

Chaque clause SQL est composée de termes comparables à des parties de la parole. Le tableau suivant répertorie les types de termes SQL.

Terme SQL

Partie comparable de la parole

Définition

Exemple

Identificateur

Nom

Nom que vous utilisez pour identifier un objet de base de données, tel que le nom d’un champ.

Clients. [Numéro de téléphone]

opérateur

verbe ou adverbe

Mot clé qui représente une action ou modifie une action.

AS

constante

Nom

Valeur qui ne change pas, telle qu’un nombre ou NULL.

42

expression

Adjectif

Combinaison d’identificateurs, d’opérateurs, de constantes et de fonctions qui prend la valeur d’une valeur unique.

>= Products. [Prix unitaire]

Haut de la page

Clauses SQL de base : SELECT, FROM et WHERE

Une instruction SQL prend la forme générale :

SELECT field_1FROM table_1WHERE criterion_1;

Remarques : 

  • Access ignore les sauts de ligne dans une instruction SQL. Toutefois, envisagez d’utiliser une ligne pour chaque clause afin d’améliorer la lisibilité de vos instructions SQL pour vous-même et les autres.

  • Chaque instruction SELECT se termine par un point-virgule (;). Le point-virgule peut apparaître à la fin de la dernière clause ou sur une ligne à la fin de l’instruction SQL.

Exemple dans Access

L’exemple suivant illustre à quoi peut ressembler une instruction SQL pour une requête select simple dans Access :

Onglet d’objet SQL montrant une instruction SELECT

1. Clause SELECT

2. Clause FROM

3. Clause WHERE

Cet exemple d’instruction SQL indique « Sélectionnez les données stockées dans les champs nommés Adresse de messagerie et Société dans la table nommée Contacts, en particulier les enregistrements dans lesquels la valeur du champ Ville est Seattle ».

Examinons l’exemple, une clause à la fois, pour voir comment fonctionne la syntaxe SQL.

Clause SELECT

SELECT [E-mail Address], Company

Il s’agit de la clause SELECT. Il se compose d’un opérateur (SELECT) suivi de deux identificateurs ([Adresse de messagerie] et Société).

Si un identificateur contient des espaces ou des caractères spéciaux (tels que « Adresse de messagerie »), il doit être placé entre crochets.

Une clause SELECT n’a pas à indiquer quelles tables contiennent les champs, et elle ne peut pas spécifier de conditions qui doivent être remplies par les données à inclure.

La clause SELECT apparaît toujours devant la clause FROM dans une instruction SELECT.

Clause FROM

FROM Contacts

Il s’agit de la clause FROM. Il se compose d’un opérateur (FROM) suivi d’un identificateur (Contacts).

Une clause FROM ne répertorie pas les champs à sélectionner.

Clause WHERE

WHERE City="Seattle"

Il s’agit de la clause WHERE. Il se compose d’un opérateur (WHERE) suivi d’une expression (City="Seattle »).

Remarque : Contrairement aux clauses SELECT et FROM, la clause WHERE n’est pas un élément obligatoire d’une instruction SELECT.

Vous pouvez accomplir un grand nombre des actions que SQL vous permet d’effectuer à l’aide des clauses SELECT, FROM et WHERE. Pour plus d’informations sur l’utilisation de ces clauses, consultez ces articles supplémentaires :

Haut de la page

Tri des résultats : ORDER BY

Comme Microsoft Excel, Access vous permet de trier les résultats des requêtes dans une feuille de données. Vous pouvez également spécifier dans la requête comment trier les résultats lors de l’exécution de la requête, à l’aide d’une clause ORDER BY. Si vous utilisez une clause ORDER BY, il s’agit de la dernière clause de l’instruction SQL.

Une clause ORDER BY contient une liste des champs que vous souhaitez utiliser pour le tri, dans le même ordre que celui où vous souhaitez appliquer les opérations de tri.

Par exemple, supposons que vous souhaitiez que vos résultats soient triés d’abord par la valeur du champ Société dans l’ordre décroissant et, s’il existe des enregistrements avec la même valeur pour Company, triés ensuite par les valeurs du champ Adresse de messagerie dans l’ordre croissant. Votre clause ORDER BY se présente comme suit :

ORDER BY Company DESC, [E-mail Address]

Remarque : Par défaut, Access trie les valeurs dans l’ordre croissant (A-Z, de la plus petite à la plus grande). Utilisez plutôt le mot clé DESC pour trier les valeurs dans l’ordre décroissant.

Pour plus d’informations sur la clause ORDER BY, consultez la rubrique Clause ORDER BY.

Haut de la page

Utilisation de données résumées : GROUP BY et HAVING

Parfois, vous souhaitez utiliser des données résumées, telles que le total des ventes en un mois, ou les articles les plus chers d’un inventaire. Pour ce faire, vous appliquez une fonction d’agrégation à un champ dans votre clause SELECT. Par exemple, si vous souhaitez que votre requête affiche le nombre d’adresses de messagerie répertoriées pour chaque entreprise, votre clause SELECT peut ressembler à ce qui suit :

SELECT COUNT([E-mail Address]), Company

Les fonctions d’agrégation que vous pouvez utiliser dépendent du type de données figurant dans le champ ou l’expression que vous souhaitez utiliser. Pour plus d’informations sur les fonctions d’agrégation disponibles, consultez l’article Fonctions d’agrégation SQL.

Spécification de champs qui ne sont pas utilisés dans une fonction d’agrégation : clause GROUP BY

Lorsque vous utilisez des fonctions d’agrégation, vous devez généralement également créer une clause GROUP BY. Une clause GROUP BY répertorie tous les champs auxquels vous n’appliquez pas de fonction d’agrégation. Si vous appliquez des fonctions d’agrégation à tous les champs d’une requête, vous n’avez pas besoin de créer la clause GROUP BY.

Une clause GROUP BY suit immédiatement la clause WHERE, ou la clause FROM s’il n’y a pas de clause WHERE. Une clause GROUP BY répertorie les champs tels qu’ils apparaissent dans la clause SELECT.

Par exemple, pour poursuivre l’exemple précédent, si votre clause SELECT applique une fonction d’agrégation à [Adresse de messagerie] mais pas à Société, votre clause GROUP BY ressemblerait à ce qui suit :

GROUP BY Company

Pour plus d’informations sur la clause GROUP BY, consultez la rubrique Clause GROUP BY.

Limitation des valeurs d’agrégation à l’aide de critères de groupe : clause HAVING

Si vous souhaitez utiliser des critères pour limiter vos résultats, mais que le champ auquel vous souhaitez appliquer des critères est utilisé dans une fonction d’agrégation, vous ne pouvez pas utiliser de clause WHERE. Au lieu de cela, vous utilisez une clause HAVING. Une clause HAVING fonctionne comme une clause WHERE, mais elle est utilisée pour les données agrégées.

Par exemple, supposons que vous utilisez la fonction AVG (qui calcule une valeur moyenne) avec le premier champ de votre clause SELECT :

SELECT COUNT([E-mail Address]), Company

Si vous souhaitez que la requête limite les résultats en fonction de la valeur de cette fonction COUNT, vous ne pouvez pas utiliser de critères pour ce champ dans la clause WHERE. Au lieu de cela, vous placez les critères dans une clause HAVING. Par exemple, si vous souhaitez que la requête retourne des lignes uniquement si plusieurs adresses de messagerie sont associées à l’entreprise, la clause HAVING peut ressembler à ce qui suit :

HAVING COUNT([E-mail Address])>1

Remarque : Une requête peut avoir une clause WHERE et une clause HAVING : les critères pour les champs qui ne sont pas utilisés dans une fonction d’agrégation vont dans la clause WHERE, et les critères des champs utilisés avec des fonctions d’agrégation vont dans la clause HAVING.

Pour plus d’informations sur la clause HAVING, consultez la rubrique HAVING Clause.

Haut de la page

Combinaison des résultats de la requête : UNION

Lorsque vous souhaitez passer en revue toutes les données retournées par plusieurs requêtes sélectionnées similaires, en tant qu’ensemble combiné, vous utilisez l’opérateur UNION.

L’opérateur UNION vous permet de combiner deux instructions SELECT en une seule. Les instructions SELECT que vous combinez doivent avoir le même nombre de champs de sortie, dans le même ordre et avec les mêmes types de données ou compatibles. Lorsque vous exécutez la requête, les données de chaque ensemble de champs correspondants sont combinées en un seul champ de sortie, de sorte que la sortie de la requête comporte le même nombre de champs que chacune des instructions select.

Remarque : Pour les besoins d’une requête union, les types de données Number et Text sont compatibles.

Lorsque vous utilisez l’opérateur UNION, vous pouvez également spécifier si les résultats de la requête doivent inclure des lignes en double, le cas échéant, en utilisant le mot clé ALL.

La syntaxe SQL de base pour une requête union qui combine deux instructions SELECT est la suivante :

SELECT field_1FROM table_1UNION [ALL]SELECT field_aFROM table_a;

Par exemple, supposons que vous disposez d’une table nommée Products et d’une autre table nommée Services. Les deux tables ont des champs qui contiennent le nom du produit ou du service, le prix, la garantie ou la disponibilité, et si vous proposez le produit ou le service exclusivement. Bien que la table Products stocke les informations de garantie et que la table Services stocke les informations de garantie, les informations de base sont les mêmes (si un produit ou service particulier inclut une promesse de qualité). Vous pouvez utiliser une requête union, telle que la suivante, pour combiner les quatre champs des deux tables :

SELECT name, price, warranty_available, exclusive_offerFROM ProductsUNION ALLSELECT name, price, guarantee_available, exclusive_offerFROM Services;

Pour plus d’informations sur la combinaison d’instructions SELECT à l’aide de l’opérateur UNION, consultez Combiner les résultats de plusieurs requêtes select à l’aide d’une requête union.

Haut de la page

Besoin d’aide ?

Vous voulez plus d’options ?

Explorez les avantages de l’abonnement, parcourez les cours de formation, découvrez comment sécuriser votre appareil, etc.

Les communautés vous permettent de poser des questions et d'y répondre, de donner vos commentaires et de bénéficier de l'avis d'experts aux connaissances approfondies.