Présentation
Le but de ce didacticiel est de montrer comment vous pouvez écrire vos propres instructions SQL et les exécuter à partir de Microsoft Access 2007, 2010, 2013 2016 ou 2019 (les étapes sont pratiquement identiques dans toutes les versions). Comme toutes les bases de données relationnelles, Microsoft Access peut être programmé directement à l'aide du langage SQL (Structured Query Language). Alors que le plus souvent SQL est caché aux utilisateurs, pour les étudiants en bases de données, MS Access offre un moyen rapide et facile d'explorer SQL et d'écrire des requêtes assez complexes. Ceci est particulièrement pratique si vous n'avez pas le temps ou la patience d'installer SQL Server, Oracle, MySQL ou un autre système de gestion de base de données relationnelle plus important.
Les exemples SQL utilisés dans ce bref didacticiel sont basés sur les simples tables Customer et Accounts créées dans le cadre de mon didacticiel Microsoft Access 2007, 2010 et 2013.
Vous souhaiterez peut-être d'abord exécuter ce didacticiel (ou au moins le premier quelques sections) pour créer les tables et ajouter les données nécessaires pour faire fonctionner ces exemples.
La section suivante fournira une très brève introduction au langage de requête structuré (SQL).
Le langage de requête structuré (SQL)
Le langage de requête structuré (SQL prononcé « Sequel ») est un langage de programmation déclaratif utilisé pour manipuler les systèmes de gestion de bases de données relationnelles (RDBMS). Il a été introduit pour la première fois dans le système R d'IBM à la fin des années 1970. Aujourd'hui, SQL est utilisé dans tous les principaux SGBD relationnels tels qu'Oracle, IBM DB2, Informix, Sybase, Microsoft SQL Server, MySQL, Postgres, SQLLite, Microsoft Access et bien d'autres. Bien que chaque fournisseur de base de données fournisse des fonctionnalités propriétaires ajoutées, le cœur de SQL peut être utilisé sur à peu près n'importe quelle base de données relationnelle.
Le langage de requête structuré est divisé en deux parties principales :
- Langage de définition de données (DDL) :utilisé pour créer (définir) des structures de données telles que des schémas, des tables, des index, des clusters, des séquences, ainsi que pour sécuriser la base de données
- Langage de manipulation de données (DML) :utilisé pour insérer, récupérer, mettre à jour et supprimer des données dans des tableaux.
Microsoft Access prend en charge les parties DDL et DML de SQL. La plupart du temps, nous nous concentrons sur les requêtes SQL qui, en tant qu'instructions SQL SELECT, sont utilisées pour récupérer des données à partir d'une base de données existante. La syntaxe de base d'une instruction SQL SELECT est :
SELECT column1, column2, ... columnN FROM tableA, tableB, ... tableZ WHERE condition1, condition2, ...conditionM ORDER BY column1, column2, ... columnN
Ainsi, par exemple, en supposant que nous ayons une table nommée Customer avec des colonnes telles que FirstName, LastName, StreetAddress, City, state et Zip, nous pouvons écrire une instruction SQL SELECT comme celle-ci :
SELECT FirstName, LastName, City, State FROM customer
Dans la requête ci-dessus, nous demandons des données uniquement dans les colonnes FirstName, LastName, City et State, et la table à partir de laquelle nous obtenons ces données s'appelle client. Notez que le langage SQL ne se soucie pas des lettres majuscules ou minuscules. Donc écrire select firstName... revient à écrire SELECT FIRSTNAME ... .
Une requête légèrement plus sophistiquée serait si nous ne voulons voir que les clients qui vivent en Géorgie et que nous aimerions que les résultats soient triés par le nom de famille du client :
SELECT FirstName, LastName, City, State FROM customer WHERE state = 'GA' ORDER BY LastName
Comme vous pouvez le voir, la liste des colonnes que nous voulons afficher suit le mot-clé SELECT. Le nom de la table que nous interrogeons suit le mot-clé FROM, une condition state ='GA' suit le mot clé WHERE et enfin les résultats sont triés sur la colonne LastName comme décrit par le mot clé ORDER BY.
Il existe de nombreuses autres fonctionnalités de l'instruction SQL SELECT qui impliquent d'interroger plusieurs tables en les "joignant" ensemble, de regrouper des collections d'enregistrements pour trouver des totaux, des valeurs les plus grandes, des plus petites ou des moyennes, et d'effectuer d'autres manipulations sur la sortie que les utilisateurs verront éventuellement. Une discussion beaucoup plus complète sur les fonctionnalités de SQL peut être trouvée sur ce lien.
La section suivante présente l'utilisation de SQL à partir de la vue Conception de requête dans MS Access.
SQL dans Microsoft Access
Dans cette section, nous fournirons les étapes pour écrire votre propre SQL dans MS Access. Cet exercice suppose que vous avez MS Access 2007, 2010 ou 2013 en cours d'exécution avec la base de données "Banque" (tables Clients et Comptes) ouverte. Cliquez ici pour le tutoriel avec les étapes pour créer cette base de données.
Pour commencer :
- créez une nouvelle requête en cliquant sur Créer puis en cliquant sur l'onglet Query Design icône comme indiqué ci-dessous.
- La boîte de dialogue "Afficher le tableau" apparaîtra comme indiqué ci-dessous. Cliquez sur Fermer bouton pour le fermer.
- Cliquez sur l'onglet Conception puis cliquez sur le SQL icône sur le côté gauche (ou déroulez le bouton d'affichage et sélectionnez SQL
- À ce stade, la vue SQL de la requête Query1 apparaîtra. Par défaut, le mot-clé SELECT est affiché dans la fenêtre.
- Modifiez la requête pour écrire une instruction SQL complète :
SELECT firstname, lastname FROM customer ORDER BY lastname
La fenêtre de requête de vue SQL apparaîtra maintenant comme ci-dessous :
- À ce stade, une fois l'instruction SQL saisie, nous pouvons exécuter la requête sur la base de données en cliquant sur le bouton "Exécuter" avec le point d'exclamation.
- Les résultats de la requête s'afficheront dans une vue Feuille de données (comme une feuille de calcul) :
- Pour revenir à la modification de la requête SQL, déroulez le menu Affichage et sélectionnez à nouveau SQL.
- Vous pouvez également enregistrer votre requête. Pour ce faire, faites un clic droit sur l'onglet portant le nom de la requête actuelle :Query1 et choisissez Enregistrer .
Une boîte de dialogue apparaîtra vous demandant le nouveau nom de la requête. Tapez un nouveau nom tel que :Customer_Names puis cliquez sur OK pour le sauvegarder.
- Enfin, MS Access ne permet pas d'enregistrer une requête sous un nouveau nom ("Enregistrer sous"). Au lieu de cela, vous pouvez mettre en surbrillance le nom de la requête, cliquer avec le bouton droit de la souris et sélectionner Copier puis cliquez à nouveau avec le bouton droit de la souris et sélectionnez Coller . Vous serez alors invité à entrer le nouveau nom de la requête.
Ensuite, je présenterai quelques trucs et astuces sur l'écriture et le débogage de vos requêtes SQL.
Écrire et déboguer des requêtes SQL dans MS Access
Maintenant que vous maîtrisez les mécanismes de base de l'écriture et de l'exécution de requêtes SQL, voici quelques trucs et astuces pour déboguer votre SQL.
Éditeurs pour MS Access SQL
La fenêtre de l'éditeur SQL dans MS Access n'est pas si intelligente ni facile à utiliser. Une façon de travailler avec SQL consiste à écrire le code dans un autre éditeur, puis à copier et coller le code dans Access pour l'exécuter. Il existe de nombreux éditeurs de texte différents disponibles. Par exemple, dans Windows, vous aurez le Bloc-notes disponible dans le groupe Accessoires. Le seul avertissement que je peux donner ici est de NE PAS utiliser MS Word ou un autre logiciel de traitement de texte pour écrire votre SQL. La raison en est que MS Word et d'autres traitements de texte transformeront vos guillemets simples et doubles en "guillemets fantaisie" que SQL ne comprend pas.
Par exemple, si vous avez une clause WHERE telle que WHERE state ='GA'
SQL s'attend à ce que le texte soit entouré de guillemets simples. MS Word les transformera en guillemets ouvrants et fermants fantaisistes que SQL ne comprendra pas.
Si vous recevez une erreur telle que Entrez la valeur du paramètre pour `GA' alors vous voudrez certainement vous assurer que votre texte est entouré de guillemets simples simples.
Traitement des erreurs de syntaxe
Les erreurs de syntaxe peuvent être très frustrantes dans SQL car souvent la base de données ne peut pas identifier exactement où se situe le problème dans votre code. Certaines des principales erreurs affichées par Access incluent :
Texte d'erreur | Solution | Exemple |
---|---|---|
Entrez la valeur du paramètre pour ________ | Le plus souvent, cela se produit lorsque le nom d'une colonne (champ) n'est pas saisi correctement (comme dans ce cas, "lstname" est mal orthographié) ou qu'une expression ne peut pas être reconnu tel que WHERE state =`GA' | |
Le moteur de base de données Microsoft Access ne trouve pas la requête ou la table d'entrée :______________ | Le plus souvent, cela se produit lorsque le nom d'une table n'est pas saisi correctement dans la clause FROM de la requête. Par exemple, dans ce cas, la requête spécifiait FROM clients au lieu de DU client | |
Erreur de syntaxe (opérateur manquant) dans l'expression de requête :______________ | Dans ce cas, la syntaxe de la requête manque certaines parties clés. Par exemple, la clause "FROM" est manquante et donc Access signale l'emplacement approximatif de l'endroit où le problème se produit en affichant le texte de la requête. |
Dans la section suivante, je fournirai quelques conseils supplémentaires sur la façon de présenter vos requêtes SQL et les résultats d'un projet ou d'un devoir.
Documenter votre travail SQL
Dans cette section, je décrirai quelques conseils pour formater vos requêtes et résultats afin qu'ils soient présentés de manière claire et concise sur vos devoirs et projets.
L'hypothèse ici est que vous utiliserez un programme de traitement de texte tel que MS Word ou un autre programme de traitement de texte prenant en charge le copier-coller d'images et de texte.
MS Access ne vous permet pas de mettre des commentaires dans le code SQL. D'autres SGBD le permettent, mais l'accès est un peu plus restrictif.
Pour cet exercice, supposons que la question du devoir soit d'afficher les noms et prénoms de tous les clients et de classer le résultat par le nom de famille du client.
- Tapez la requête SQL comme décrit dans la section précédente et exécutez-la pour obtenir les résultats :
- Dans la vue Feuille de données, cliquez sur la petite case carrée à gauche des en-têtes de colonne et en haut des cases de sélection de ligne. Cela entraînera la mise en surbrillance de l'ensemble des résultats.
- Faites un clic droit sur la même petite case carrée dans le coin et sélectionnez Copier dans le menu contextuel.
- Basculez vers MS Word (ou un autre programme de traitement de texte) et collez les résultats dans un emplacement approprié :
Quelques autres conseils utiles qui ont également été suivis lors de la création de ce document de devoir :
- Assurez-vous de saisir la phrase complète décrivant la requête que vous résolvez (ne vous contentez pas de mettre "Question 1"). Par exemple, vous pouvez copier la question du devoir et l'intégrer à la réponse.
- Lorsque vous collez le texte SQL de votre requête, utilisez une police Courier New afin que les caractères et l'espacement s'alignent. Cela facilite grandement la lecture.
- Collez les résultats en utilisant la technique ci-dessus au lieu d'utiliser une capture d'écran. Cela rendra non seulement vos fichiers de document Word plus petits, mais sera également très clair lorsque vous l'imprimerez.
- Assurez-vous d'indiquer votre nom, votre classe/cours et votre section sur votre devoir.
- Pour les requêtes plus complexes pouvant impliquer des sous-requêtes ou des requêtes en ligne, il est préférable d'aligner les sous-requêtes en indentation pour les rendre plus faciles à lire et à déboguer. Par exemple, au lieu d'écrire une sous-requête comme celle-ci :
SELECT accountnumber, balance FROM accounts WHERE balance = (SELECT MIN(balance) from accounts)
Alignez la sous-requête le long des parenthèses :
SELECT accountnumber, balance FROM accounts WHERE balance = ( SELECT MIN(balance) FROM accounts )
Suivre ces étapes fera bonne impression lorsque vous rendrez vos devoirs et vos projets.
Conclusion
Dans ce bref tutoriel, nous avons expliqué comment travailler avec SQL à l'aide de MS Access. SQL est un langage de programmation assez générique et tout ce que vous apprenez en écrivant SQL sous MS Access peut être facilement transféré vers d'autres bases de données relationnelles telles que SQL Server, Oracle, Sybase, etc. Pour plus de notes sur SQL, visitez mon langage de requête structuré (SQL) page de notes de cours.
Pour un didacticiel MS Access plus introductif et avancé, veuillez visiter la catégorie Access sur mon site Web.