Une requête a pour but d'extraire de l'information de la base de données.
Une requête porte sur une ou plusieurs tables de la base. La première question que l'on doit se poser est donc: de quelle(s) table(s) ai-je besoin pour trouver l'information que je veux?
Le mode Ebauche de création de requêtes commence par là, comme nous allons le voir.
Téléchargez donc cette petite base de données représentant un club sportif, et ouvrez la avec OpenOffice (ou LibreOffice). Sélectionnez, dans le cadre de gauche, le bouton Tables.
Combien cette base de données contient-elle de tables? Explorez leur contenu.
Sélectionnez maintenant le bouton Requêtes.
Créez les 10 requêtes suivantes en mode Ebauche:
Pour chacune des requêtes que vous avez créées, il est possible de les éditer en mode SQL. Cela signifie que vous pouvez voir, pour chacune des requêtes, son expression dans le langage SQL. Ce langage permet de décrire de façon logique ce que l'on veut extraire de la base de données.
Les requêtes de sélection sont toujours de la forme select ... from ... where ...
Elles sont toujours adressées à une ou plusieurs tables de la base, qui sont indiquées, séparées par des virgules, entre from
et where
.
C'est la liste des attributs que l'on veut dans la réponse. Elle est indiquée entre select
et from
. Si l'on veut tous les attributs, on dit simplement select * from...
.
Indique les conditions que doivent vérifier les tuples du résultat. Les critères de filtrage sont placés derrière where
et séparés par des and
et or
. S'il n'y a aucun filtrage (on veut la table entière) on ne met pas le mot clé where
.
... where dateNaissance < '1970-06-01' ... where nom like '%queto%' ... where nom between 'A' and 'M'
Ce sont des parties optionnelles de la requête, ajoutées à la fin et commençant par un des mots clé group by
ou order by
.
... order by dateNaissance ... group by ville
Par défaut, le tri se fait par ordre croissant. Si l'on veut un tri par ordre décroissant, on précise order by ... desc
Lorsque la requête porte sur plusieurs tables, il faut indiquer les relations entre ces tables (telles que définies dans le schéma entité/association.
... from coureur, resultat where resultat.numLicence=coureur.numLicence
Exemple: numéro des courses auxquelles a participé Quinqueton
select numCourse from coureur resultat where resultat.numLicence=coureur.numLicence and nom='Quinqueton'
D'autres syntaxes sont possibles pour exprimer une jointure. Elles permettent de ne pas mélanger les conditions de jointure avec les autres conditions de la requête, mais nécessitent souvent un parenthésage plus lourd. Ainsi, les deux syntaxes suivantes sont équivalentes à l'exemple ci-dessus des numéro des courses auxquelles a participé Quinqueton:
select numCourse from coureur join resultat using(numLicence) where nom='Quinqueton'
ou bien:
select numCourse from coureur join resultat on(resultat.numLicence=coureur.numLicence) where nom='Quinqueton'
En résumé, si la clé étrangère porte le même nom que la clé primaire vers laquelle elle pointe, on peut utiliser la syntaxe avec using
:
... from coureur join resultat using(numLicence) where ...
Si ce n'est pas le cas, on ne peut que mettre les conditions de jointure dans le where
, avec les autres conditions, ou utiliser la syntaxe avec on
:
... from coureur join resultat on(resultat.numLicence=coureur.numLicence) where ...
Cet exercice consiste à créer de nouveau les 10 requêtes précédentes, mais cette fois ci directement en langage SQL.
Pour faire l'exercice, cliquez ici.
Une série d'exercices du même type est accessible ici.
Si vous avez à votre disposition un logiciel comme MS Access (de la suite MS Office) , vous pouvez télécharger, au format MS Access les petite bases de données du club sportif et de l'agence de voyages qui nous ont servi dans les exercices.
MS Access, comme Open Base et tous les logiciels de réalisation de bases de données peuvent être utilisés en mode dit SQL où la création d'une base peut se faire directement par des requêtes. Ceci peut être essayé sur l'exemple du club sportif à l'aide de ce fichier et sur les voyages avec ce fichier . Dans MS Access, le mode SQL est un peu plus fastidieux à mettre en oeuvre, car il faut entrer les requêtes une par une. Un tutoriel peut être trouvé sur le site du CERIG.
Vous pouvez retourner au sommaire des cours de Base de Données du Master ESEEC, ou bien à celui de mes cours.
Pour toute question, n'hésitez pas à me contacter .