Langage SQL Révisions - Accueil

exercice corrigé base de données modèle entité-association

Part of the document

Le langage SQL - Rappels
Description du thème : Présentation des principales notions nécessaires pour réaliser des requêtes
SQL
Mots-clés :Bases de données relationnelles, Open Office, champs,
relations, requêtes, opérations relationnelles
Niveau :Ce cours peut être commencé en 1ère STG (les parties I à
III comprise) et peut être complété en TGSI ou TCFE.
Domaine(s) : Informatique de gestion
Type(s) de ressource : Support de cours - travaux élèves en autonomie
Objectifs : Le langage SQL : l'instruction SELECT pour traduire les
opérations de sélection, de projection et de jointure.
Séance(s) développée(s) :
Place de la séquence dans la progression
annuelle :En fin de 1ère STG ou au début de terminale.
Pré-requis :Maîtrise du schéma relationnel. Connaissance des bases de
données relationnelles.
Outils :Microsoft Access ou Open Office.Org Base.
Un vidéo projecteur pour l'évaluation des travaux des élèves
ou pour la présentation du corrigé.
Conditions de réalisation :Un ordinateur par personne.
Le cours peut être divisé en 3 parties :
Les parties I, II et III peuvent être enseignées d'une traite.
Puis, on peut aborder la partie IV.
De même ensuite, on peut traiter séparément la partie V,
puis la partie VI.
Evaluation :Formative
Temps approximatif de réalisation :Parties I, II, III, cours et TD : 5 heures environ.
Partie IV : 3 heures environ.
Partie V : 2 heures environ.
Partie VI : 3 heures environ.
Compétences B2i :3-Créer, produire, traiter, exploiter des données.
Le but de ce propos n'est pas de présenter un nouveau cours sur SQL. Il en existe beaucoup
qui sont disponibles sur Internet. L'objectif est plutôt de présenter une marche à suivre pour
présenter les différentes parties du langage de requêtes. Je joins donc à ce cours quelques
exercices d'illustrations. L'enseignant pourra choisir ceux qui correspondent le mieux à sa
progression. Pour chaque requête, je fournis le résultat à obtenir.
La SGBD sur lequel ces requêtes ont été testées est OPEN OFFICE.OrgBase. La base de
données Anabase est dans votre dossier sous le nom : anabase_sql.odb ainsi que le corrigé des
exercices : corrigé_requetes.doc
Pour illustrer ce chapitre, j'ai décidé de m'appuyer sur un cas créé dans les années 80 et bien
connu des enseignants en informatique : le cas " Anabase » dont voici quelques extraits :
Le congrès se déroule sur une semaine de 5 jours ouvrables. Il comporte différentes sessions
d'une demi-journée chacune, consacrées à des conférences, débats sur un thème donné.
Un congressiste peut participer à ce congrès envoyé par un organisme (entreprise,
administration, université ou lycée) ou non.
Il peut éventuellement être accompagné d'une personne. On suppose qu'un congressiste ne
peut pas avoir plus d'un accompagnateur.
Le congressiste est affecté à un hôtel. Chaque hôtel a proposé un prix par participant et un
supplément pour l'accompagnateur. Ces prix sont valables pour toutes les chambres d 'un
même hôtel.
Le bureau d'animation propose des activités culturelles (spectacles, excursions, concerts,
visites de monuments...) pour meubler le temps des accompagnateurs et des congressistes qui
ont des disponibilités dans leur emploi du temps. Chaque activité est repérée par un code
activité, une désignation et un horaire de début et de fin.
Les congressistes et les accompagnateurs peuvent s'inscrire jusqu'à la veille au soir aux
activités souhaitées.
Dans la suite du travail, nous allons nous limiter aux informations concernant les
congressistes et leur organisme payeur, les hôtels ainsi que les activités proposées.
Le modèle relationnel obtenu est le suivant :
2
I- Rappels sur l'algèbre relationnelle
Il faut rappeler que le modèle relationnel est basé sur le modèle mathématique. Il existe deux
types d'opérations que l'on peut effectuer sur les tables :
-les opérations ensemblistes : union, intersection et différence.
-les opérations relationnelles : projection, sélection, jointure, division.
Nous nous limiterons ici aux opérations relationnelles :
- la projection : son objectif est de fournir le résultat d'une requête en supprimant
les attributs d'une table.
-La sélection : elle a pour but d'extraire des enregistrements (lignes) d'une table
répondant à un ou plusieurs critères de recherche.
-La jointure : c'est la mise en correspondance de 2 tables selon un critère.
Utilisation de SQL pour représenter les opérations opérationnelles
Les 3 opérations vues ci-dessus sont exprimées en SQL avec la même instruction : SELECT.
II- La projection
Syntaxe : select liste attributs from table [order by nom attribut, ...]
Exemple : SELECT NOM_CONGRESSISTE, PRÉNOM_CONGRESSISTE FROM CONGRESSISTE
permet de réaliser la projection de la table congressiste sur les attributs nom_congressiste et
prénom_congressiste.
ORDER BY suivi de nom d'un attribut permet l'affichage des résultats trié suivant le nom
d'attribut. Si l'on souhaite obtenir un tri suivant plusieurs critères, il faut préciser une suite
d'attributs derrière le mot-clé ORDER BY.
3
Par défaut le tri est croissant. Le mot-clé DESC placé à la suite du nom de l'attribut permet de
réaliser un tri décroissant.
On peut afficher également le résultat d'un calcul : une expression arithmétique faisant
intervenir plusieurs attributs numériques. De plus, pour des raisons de lisibilité, on peut, grâce
au mot-clé AS, donner un nom à l'expression :
SELECT attribut 1 + attribut 2 AS somme FROM table
Remarque : SQL n'élimine pas les doublons à moins que figue le mot-clé DISTINCT à la
suite de SELECT.
II-1-Exercices de requêtes de projection
R1 : Afficher le nom, la date et l'heure de chaque activité.
R2 : Afficher les villes dont sont originaires les congressistes :
III- La sélection
La sélection s'exprime grâce à la clause WHERE.
Syntaxe : select * from table where condition.
Le critère de sélection (condition) peut faire intervenir un attribut, un opérateur et une
constante.
Le plus souvent, la projection et la sélection sont composées :
Syntaxe : select liste attributs from table where condition.
Exemple: select * from congressiste where ADRESSE_CONGRESSISTE = 'St Junien'
donne le résultat suivant :
4
Dans certains SGBD, le caractère % peut être remplacé par le caractère *.
Exemples d'opérateurs :
OpérationOpérateur SQLExempleCommentaires
Est égal à=where numéro = 10
Différent de ou !=where numéro 10
Supérieur>
Supérieur ou égal >=
Inférieur<
Inférieur ou égal