Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
Support de cours
Bases de données
Version : 2012
Bases de données Avant Propos
Avant propos
Pré-requis
- Notion de fichiers
- Systèmes d’exploitation
Objectifs généraux
Ce cours permettra aux étudiants de concevoir et d’implanter une base de données en
passant par les différents niveaux : (conceptuel, logique et physique). Il aura l’occasion
de bien assimiler l’apport des SGBD pour gérer les données.
Public Cible
Ce cours est destiné essentiellement aux étudiants de la deuxième année Licence
Fondamentale en Informatique Appliquée à la Gestion.
Volume horaire
Ce cours est présenté, de manière hebdomadaire, comme suit :
- 1.5h du Cours Intégré
- 1.5h de Travaux Dirigés
Soit en total : 21h de Cours Intégré et 21h de Travaux Dirigés
Moyens pédagogiques
- Tableau
- Micro-ordinateurs équipés d’un SGBDR (MS SQL Server)
- Polycopiés de Travaux Dirigés
Evaluation
- Coefficient : 1.5
- Devoir Surveillé : 30%
- Examen final : 70%
Mbarek DHAHRI
Bases de données Table des matières
1 INTRODUCTION .....................................................................................................................................................2
1 INTRODUCTION ....................................................................................................................................................8
4 APPLICATIONS....................................................................................................................................................12
1 INTRODUCTION ..................................................................................................................................................15
Mbarek DHAHRI
Bases de données Table des matières
5 LA NORMALISATION ........................................................................................................................................19
1 INTRODUCTION ..................................................................................................................................................23
3 OPERATEURS RELATIONNELS.................................................................................................................25
Mbarek DHAHRI
Bases de données Table des matières
4 APPLICATION ......................................................................................................................................................28
1 INTRODUCTION ...................................................................................................................................................31
2 SCHEMA .................................................................................................................................................................31
3 TABLES ...................................................................................................................................................................31
4 VUES ........................................................................................................................................................................37
5 INDEX .....................................................................................................................................................................38
Mbarek DHAHRI
Bases de données Table des matières
TD N° 1 : ENTITE/ASSOCIATION.........................................................................................................................53
TD N° 2 : MODELE RELATIONNEL.....................................................................................................................55
TD N° 4 : SQL (LMD)...............................................................................................................................................62
BIBLIOGRAPHIE .....................................................................................................................................................64
Mbarek DHAHRI
Bases de données Introduction et principaux concepts des BD
CHAPITRE
1
INTRODUCTION ET PRINCIPAUX
CONCEPTS DES
DES BD
Objectifs spécifiques
A la fin de ce chapitre, l’étudiant doit être capable de :
- Définir une base de données.
- Expliquer l’intérêt de l’approche base de données par rapport à celle à
fichiers.
- Définir un Système de Gestion de Bases de Données (SGBD)
- Enumérer les fonctions d’un SGBD
- Différencier entre les niveaux d’abstraction lors de la conception
d’une base de données.
Plan du chapitre
1. Introduction
2. Les systèmes à fichiers
3. Définition et architecture d’une base de données
4. Notion de SGBD
5. Administration de bases de données
Volume horaire
2 séances de cours intégré
Mbarek DHAHRI 1
Bases de données Introduction et principaux concepts des BD
1 Introduction
L’activité principale de l’ordinateur est le traitement de l’information qui peut contenir un
volume important de données. Ainsi, il est très important de bien structurer ces données afin de
faciliter leur utilisation.
Les données sont structurées sous forme d’enregistrements contenus dans des fichiers stockés
dans la mémoire auxiliaire.
Au fil des années, les quantités de données deviennent de plus en plus grandes. Certains experts
(dans le domaine des statistiques) estiment même que le volume de données collectées par une
entreprise double tous les vingt mois.
Explosion vertigineuse du volume de données au sein des entreprises.
Recourir à un moyen efficace de stockage, de manipulation et d’exploitation de données.
2.1 Définitions
Fichier : est un récipient de données identifié par un nom constitué par un ensemble de fiches
contenant des informations système ou utilisateur.
Les informations relatives à un même sujet sont décrites sur une fiche.
Gestionnaire de fichiers : structuré autour d’un noyau appelé analyseur, qui assure les fonctions
de base, à savoir la création/destruction des fichiers, lecture/écriture d’une suite d’octets à un
certain emplacement dans un fichier, l’allocation de la mémoire, la localisation et la recherche
des fichiers sur les volumes mémoires.
Exemple :
Mbarek DHAHRI 2
Bases de données Introduction et principaux concepts des BD
2.2 Limites
3.1 Définition
Une base de données est une collection de données inter-reliées qui sont enregistrées sur un
support physique et accessible simultanément par plusieurs utilisateurs.
Selon l’architecture ANSI/SPARC, la description des données dans une base de données se fait à
trois niveaux :
- Le niveau conceptuel
- Le niveau interne
- Le niveau externe
Mbarek DHAHRI 3
Bases de données Introduction et principaux concepts des BD
4.1 Définition
La définition et la manipulation de la base de données sont assurées par un Système de Gestion
de Base de Données (SGBD).
Les données dans un SGDB sont décrites selon un modèle de données. Ce dernier permet de
cacher les détails d’implémentation et de présenter à l’utilisateur une vision abstraite –
conceptuelle – de la base. Il donne également la possibilité de gérer plusieurs vues externes.
Chaque utilisateur a sa propre vision qui dépend de ses besoins en information.
Un SGBD est destiné à gérer un gros volume d’informations, persistantes, fiables et partageables
entre plusieurs utilisateurs et programmes et manipulées indépendamment de leur représentation
physique.
4.3 Historique
* Début des années 80 : Troisième génération de SGBD basées sur des modèles plus complexes:
- SGBD déductifs : modèle logique, algèbre booléenne, souvent avec un autre SGBD
(généralement relationnel) qui gère le stockage, présence d’un moteur d’inférence.
- SGBD à objets (SGBDOO) : modèles inspirés des langages de programmation orientée
objet tels que Java, C++
- Exemples : ONTOS, ObjectStore, VERSANT, ORION, O2.
Mbarek DHAHRI 5
Bases de données Introduction et principaux concepts des BD
Mbarek DHAHRI 6
Bases de données Le modèle Entité / Association
CHAPITRE
2
LE MODELE
ENTITE /ASSOCIATION
/ASSOCIATION
Objectifs spécifiques
A la fin de ce chapitre, l’étudiant doit être capable de :
- Assimiler la sémantique du modèle Entités/Associations
- Utiliser le formalisme du modèle Entités/Associations
- Être capable de construire le modèle E/A relatif à un cas de gestion
Plan du chapitre
1. Introduction
2. Concepts de base
3. Démarche de construction du modèle E /A
4. Applications
Volume horaire
2 séances de cours intégré
Mbarek DHAHRI 7
Bases de données Le modèle Entité / Association
1 Introduction
* Il s’agit d’un modèle permettant de décrire la réalité en termes de données indépendamment des
traitements qui seront effectués sur elles.
* C’est un modèle conceptuel conçu dans les années 1970 qui résulte des travaux de
BACHMAN, CHEN, TARDIEU.
* C’est une représentation graphique des objets étudiés et des relations qui existent entre eux.
* Ce modèle se base sue les notions suivantes : Entité, attribut, association et cardinalité.
2 Concepts de base
2.1 Entité
Une entité est un objet du monde réel à propos de laquelle on veut conserver des informations.
La représentation d’une entité se fait comme suit :
Nom entité
Exemples :
L’entité étudiant L’entité classe
Etudiant Classe
2.2 Attribut
Mbarek DHAHRI 8
Bases de données Le modèle Entité / Association
Exemple :
L’entité étudiant possède les attributs : NCE, Nom, Prénom
Etudiant
NCE
Nom
Prénom
Adresse
Le type de valeur ou le domaine d’un attribut est la spécification de toutes les valeurs possibles
que peut prendre un attribut.
Exemples :
- Couleur = {rouge, bleu, jaune, vert}
- NCE = entier compris entre 1 et 1000
- Nom = chaîne de caractères alphabétiques
On appelle attribut clé ou identifiant d’une entité un groupe minimal d’attributs tel qu’à chaque
combinaison de valeurs prises par ce groupe correspond au plus une occurrence de cette entité.
Exemple :
Le NCE est l’attribut clé de l’entité Etudiant.
2.3 Association
Une association est une correspondance entre deux ou plusieurs occurrences d’entités à propos de
laquelle on veut conserver des informations.
Chaque occurrence d’entité joue un rôle particulier dans l’association. On dit que les occurrences
d’entités mises en correspondance par l’association participent à l’association.
Exemple :
X enseigne les bases de données.
- Le rôle joué par l’occurrence de l’entité Enseignant « X » : il enseigne la matière « Base
de données ».
- Le rôle joué par l’occurrence de l’entité Matière « Base de données » : elle est enseigné
par l’enseignant « X ».
La représentation d’une association se fait comme suit :
Nom Association
Propriété 1
Mbarek DHAHRI 9
Bases de données Le modèle Entité / Association
Etudiant Epreuve
NCE Num_epr
Nom Passer Date_epr
note
Prénom
Age
Personne Voiture
CIN Num_immat
Nom Acheter Marque
Prénom Date_achat Couleur
Adresse
Enseignant Matière
CIN Nom_mat
Enseigner
Nom Coef
Prénom
Classe
Num_classe
Nom_classe
Mbarek DHAHRI 10
Bases de données Le modèle Entité / Association
Une même entité peut apparaître plusieurs fois dans une association.
Personne
Nom
Prénom Se marier
Age
2.4 Cardinalité
Le terme cardinalité traduit la participation des occurrences d’une entité aux occurrences d’une
association. Cette participation s’exprime par deux valeurs : la cardinalité minimum et la
cardinalité maximum.
Entité
Relation R
m, M
m = cardinalité minimale
M = cardinalité maximale
Signification
Valeur de la cardinalité
Mbarek DHAHRI 11
Bases de données Le modèle Entité / Association
4 Applications
Élaborer le modèle entité / association des deux applications suivantes :
4.1 Application 1
Un film est réalisé par un seul réalisateur qui peut lui-même être un acteur. Le film a une durée
en minute ; il est classé dans un genre particulier.
Un acteur joue dans plusieurs films, il réside dans une seule ville. Un réalisateur peut jouer dans
des films.
Une salle a une capacité en nombre de personnes ; elle est située dans une ville.
Un film est projeté dans plusieurs salles.
4.2 Application 2
On considère une base aérienne qui contient des informations sur les vols, les pilotes et les
avions. Chaque vol possède un numéro, part d’une ville vers une autre à une heure donnée et dure
un nombre d’heures piloté par un seul pilote de vol. Les pilotes possèdent un identifiant, un nom
et une ville d’attache. Les avions utilisés pour les vols possèdent un type qui détermine la marque
et la capacité en passagers. Chaque avion est localisé dans une ville.
Mbarek DHAHRI 12
Bases de données Le modèle Entité / Association
Solution application 1
1,n
Projeter Salle
Nbre_jours 1,n
Nbre_personnes Num
Date_Mise_Affec Nom
Capacité
Ville
Solution application 2
Pilote Vol
CodeP Piloter
Numero
Nom
1,n 1,1 Date
Ville_Attache
Ville_Dep
Nbre_Heure_Vol
Ville_Dest
1,n 1,1 Heure_Dep
Durée
Assurer
Autoriser
1,n
1,n
Avion
Type
Num_Imm
CodeType
Avoir Ville
Marque
1,n 1,1 Date_Der_Maint
Cap_passager
Date_Mise_Service
Cap_frete
Nbre_Heure_Vol
Mbarek DHAHRI 13
Bases de données Le modèle relationnel
CHAPITRE
3
LE MODELE RELATIONNEL
Objectifs spécifiques
A la fin de ce chapitre, l’étudiant doit être capable de :
- Apprendre les notions de base du modèle relationnel
- Identifier les correspondances avec le modèle E/A
- Traduire un modèle E/A en un modèle relationnel
- Dégager les dépendances fonctionnelles
- Normaliser une relation
Plan du chapitre
1. Introduction
2. Concepts du modèle relationnel
3. Les contraintes d’intégrité structurelles
4. Les règles de passage du modèle E /A au modèle relationnel
5. La normalisation
Volume horaire
2 séances de cours intégré
Mbarek DHAHRI 14
Bases de données Le modèle relationnel
1 Introduction
Le modèle relationnel a été proposé par E.F. Codd en 1970. C’est un modèle ensembliste simple
basé sur l’organisation des données sous forme de table. Il est souvent considéré comme le plus
simple et le plus élégant des modèles. Sa simplicité est due à une vision tabulaire des données
très intuitive. Son élégance résulte de bases formelles issues de la théorie mathématique des
ensembles.
La manipulation des données se fait grâce à l'algèbre relationnelle et grâce à des langages
assertionnels qui permettent de spécifier ce que l'on souhaite obtenir sans dire comment l'obtenir.
Le SGBD est responsable de la politique d'exécution des requêtes.
2.1 Domaine
2.2 Relation
Une relation r dénotée r(R) du schéma de relation R (A1, A2, ..., An) est un ensemble
d'enregistrements.
Exemple : Relation Compétition :
Sport Lieu
Football Stade_menzeh
Handball Stade_menzeh
Tennis Stade_menzeh
Natation Stade_menzeh
Football Stade_radès
Mbarek DHAHRI 15
Bases de données Le modèle relationnel
Chaque ligne de cette table représente une occurrence de la relation. Elle est appelée tuple.
2.3 Attribut
Mbarek DHAHRI 16
Bases de données Le modèle relationnel
Remarque :
- la relation ne doit pas contenir 2 lignes (tuples) identiques et l’ordre des tuples d’une
relation n’est pas significatif.
- On appelle degré d’une relation le nombre de ses attributs.
- On appelle cardinalité d’une relation le nombre de tuples.
- On appelle schéma relationnel l’ensemble des schémas des relations qui modélisent le
monde réel qu’on veut représenter.
- Une base de données relationnelle est définie par son schéma relationnel et est constituée
par l’ensemble des tuples de chacune de ses relations.
- Une relation est visualisée de manière simple à l’aide de table.
A chaque attribut est associé un domaine conformément auquel il doit être manipulé.
Une clé étrangère dans une relation R1 doit être soit une valeur nulle, soit une valeur d’une clé
dans une relation R2.
Mbarek DHAHRI 17
Bases de données Le modèle relationnel
0,1 0,n
E1 E2
1,1 1,n
- E2 est l’entité maîtresse et E1 est l’entité esclave.
- L’identifiant de E2 migre dans E1 comme clé étrangère
- Les clés primaires sont soulignées et celle étrangères précédées par #
Exemple :
Etudiant Classe
NCE 1,1 0,n
Num_classe
Nom Appartenir Nom_classe
Prénom
Age
Etudiant (NCE, Nom, Prénom, Age, #Num_classe)
Classe (Num_classe, Nom_classe)
0,n 0,n
E1 E2
1,n 1,n
- L’association devient une relation dont la clé est la concaténation des 2 identifiants des 2
relations.
Exemple :
Enseignant Matière
CIN Nom_mat
Nom 0,n Enseigner 1,n Coef
Prénom Nbre heures
Mbarek DHAHRI 18
Bases de données Le modèle relationnel
* Liaison un à un
1,1 0,1
E1 E2
Facture Commande
Num_fact Num_com
1,1 Facturation 0,1
Date_fact Date_com
Montant
5 La normalisation
La normalisation est un processus qui rend une base normalisée ; une base normalisée ne contient
pas des anomalies de mise à jour.
La normalisation a pour rôle de :
• limiter les redondances de données ;
• limiter les pertes de données ;
• limiter les incohérences au sein des données ;
• améliorer les performances des traitements.
Exemple : Considérons la relation suivante : Voiture (NV, Type, Puissance, Couleur)
NV Type Puissance Couleur
1 106 4 bleu
2 206 5 bleu
3 106 4 blanc
4 406 6 rouge
5 406 6 blanc
6 106 4 vert
7 206 5 noir
8 207 4 blanc
Mbarek DHAHRI 19
Bases de données Le modèle relationnel
Cas de l’insertion : si la clé n’est pas spécifiée, on ne peut pas insérer dans la relation ;
Exemple : (__, 306, 5, noir)
Cas de la modification : problème d’incohérence si on modifie seulement un tuple ;
Exemple : (1, 106, 4, bleu) (1, 106, 5, bleu)
Cas de la suppression : Si on supprime le véhicule n° 8, on va perdre un type de véhicule (207).
Il existe une dépendance fonctionnelle (DF) entre deux propriétés A et B si à toute valeur de A on
associe une valeur de B (A : attribut ou groupe d’attributs).
On note : AB (A détermine B)
Exemple :
Etudiant (NCE, Nom, Prénom)
On peut dégager les DF suivantes : NCE Nom, NCE Prénom
Il existe différents types de DF : DF Partielle, DF Totale, DF Transitive.
Mbarek DHAHRI 20
Bases de données Le modèle relationnel
Mbarek DHAHRI 21
Bases de données L’algèbre relationnelle
CHAPITRE
4
L’ALGEBRE
L’ALGEBRE RELATIONNELLE
Objectifs spécifiques
A la fin de ce chapitre, l’étudiant doit être capable de :
- Reconnaître l’utilité des opérateurs ensemblistes et spécifiques
- Analyser des requêtes plus ou moins complexes
- Appliquer les opérateurs appropriés dans l’expression des requêtes
Plan du chapitre
1. Introduction
2. Opérateurs ensemblistes
3. Opérateurs relationnels
4. Application
Volume horaire
1 séance de cours intégré
Mbarek DHAHRI 22
Bases de données L’algèbre relationnelle
1 Introduction
L’algèbre relationnelle a été introduite par Codd en 1970. On distingue deux types d’opérateurs :
• Opérateurs ensemblistes : Union, Intersection, Différence, Produit cartésien
• Opérateurs relationnels : Sélection, Projection, Jointure et Division
2 Opérateurs ensemblistes
Pour l’union, l’intersection, la différence les relations doivent avoir le même degré et les attributs
associés deux à deux doivent être du même type syntaxique.
2.1 L’union
L’union de deux relations R et S, noté R ∪ S est l’ensemble des tuples qui appartiennent, soit à
R, soit à S, soit à la fois à R et à S.
Exemple :
Pilote 1 PLNUM ADR Pilote1: ensemble
100 PARIS des pilotes habitant
101 PARIS PARIS
120 PARIS
∪
Pilote 2 PLNUM VD Pilote2 : ensemble
130 TOUL des pilotes assurant
140 TOUL un vol au départ de
101 PARIS Paris ou de Toulouse
Mbarek DHAHRI 23
Bases de données L’algèbre relationnelle
2.2 L’intersection
L’intersection de deux relations notée R ∩ S est l’ensemble des tuples qui appartiennent à la fois
à R et à S.
Exemple :
Pilote 1 ∩ Pilote 2 PLNUM VILLE
101 PARIS
2.3 La différence
La différence de deux relations notée R - S est l’ensemble des tuples qui appartiennent à R sans
appartenir à S. C’est l’opérateur complémentaire de l’intersection.
Pilote 1 − Pilote 2 PLNUM VILLE
100 PARIS
120 PARIS
Le produit cartésien de deux relations, noté R ⊗ S, est l’ensemble de tous les tuples obtenus par
concaténation de tuples de R et de S.
Exemple :
Pilote PLNUM ADR
103 NICE
106 NICE
⊗
Avion AVNOM CAP
AIRBUS 350
BOING 250
Mbarek DHAHRI 24
Bases de données L’algèbre relationnelle
3 Opérateurs relationnels
3.1 Sélection (σ
σ)
La sélection est une opération spécifique aux relations qui produit une nouvelle relation (NR) en
enlevant des tuples à la relation de départ (DR) : NR est un sous-ensemble de la relation DR.
NR aura la structure de DR. NR comportera les tuples de qui vérifient la condition.
La condition est de type <Attribut> <Opérateur> <Valeur>
L'opérateur est un élément de l’ensemble {<, ≤, =, ≥, >, ≠ }
La sélection est donc une opération qui consiste à choisir des enregistrements ayant une certaine
propriété.
On note : σcondition(R)
Exemple :
Pilote PLNUM PLNOM ADR
100 JEAN PARIS
101 PIERRE PARIS
120 PAUL PARIS
130 SERGE TOUL
140 MICHEL TOUL
3.2 Projection (π
π)
La projection est une opération spécifique aux relations qui produit une nouvelle relation (NR) en
supprimant un ou plusieurs attributs de la relation de départ (DR).
NR aura une structure différente de DR. Structure (NR) ⊆ Structure (DR).
NR comportera les tuples de DR sauf que les tuples en double ne seront conservés qu'une seule
fois.
On note : ∏A1, A2, …,Ap(R)
Mbarek DHAHRI 25
Bases de données L’algèbre relationnelle
Exemple :
Avion AVNUM AVNOM CAP LOC
100 AIRBUS 350 TOUL
101 AIRBUS 350 TOUL
104 AIRBUS 150 PARIS
105 BOING 250 PARIS
∏AVNOM, CAP(Avion)
Avion AVNOM CAP
AIRBUS 350
AIRBUS 350
AIRBUS 150
BOING 250
3.3 Jointure (
)
La jointure est une opération essentielle à l'algèbre relationnelle. Cette opération consiste à
rapprocher selon une condition les tuples de deux relations R1 et R2 pour former une relation R3.
R1 et R2 n'ayant pas nécessairement la même structure ou le même schéma.
R3 aura une structure différente de R1 et R2 : structure composée à partir de R1 et R2.
Chaque tuple dans R3 sera le résultat de la fusion d'un tuple de R1 et d'un tuple de R2 vérifiant la
condition de rapprochement.
La jointure est le produit cartésien suivi d'une sélection suivi d'une projection.
On note : R1 >< R2
condition
Remarque :
Si les relations R1 et R2 n'ont pas d'attributs en commun, la jointure sera assimilée à un produit
cartésien.
Exemple :
Pilote PLNUM PLNOM ADR
100 JEAN PARIS
101 PIERRE PARIS
120 PAUL PARIS
Mbarek DHAHRI 26
Bases de données L’algèbre relationnelle
Requête : ensemble des pilotes en service avec les numéros des vols et des avions
correspondants :
Pilote >< Vol
Pilote. PLNUM =Vol . PLNUM
3.4 Division (÷
÷)
L'opération de division consiste à construire le quotient de la relation R1 (a11, …, ap, ap+1, …, an)
par la relation R2 (ap+1, …, an) comme la relation Q (a1, …, ap) dont les tuples sont ceux qui,
concaténés à tout tuple de R2, donnent un tuple de R1.
La division permet de rechercher les sous-tuples qui sont complétés par tous ceux d'une autre
relation.
On note : R1 ÷ R2
Remarque :
• La division exprime la notion de « tous les » ;
• Chaque fois que l’on aura « pour tous les x », il suffira de mettre l’attribut x dans le
diviseur. Le dividende binaire doit contenir alors le même attribut (sur lequel porte la
division) et l’attribut du résultat recherché.
Mbarek DHAHRI 27
Bases de données L’algèbre relationnelle
Exemple :
Vol AVNUM PLNUM
30 101
30 102
30 103
31 100
31 102
32 102
32 103
33 102
Pilote PLNUM
102
103
Vol ÷ Pilote
AVNUM
30
32
4 Application
Soit la base de données suivante :
CLIENT (Codc, Nom, Crédit, CréditMax, Ville)
COMMANDE (NC, DateC, #Codc)
LIGN-COMM (NC, Codp, Qtec)
PRODUIT (Codp, Libelle, PU, Qtes, Couleur)
Solution
R9 : ∏CODC (∏CODP (σCOULEUR =’Rouge’ (Produit)) >< ∏NC, CODP (Lign-Comm) >< ∏CODC, NC
CODP CODP
(Commande))
R10 : ∏CODP (Produit) - ∏CODP (∏NC (∏CODC (σNOM = ‘X’ (Client)) >< ∏CODC, NC (Commande)))
CODC
Mbarek DHAHRI 29
Bases de données Le langage SQL
CHAPITRE
5
LE LANGAGE SQL
SQL
Le LDD : Langage de Définition de
Données
Objectifs spécifiques
A la fin de ce chapitre, l’étudiant doit être capable de :
- Apprendre à créer une base de données en tenant compte des
contraintes d’intégrité
- Appliquer des droits d’accès à une base de données
Plan du chapitre
1. Introduction
2. Schéma
3. Tables
4. Vues
5. Index
6. Privilèges d’accès à la base
Volume horaire
3 séances de cours intégré
Mbarek DHAHRI 30
Bases de données Le langage SQL
1 Introduction
SQL signifie « Structured Query Language » c’est à dire « langage d’interrogation structuré ».
En fait SQL est un langage complet de gestion de bases de données relationnelles. Il a été conçu
par IBM dans les années 70. Il est devenu le langage standard des systèmes de gestion de bases
de données relationnelles (SGBDR).
C’est à la fois :
• un langage de définition des données (LDD) : Il permet la création, la modification et la
suppression des structures de données (ordres CREATE, ALTER, DROP) ;
• Un langage de manipulation des données (LMD) : un langage d’interrogation des données
(ordre SELECT), un langage de manipulation des données (ordres UPDATE, INSERT,
DELETE) ;
• Un langage de contrôle d’accès aux données (LCD) : ordres GRANT, REVOKE.
2 Schéma
Un schéma est un ensemble d’objets (tables, vues, index, etc.) gérés ensemble. Cette notion
correspond au concept habituel de base de données. On pourra ainsi avoir un schéma lié à la
gestion du personnel et un autre lié à la gestion des clients.
CREATE SCHEMA <SchemaName> AUTHORIZATION <SchemaOwner>
3 Tables
Table est le nom que l’on donne à la table ; colonne 1, colonne 2, sont les noms des colonnes ;
type 1, type 2, ... sont les types de données qui seront contenues dans les colonnes.
Mbarek DHAHRI 31
Bases de données Le langage SQL
On peut ajouter après la description d’une colonne l’option NOT NULL qui interdira que cette
colonne contienne la valeur NULL. On peut aussi ajouter des contraintes d’intégrité portant sur
une ou plusieurs colonnes de la table.
Les types de données possibles sont :
Type Signification
INTEGER Nombre entier entre -32767 et +32768
CHAR(n) Chaîne de caractère de longueur fixe, 1<n<255
VARCHAR2(n) Chaîne de caractère de longueur variable, 1<n<2000
DATE Date dont le format standard est JJ-MM-AA
LONG, Chaîne de caractère de taille variable pouvant aller jusqu’à 2 Go. Une
LONG VARCHAR seule colonne par table peut être de type LONG
NUMBER Nombre entier ou décimal de 40 positions maximum
NUMBER(n) Nombre entier ou décimal avec une taille spécifique, 1<n<105
NUMBER(n, m) Nombre décimal pouvant avoir au maximum n chiffres dont m après la
virgule
RAW(n) Nombre binaire de n octets, n<=255
LONGRAW Données de type binaire de longueur variable allant jusqu’à 2 Go
Exemple :
CREATE TABLE article (ref CHAR (10) NOT NULL,
prix NUMBER (9,3))
Une variante permet d’insérer pendant la création de la table des lignes venant d’autres tables :
CREATE TABLE table (col type, …)
AS SELECT …
Exemple 1 :
CREATE TABLE MINIDEPT (CLE NUMBER, DATA CHAR (20))
AS SELECT DEPT, NOMD FROM DEPT
Cet ordre créera une table MINIDEPT et la remplira avec deux colonnes des lignes de la table
DEPT.
Il faut évidemment que les définitions des colonnes de la table créée et du résultat de la sélection
soient compatibles en type et en taille
Exemple 2 :
CREATE TABLE DEPT10 AS SELECT * FROM DEPT WHERE DEPT = 10
Mbarek DHAHRI 32
Bases de données Le langage SQL
Dans ce cas les colonnes de la table crée auront les mêmes noms, types et tailles que celles de la
table utilisée dans la clause AS SELECT.
Une contrainte d’intégrité est une règle qui permet de contrôler au mieux la valeur d’une colonne.
CONSTRAINT <nom_contrainte> contrainte
Les contraintes possibles sont : UNIQUE, PRIMARY KEY, FOREIGN KEY … REFRENCES,
CHECK.
Dans la définition d’une table, on peut indiquer des contraintes d’intégrités portant sur une ou
plusieurs colonnes :
• Si la contrainte porte sur une seule colonne, elle suit la définition le la colonne dans un
ordre CREATE TABLE (pas possible dans un ordre ALTER TABLE) ;
• Si la contrainte porte sur une ou plusieurs colonnes, elle se place au même niveau que les
définitions des colonnes dans un ordre CREATE TABLE ou ALTER TABLE.
Mbarek DHAHRI 33
Bases de données Le langage SQL
CodeP CHAR(10),
CONSTRAINT PKPART PRIMARY KEY (Matricule, CodeP))
Mbarek DHAHRI 34
Bases de données Le langage SQL
Facture (codeFacture, DateFacture, MontantFacture, payé, #CodeClient)
Ligne_facture (codeFacture, CodeProduit, Quantité)
1/ Création de la table client :
Mbarek DHAHRI 35
Bases de données Le langage SQL
Deux types de modification sont possibles : ajout d’une colonne (après toutes les autres
colonnes), et modification d’une colonne existante.
Mbarek DHAHRI 36
Bases de données Le langage SQL
Exemple :
Dans la table client, supprimer l’interdiction de présence de valeurs nulles dans le champ
Nomclient :
ALTER TABLE client
MODIFY (NomClient VARCHAR(30))
Exemple :
Supprimer la table fournisseur :
DROP TABLE Fournisseur CASCADE CONSTRAINTS
4 Vues
Une vue est une relation virtuelle définie sur une ou plusieurs relations. Elle peut être utilisée
pour restreindre les droits d’accès à certaines colonnes et à certaines lignes d’une table : un
utilisateur peut ne pas avoir accès à une table mais avoir les autorisations pour utiliser une vue
qui ne contient que certaines colonnes de la table
Exemple :
DROP VIEW EMP10
Mbarek DHAHRI 37
Bases de données Le langage SQL
5 Index
Un index est formé de clés auxquelles SQL peut accéder très rapidement. Comme pour l’index
d’un livre, ces clés permettent de lire ensuite directement les données repérées par les clés.
Si on indique au système qu’un attribut est déclaré UNIQUE ou PRIMARY KEY, un index est
créé automatiquement par le système.
L’ordre GRANT du langage SQL permet au propriétaire d’une table ou d’une vue de donner à
d’autres utilisateurs des droits d’accès à celles-ci :
GRANT privilèges ON table/vue TO utilisateurs [WITH GRANT OPTION]
Les privilèges qui peuvent être données sont les suivants :
SELECT Droit de lecture
INSERT Droit d’insertion de lignes
UPDATE Droit de modification de lignes
DELETE Droit de suppression de lignes
ALTER Droit de modification de la définition de la table
INDEX Droit de création d’index
Mbarek DHAHRI 38
Bases de données Le langage SQL
ALL Tous les droits ci-dessus
Exemple :
GRANT SELECT, UPDATE ON EMP TO SCOTT, BOB
Exemple :
REVOKE SELECT, UPDATE ON EMP FROM SCOTT
Mbarek DHAHRI 39
Bases de données Le langage SQL
CHAPITRE
6
LE LANGAGE SQL
Le LMD : Langage de Manipulation
de Données
Objectifs spécifiques
A la fin de ce chapitre, l’étudiant doit être capable de :
- Construire des requêtes d’interrogations correspondant à des critères
plus ou moins complexes
- Savoir ajouter, modifier, supprimer des enregistrements d’une table
Plan du chapitre
1. Interrogation des données : SELECT
2. Manipulation des données
Volume horaire
4 séances de cours intégré
Mbarek DHAHRI 40
Bases de données Le langage SQL
Cette clause permet d’indiquer quelles colonnes, ou quelles expressions doivent être retournées
par l’interrogation.
SELECT [DISTINCT] *
Ou
SELECT [DISTINCT] exp1 [[AS] nom1], exp2 [[AS] nom2], …
- « * » signifie que toutes les colonnes de la table sont sélectionnées ;
- le mot clé DISTINCT permet d’éliminer les duplications
Exemple :
La table EMP est utilisée pour enregistrer les informations des employés :
EMPNO NOME POSTE DATERECRUTEMENT SAL DEPT
7369 AHMED Caissier 17/12/1980 800 10
7499 JAMEL Vendeur 20/02/1981 1600 30
7521 EMNA Vendeur 22/02/1981 1250 30
La table DEPT sauvegarde les informations concernant les départements :
DEPT NOMD
10 Financier
20 Recherche
30 Ventes
40 Marketing
Mbarek DHAHRI 41
Bases de données Le langage SQL
(a) SELECT * FROM DEPT
(b) SELECT DISTINCT poste FROM EMP
(c) SELECT NOME, SAL AS Salaire FROM EMP
La clause FROM donne la liste des tables participant à l’interrogation. Il est possible de lancer
des interrogations utilisant plusieurs tables à la fois.
FROM table1, table2, …
Quand on précise plusieurs tables dans la clause FROM, on obtient le produit cartésien des
tables.
La clause WHERE permet de spécifier quelles sont les lignes à sélectionner dans une table ou
dans le produit cartésien de plusieurs tables. Elle est suivie d’un prédicat (expression logique
ayant la valeur vrai ou faux) qui sera évalué pour chaque ligne. Les lignes pour lesquelles le
prédicat est vrai seront sélectionnées.
WHERE prédicat
Un prédicat simple est la comparaison de deux expressions ou plus au moyen d’un opérateur
logique :
WHERE exp1 = exp2
WHERE exp1 != exp2
WHERE exp1 < exp2
WHERE exp1 > exp2
WHERE exp1 <= exp2
WHERE exp1 >= exp2
WHERE exp1 BETWEEN exp2 AND exp3
WHERE exp1 LIKE exp2
WHERE exp1 NOT LIKE exp2
WHERE exp1 IN (exp2, exp3, …)
WHERE exp1 NOT IN (exp2, exp3, …)
WHERE exp IS NULL
WHERE exp IS NOT NULL
Mbarek DHAHRI 42
Bases de données Le langage SQL
- Les trios types d’expressions (arithmétiques, caractères, ou dates) peuvent être comparées au
moyen des opérateurs d’égalité ou d’ordre (=, !=, <, >, <=, >=).
- exp1 BETWEEN exp2 AND exp3 : est vrai si exp1 est compris entre exp2 et exp3, bornes
incluses.
- exp1 IN (exp2, exp3, …): est vrai si exp1 est égale à l’une des expressions de la liste entre
parenthèses.
- exp1 LIKE exp2 teste l’égalité de deux chaînes en tenant compte des caractères jokers dans la
2ème chaîne :
* « _ » remplace un caractère exactement ;
* « % » remplace une chaîne de caractères de longueur quelconque ;
- WHERE exp IS NULL est vrai si l’expression a la valeur NULL (ou l’inverse avec NOT)
Les opérateurs logiques AND et OR peuvent être utilisés pour combiner plusieurs prédicats. Des
parenthèses peuvent être utilisées pour imposer une priorité dans l’évaluation du prédicat, ou
simplement pour rendre plus claire l’expression logique.
L’opérateur NOT placé devant un prédicat en inverse le sens.
Exemple :
(a) les employés du département 30 ayant un salaire > 1500 dinars :
SELECT NOME FROM EMP
WHERE DEPT = 30 AND SAL > 1500
1.4 Jointure
Quand on précise plusieurs tables dans la clause FROM, on obtient le produit cartésien des tables.
Ce qui est normalement souhaité, c’est de joindre les informations de diverses tables, en précisant
quelles relations les relient entre elles. C’est la clause WHERE qui permet d’obtenir ce résultat.
Elle vient limiter cette sélection en ne conservant que le sous-ensemble du produit cartésien qui
satisfait le prédicat.
Exemple :
Listes des employés avec le nom du département où ils travaillent :
SELECT NOME, NOMD FROM EMP, DEPT
WHERE EMP.DEPT = DEPT.DEPT
Remarque :
La norme SQL-2 a introduit une nouvelle syntaxe pour la jointure qui permet de séparer les
conditions de jointure des conditions de sélection des lignes.
Mbarek DHAHRI 43
Bases de données Le langage SQL
L’exemple précédent devient :
SELECT NOME, NOMD
FROM EMP JOIN DEPT ON EMP.DEPT = DEPT.DEPT
Mbarek DHAHRI 44
Bases de données Le langage SQL
1.5 Sous-interrogation
Une caractéristique puissante de SQL est la possibilité qu’un critère de recherché employé dans
une clause WHERE (expression à droite d’un opérateur de comparaison) soit lui-même le résultat
d’un SELECT.
Par exemple, la sélection des employés ayant même poste que MARTIN peut s’écrire en joignant
la table EMP avec elle-même :
SELECT NOME
FROM EMP, EMP MARTIN
WHERE POSTE = MARTIN.POSTE AND MARTIN.NOME =’MARTIN’
Mais on peut aussi la formuler au moyen d’une sous-interrogation :
SELECT NOME
FROM EMP
WHERE POSTE = ( SELECT POSTE
FROM EMP
WHERE NOME =’MARTIN’)
Mbarek DHAHRI 45
Bases de données Le langage SQL
• les opérateurs obtenus en ajoutant ANY ou ALL à la suite des opérateurs de comparaison
classique : =, !=, <, >, <=,>=
ANY : la comparaison sera vraie si elle est vraie pour au moins un élément de l’ensemble (elle
est fausse si l’ensemble est vide)
ALL : la comparaison sera vraie si elle est vraie pour tous les éléments de l’ensemble (elle est
vraie si l’ensemble est vide)
WHERE exp op ANY (SELECT …)
WHERE exp op ALL (SELECT …)
WHERE exp IN (SELECT …)
WHERE exp NOT IN (SELECT …)
Ou op est un des opérateurs : =, !=, <, >, <=,>=
Exemple :
Liste des employés gagnant plus que tous les employés du département 30 :
SELECT NOME, SAL FROM EMP
WHERE SAL > ALL (SELECT SAL FROM EMP
WHERE DEPT = 30)
Remarque :
L’opérateur IN est équivalent à « = ANY », et l’opérateur NOT IN est équivalent
à « != ALL »
Mbarek DHAHRI 46
Bases de données Le langage SQL
Exemple :
Liste des employés ayant même poste et même salaire que « BOB » :
SELECT NOME, POSTE, SAL FROM EMP
WHERE (POSTE, SAL) = (SELECT POSTE, SAL FROM EMP
WHERE NOME = ’ BOB ’)
Mbarek DHAHRI 47
Bases de données Le langage SQL
Il est possible de subdiviser la table en groupes, chaque groupe étant l’ensemble des lignes ayant
une valeur commune.
GROUP BY exp1, exp2, …
Cette clause se place juste après la clause WHERE, ou après la clause FROM si la clause
WHERE n’existe pas.
Des lignes peuvent être éliminées avant que le groupe se soit formé grâce à la clause WHERE.
Exemple :
(a) Nombre d’employés par département :
SELECT DEPT, COUNT(*) FROM EMP
GROUP BY DEPT
(b) Nombre de postes ‘SECRETAIRE’ par département :
SELECT DEPT, COUNT(*) FROM EMP
WHERE POSTE = ‘SECRETAIRE’
GROUP BY DEPT
Remarque :
Dans la liste des colonnes résultat d’un SELECT de groupe ne peuvent figurer que des
caractéristiques de groupe, c’est-à-dire soit des fonctions de groupes, soit des expressions
figurant dans le GROUP BY.
Par exemple l’ordre suivant est invalide :
SELECT NOMD, SUM(SAL) FROM EMP, DEPT
WHERE EMP.DEPT = DEPT.DEPT
GROUP BY DEPT.DEPT
Il aurait fallu écrire :
SELECT NOMD, SUM(SAL) FROM EMP, DEPT
WHERE EMP.DEPT = DEPT.DEPT
GROUP BY NOMD
HAVING prédicat
Set à préciser quels groupes doivent être sélectionnés. Elle se place après la clause GROUP BY.
Mbarek DHAHRI 48
Bases de données Le langage SQL
Le prédicat suit la même syntaxe que celui la clause WHERE. Cependant, il ne peut porter que
sur des caractéristiques de groupe : fonction de group ou expression figurant dans la clause
GROUP BY.
Exemple : Liste des départements ayant plus qu’un poste ‘SECRETAIRE’ :
SELECT DEPT, COUNT(*) FROM EMP
WHERE POSTE = ‘SECRETAIRE’
GROUP BY DEPT
HAVING COUNT(*) > 1
Les lignes constituant le résultat d’un SELECT sont obtenues dans un ordre indéterminé. La
clause ORDER BY précise l’ordre dans lequel la liste des lignes sélectionnées sera donnée.
ORDER BY exp1 [ASC/DESC], exp2 [ASC/DESC], …
Par défaut, l’ordre de tri est croissant; l’option facultative DESC donne un tri par ordre
décroissant.
Il est possible de donner le rang relatif de la colonne dans la liste des colonnes, plutôt que son
nom.
Exemple :
SELECT DEPT, NOMD FROM DEPT ORDER BY NOMD
Ou SELECT DEPT, NOMD FROM DEPT ORDER BY 2
Pour cette section, on supposera que deux tables EMP1 et EMP2 contiennent les informations sur
deux filiales de l’entreprise.
Mbarek DHAHRI 49
Bases de données Le langage SQL
2.1 Insertion
Mbarek DHAHRI 50
Bases de données Le langage SQL
2.2 Modification
La commande UPDATE permet de modifier les valeurs d’un ou plusieurs champs, dans une ou
plusieurs lignes existantes d’une table.
UPDATE table
SET col1 = exp1, col2 = exp2, …
[WHERE prédicat]
Exemple :
(a) Faire passer MARTIN dans le département 10
UPDATE EMP SET dept = 10 WHERE nome = ‘MARTIN’
(b) Augmenter le salaire des commerciaux de 10 %
UPDATE EMP SET Salt = Sal * 1.1 WHERE poste = ‘COMMERCIAL’
2.3 Suppression
Mbarek DHAHRI 51
Bases de données Travaux Dirigés
Travaux Dirigés
Mbarek DHAHRI 52
Bases de données Travaux Dirigés
TD n° 1 : Entité/Association
Etude de cas n° 1 : Gestion de Parc Informatique
La gestion du parc informatique au sein d’une société est décrite selon l’univers de discourt
suivant :
Les différents équipements informatiques (imprimantes, écran, …) sont regroupés pour constituer
des configurations. Chaque équipement est identifié par un numéro de série, une nature
d’équipement (exemple : imprimante) et un type d’équipement (exemple : laser 4P/mn).
Une configuration acquise auprès d’un fournisseur qui peut avoir plusieurs localités, est sous
garantie durant une période de 3 ans à partir de la date d’achat. A la fin de la période de garantie,
la configuration peut être couverte par un contrat de maintenance signé avec le fournisseur initial.
Un contrat de maintenance peut concerner plusieurs configurations.
Le mode et le montant de règlement des prestations de maintenance sont celui choisi par le
prestataire de service lors de la signature du contrat.
Chaque configuration est affecté à une date quelconque à une unité de gestion, c'est-à-dire qu’une
configuration peut passer d’une unité à une autre.
Travail demandé :
Construire le modèle entité / association représentant la gestion du parc informatique.
Mbarek DHAHRI 54
Bases de données Travaux Dirigés
TD n° 2 : Modèle relationnel
2.
Mbarek DHAHRI 55
Bases de données Travaux Dirigés
3.
4.
Mbarek DHAHRI 56
Bases de données Travaux Dirigés
5.
Mbarek DHAHRI 57
Bases de données Travaux Dirigés
TD n° 3 : Algèbre relationnelle
Exercice 1 : Gestion simplifiée d’une compagnie aérienne
Soit le modèle relationnel suivant :
CLIENT (NOC, NOM, ADRESSE)
SERVICE (NOS, INTITULE, LOCALISATION)
PIECE (NOP, DESIGNATION, COULEUR, POIDS)
ORDRE (#NOP, #NOS, #NOC, QUANTITE)
Proposer, en algèbre relationnelle, une formulation des requêtes suivantes :
1) Déterminer les NOS des services qui ont commandé pour le client C1.
2) Déterminer les NOS des services qui ont commandé une pièce P1 pour le client C1.
3) Donner les NOS des services qui ont commandé une pièce de couleur rouge pour le client C1.
4) Donner les NOC des clients qui ont commandé au moins toutes les pièces commandées par S1.
5) Donner les NOC des clients qui ont commandé des pièces figurant uniquement dans les
commandes du service S1.
6) Donner les NOP des pièces qui sont commandées au niveau local (pour ces pièces, l’adresse
du client et la localisation du service sont identiques).
Mbarek DHAHRI 58
Bases de données Travaux Dirigés
Un compte épargne est géré par la banque, il est décrit par un numéro et le solde.
Un emprunt peut être contracté par un client de la banque, il est décrit par un numéro et le
montant.
La banque a des filiales qui sont caractérisées par leur nom, leur capital et leur adresse sous
forme des noms de rue et de ville.
1. donner les informations concernant les emprunts contractés auprès de la filiale BP.
2. donner les informations concernant les emprunts d’un montant supérieur à 10000 DT.
3. donner les noms des clients ayant contracté un emprunt ainsi que la filiale auprès de
laquelle cet emprunt a été contracté.
4. quels sont les noms des clients de l’employé « Flen Hédi » et dans quelle ville habitent-
ils ?
5. quels sont les noms des clients de la filiale BP ayant un compte épargne mais pas
d’emprunt ?
6. quels sont les noms des clients de la filiale BP ayant un compte épargne et un emprunt à
la BP ?
7. quels sont les noms des clients de la filiale BP ayant un emprunt mais pas de compte
épargne ?
8. quels sont les noms des clients qui n’habitent pas dans la ville où ils ont un compte
épargne ?
9. quels sont les employés de la banque qui sont également clients de la banque ?
Mbarek DHAHRI 59
Bases de données Travaux Dirigés
TP n° 1 : SQL (LDD)
Exercice 1
Soit le schéma relationnel suivant :
Client (code_cli, nom_cli, prénom_cli, #code_région)
Article (réf_art, désig_art, couleur_art, prix, qté_stock)
Commande (num_com, date_com, #code_cli, #code_vend)
Ligne_com (num_ligne, qté_com, #réf_art, #num_com)
Vendeur (code_vend, nom_vend, prénom_vend, salaire_vend)
Région (code_région, nom_région)
Point_vente (code_point, nom_point, #code_région)
Vendeur_Point (code_vend, code_point, date_affectation)
Questions :
1/ Créer les différentes tables en utilisant le langage SQL.
2/ Ecrire la requête SQL qui permet d’ajouter les colonnes « adresse » et « tél » à la table
« client ».
3/ Créer l’index « idx_nom_prenom » indexant les colonnes « nom_cli » et « prénom_cli » de
la table « client ».
Exercice 2
Soit le schéma relationnel suivant :
Mbarek DHAHRI 60
Bases de données Travaux Dirigés
Contraintes d'inclusions :
code_auteur de ECRIT est référencé par code_auteur de AUTEUR
code_catalogue de ECRIT est référencé par code_catalogue de LIVRE
code_motcle de DECRIT est référencé par code_motcle de MOT_CLE
code_catalogue de DECRIT est référencé par code_catalogue de LIVRE
code_catalogue de EXEMPLAIRE est référencé par code_catalogue de LIVRE
code_theme de LIVRE est référencé par code_theme de THEME
code_editeur de EXEMPLAIRE est référence par code_editeur de EDITEUR
code_rayon de EMPRUNT est référencé par code_rayon de EXEMPLAIRE
matricule de EMPRUNT est référencé par matricule de ABONNE.
Mbarek DHAHRI 61
Bases de données Travaux Dirigés
TD n° 4 : SQL (LMD)
Exercice 1
Soit les deux tables suivantes :
Nom colonne Type Taille Obligatoire valeur par défaut valeurs autorisées
Num_CLIENT Numérique 4 O >= 0
Nom_cl Texte 40 O
Adr_cl texte 60
Nationalité_cl texte 40
Code_op texte 5 O
Type_op Texte 1 O A, B, C
Date_op Date O
a) Dire pour chacune des ces requêtes si elle est valide ou non. Expliquer en cas de non validité.
(initialement les deux tables sont vides).
• Insert into client (Num_client, nom_cl) Values (1002, ’Ahmed ben Saleh’);
• Insert into client Num_client, adr_cl, Nationalité_cl) Values (1003, ‘Tunis’, ‘Tunisien’) ;
• Insert into Operation values (‘Vo150’, ‘A’,’01/10/2005’, 1003);
• Delete from Operation where date_op is null;
• Insert into client(Num_client,nom_cl, adr_cl, nationalité_cl) Values(1002,‘Ibrahim ben m
rad’,’Nabeul’,‘Tunisien’)
• Update client set num_client=2000 ;
b) Ecrire les commandes SQL qui permettent de créer les deux tables.
Exercice 2
Ci-après on donne la représentation simplifiée d’une base de données concernant la gestion de
personnel d’une société :
EMPLOYE (CODE_EMP, NOM_EMP, PRENOM_EMP, DATN_EMP, SALAIRE)
ENFANT (NUM_ENF, NOM_ENF, PRENOM_ENF, CODE_EMP#)
OCCUPER (CODE_EMP#, CODE_FC#, DATED_AFF, DATEF_AFF)
FONCTION (CODE_FC, INT_FC, PRIME_FC)
Ecrire les requêtes SQL permettant de :
1) Augmenter de 15% le salaire des employés nés avant ‘01/01/1960’.
2) Afficher les noms des employés (sans doublons)
3) Afficher la somme de prime de l’employé ayant le code ‘CLT0110’
Mbarek DHAHRI 62
Bases de données Travaux Dirigés
4) Afficher les enfants des employés qui ont occupés la fonction intitulé ‘garde de nuit’
pendant le dernier trimestre de l’année 2009 tries par âge croissant.
5) Afficher les primes des fonctions diminuées de 10 % sous l’entête ‘prime ‘
6) Afficher le nombre des enfants par employé
Exercice 3
Soit la base de données suivante :
CLIENT (Codc, Nom, Crédit, CréditMax, Ville)
COMMANDE (NC, DateC, Codc#)
LIGN-COMM (NC#, Codp#, Qtec)
PRODUIT (Codp, Libelle, PU, Qtes, Couleur)
Exprimer les requêtes ci-dessous en langage SQL:
R1 : Quels sont Les produits de couleur bleue.
R2 : Quels sont les produits dont le prix dépasse 10 et qui existent en quantité < 100.
R3 : Quels sont les noms des clients dont le crédit a dépassé le crédit max.
R4 : Quelles sont les couleurs utilisées.
R5 : Quelles sont les villes ou nous avons des clients.
R6 : Quels sont les codes des clients qui ont passé des commandes.
R7 : Quels sont les codes de produits commandés par le client ‘C1’.
R8 : Quels sont les noms des clients qui ont commandés un produit ‘rouge’.
Exercice 4
Soit la base de données relative aux opérations de livraison des produits par des fournisseurs à
une liste d’usines :
Usine (Num_usine, Nom_usine, ville)
Produit (Code_prod, libellé, couleur, poids)
Fournisseur (Num_four, Nom_four, adresse)
Livraison (Num_usine #, Code_prod #, Num_four #, date, quantité)
Ecrire les requêtes « SQL » permettant d’afficher :
a) La liste des fournisseurs dont l’adresse contient « Ettahrir ».
b) Les numéros et les noms de toutes les usines de « Gabes » triés par ordre décroissant des
noms.
c) Les libellés et les poids des produits dont la couleur appartienne à {rouge, vert} et le poids
entre 50 et 100.
d) Les libellés, les couleurs ainsi que les dates de livraison des produits livrés après le
‘12/02/2010’.
e) La somme des quantités des produits livrés par le fournisseur numéro 402, le résultat sera
affichée dans une nouvelle colonne nommée « total_livraison ».
Mbarek DHAHRI 63
Bases de données Bibliographie
Bibliographie
[3] Pierre CRESCENZO « Support de cours magistraux de Bases de données » disponible sur
le site : « http://www.crescenzo.nom.fr/CMBasesDeDonnees »
[4] Bruno Defude « Tutoriel de bases de données relationnelles » disponible sur le site :
« http://www-inf.int-evry.fr/cours/BD/accueil-ext.html »
Mbarek DHAHRI 64
Bases de données Annexe
Mbarek DHAHRI 65