Vous êtes sur la page 1sur 71

République Tunisienne

Ministère de l’Enseignement Supérieur et


de la Recherche Scientifique

Support de cours

Bases de données

Niveau : 2ème année Licence Fondamentale


Option : Informatique Appliquée à la Gestion

Elaboré par : MBAREK DHAHRI

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

Tables des matières


CHAPITRE 1 INTRODUCTION ET PRINCIPAUX CONCEPTS DES BD........................................................2

1 INTRODUCTION .....................................................................................................................................................2

2 LES SYSTEMES A FICHIERS ...............................................................................................................................2

2.1 DEFINITIONS .........................................................................................................................................................2


2.2 LIMITES ................................................................................................................................................................3

3 DEFINITION ET ARCHITECTURE D’UNE BASE DE DONNEES .................................................................3

3.1 DEFINITION ...........................................................................................................................................................3


3.2 ARCHITECTURE D’UNE BASE DE DONNEES ............................................................................................................3
3.2.1 Le niveau conceptuel...................................................................................................................................3
3.2.2 Le niveau interne.........................................................................................................................................3
3.2.3 Le niveau externe .......................................................................................................................................4

4 NOTION DE SYSTEME DE GESTION DE BASE DE DONNEES (SGBD)......................................................4

4.1 DEFINITION ...........................................................................................................................................................4


4.2 CARACTERISTIQUES D’UN SGBD .........................................................................................................................4
4.3 HISTORIQUE ..........................................................................................................................................................5

5 ADMINISTRATION DE BASE DE DONNEES ....................................................................................................6

CHAPITRE 2 LE MODELE ENTITE / ASSOCIATION .......................................................................................8

1 INTRODUCTION ....................................................................................................................................................8

2 CONCEPTS DE BASE .............................................................................................................................................8

2.1 ENTITE ..................................................................................................................................................................8


2.2 ATTRIBUT .............................................................................................................................................................8
2.3 ASSOCIATION........................................................................................................................................................9
2.4 CARDINALITE .....................................................................................................................................................11

3 DEMARCHE DE CONSTRUCTION DU MODELE E /A .................................................................................12

4 APPLICATIONS....................................................................................................................................................12

4.1 APPLICATION 1 ...................................................................................................................................................12


4.2 APPLICATION 2 ...................................................................................................................................................12

CHAPITRE 3 LE MODELE RELATIONNEL......................................................................................................15

1 INTRODUCTION ..................................................................................................................................................15

2 CONCEPTS DU MODELE RELATIONNEL.....................................................................................................15

Mbarek DHAHRI
Bases de données Table des matières

2.1 DOMAINE ............................................................................................................................................................15


2.2 RELATION ...........................................................................................................................................................15
2.3 ATTRIBUT ...........................................................................................................................................................16
2.4 CLE D’UNE RELATION .........................................................................................................................................16
2.4.1 Clé Candidate ............................................................................................................................................16
2.4.2 Clé Primaire ..............................................................................................................................................16
2.4.3 Clé Secondaire ...........................................................................................................................................16
2.4.4 Clé Etrangère.............................................................................................................................................16

3 LES CONTRAINTES D’INTEGRITE STRUCTURELLES .............................................................................17

3.1 CONTRAINTE DE DOMAINE .................................................................................................................................17


3.2 CONTRAINTE D’UNICITE DE LA CLE PRIMAIRE ....................................................................................................17
3.3 CONTRAINTE ENTITE .........................................................................................................................................17
3.4 CONTRAINTE DE REFERENCE OU D’INTEGRITE REFERENTIELLE ..........................................................................17

4 LES REGLES DE PASSAGE DU MODELE E /A AU MODELE RELATIONNEL......................................17

5 LA NORMALISATION ........................................................................................................................................19

5.1 DEPENDANCE FONCTIONNELLE ...........................................................................................................................20


5.1.1 Dépendance fonctionnelle partielle ..........................................................................................................20
5.1.2 Dépendance fonctionnelle totale...............................................................................................................20
5.1.3 Dépendance fonctionnelle transitive.........................................................................................................20
5.2 LES FORMES NORMALES.....................................................................................................................................21
5.2.1 1ère Forme Normale...................................................................................................................................21
5.2.2 2ème Forme Normale..................................................................................................................................21
5.2.3 3ème Forme Normale..................................................................................................................................21

CHAPITRE 4 L’ALGEBRE RELATIONNELLE................................................................................................23

1 INTRODUCTION ..................................................................................................................................................23

2 OPERATEURS ENSEMBLISTES ........................................................................................................................23

2.1 L’UNION .....................................................................................................................................................23


2.2 L’INTERSECTION ........................................................................................................................................24
2.3 LA DIFFERENCE ..........................................................................................................................................24
2.4 PRODUIT CARTESIEN ..................................................................................................................................24

3 OPERATEURS RELATIONNELS.................................................................................................................25

3.1 SELECTION (σ) ...........................................................................................................................................25


3.2 PROJECTION (π)..........................................................................................................................................25
3.3 JOINTURE ().........................................................................................................................................26
3.4 DIVISION (÷) ..............................................................................................................................................27

Mbarek DHAHRI
Bases de données Table des matières

4 APPLICATION ......................................................................................................................................................28

CHAPITRE 5 SQL : LANGAGE DE DEFINITION DE DONNEES (LDD) .....................................................31

1 INTRODUCTION ...................................................................................................................................................31

2 SCHEMA .................................................................................................................................................................31

3 TABLES ...................................................................................................................................................................31

3.1 CRÉATION D’UNE TABLE .....................................................................................................................................31


3.2 CONTRAINTES D’INTEGRITES ..............................................................................................................................33
3.2.1 Contrainte PRIMARY KEY ........................................................................................................................33
3.2.2 Contrainte UNIQUE ..................................................................................................................................34
3.2.3 Contrainte FOREIGN KEY … REFERENCES ..........................................................................................34
3.2.4 Contrainte CHECK ....................................................................................................................................34
3.2.4 Exemples de contraintes.............................................................................................................................34
3.3 MODIFICATION DE LA STRUCTURE D’UNE TABLE ................................................................................................36
3.3.1 Ajout d’une colonne – ADD .......................................................................................................................36
3.3.2 Modification d’une colonne – MODIFY ....................................................................................................36
3.4 SUPPRESSION D’UNE TABLE ...............................................................................................................................37

4 VUES ........................................................................................................................................................................37

4.1 CREATION D’UNE VUE .......................................................................................................................................37


4.2 SUPPRESSION D’UNE VUE ..................................................................................................................................37

5 INDEX .....................................................................................................................................................................38

5.1 CREATION D’UN INDEX .......................................................................................................................................38


5.2 SUPPRESSION D’UN INDEX..................................................................................................................................38

6 PRIVILEGES D’ACCES A LA BASE .................................................................................................................38

6.1 ATTRIBUTION DE DROITS : GRANT ...................................................................................................................38


6.2 SUPPRESSION DE DROITS : REVOKE..................................................................................................................39

CHAPITRE 6 SQL : LANGAGE DE MANIPULATION DE DONNEES (LMD).............................................41

1 INTERROGATION DES DONNEES : SELECT ...............................................................................................41

1.1 CLAUSE SELECT ..............................................................................................................................................41


1.2 CLAUSE FROM..................................................................................................................................................42
1.3 CLAUSE WHERE...............................................................................................................................................42
1.4 JOINTURE ...........................................................................................................................................................43
1.4.1 Jointure d’une table à elle-même...............................................................................................................44
1.4.2 Jointure externe ........................................................................................................................................44
1.5 SOUS-INTERROGATION .......................................................................................................................................45

Mbarek DHAHRI
Bases de données Table des matières

1.5.1 Sous-interrogation à une ligne et une colonne..........................................................................................45


1.5.2 Sous-interrogation ramenant plusieurs lignes ..........................................................................................45
1.5.3 Sous-interrogation ramenant plusieurs colonnes .....................................................................................46
1.5.4 Clause [NOT] EXISTS ..............................................................................................................................47
1.6 FONCTIONS DE GROUPES ....................................................................................................................................47
1.7 CLAUSE GROUP BY .........................................................................................................................................48
1.8 CLAUSE HAVING .............................................................................................................................................48
1.9 CLAUSE ORDER BY .........................................................................................................................................49
1.10 OPERATEURS ENSEMBLISTES ...........................................................................................................................49
1.10.1 Opérateur UNION ...................................................................................................................................49
1.10.2 Opérateur INTERSECT............................................................................................................................50
1.10.3 Opérateur MINUS....................................................................................................................................50

2 MANIPULATION DES DONNEES ......................................................................................................................50

2.1 INSERTION .........................................................................................................................................................50


2.2 MODIFICATION ..................................................................................................................................................51
2.3 SUPPRESSION .....................................................................................................................................................51

TD N° 1 : ENTITE/ASSOCIATION.........................................................................................................................53

TD N° 2 : MODELE RELATIONNEL.....................................................................................................................55

TD N° 3 : ALGEBRE RELATIONNELLE .............................................................................................................58

TP N° 1 : SQL (LDD) ................................................................................................................................................60

TD N° 4 : SQL (LMD)...............................................................................................................................................62

BIBLIOGRAPHIE .....................................................................................................................................................64

ANNEXE : DIFFERENCES DES TYPES ENTRE SQL SERVER ET ORACLE ..............................................65

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

Chapitre 1 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 Les systèmes à fichiers

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

Les systèmes à fichiers soulèvent certaines limites à savoir :


- Dispersion des informations.
- Contrôle différé de données.
- Risque d’incohérence de données.
- Redondance de données.
- Difficulté d’accès, d’exploitation, d’organisation et de maintenance.

3 Définition et architecture d’une base de données

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.

3.2 Architecture d’une base de données

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

3.2.1 Le niveau conceptuel


L’univers réel est décrit à l’aide des concepts du modèle utilisé. Cette description concerne les
entités avec leurs caractéristiques, les liens entre les entités et éventuellement des règles de
gestion appelées contraintes d’intégrité. A ce niveau on fait abstraction de l’utilisation des
données et de leur implémentation physique. Cette description est représentée dans un schéma dit
schéma conceptuel ou schéma logique global.

3.2.2 Le niveau interne


Ce niveau décrit la façon dont les objets conceptuels sont stockés dans la mémoire secondaire et
la correspondance entre structures logiques et structures physiques des données.

Mbarek DHAHRI 3
Bases de données Introduction et principaux concepts des BD

3.2.3 Le niveau externe


Ce niveau correspond aux vues que vont avoir les utilisateurs, par l’intermédiaire des
applications, des entités du schéma conceptuel. Ces différentes vues sont décrites à l’aide de
schémas externes. Chaque schéma externe traduit un type d’utilisation de la base de données.

4 Notion de Système de Gestion de Base de Données (SGBD)

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.2 Caractéristiques d’un SGBD

• Indépendance physique: Le niveau physique peut être modifié indépendamment du


niveau conceptuel. Cela signifie que tous les aspects matériels de la base de données
n'apparaissent pas pour l'utilisateur, il s'agit simplement d'une structure transparente de
représentation des informations.
• Indépendance logique: le niveau conceptuel doit pouvoir être modifié sans remettre en
cause le niveau physique, c'est-à-dire que l'administrateur de la base doit pouvoir la faire
évoluer sans que cela gêne les utilisateurs.
• Manipulabilité: des personnes ne connaissant pas la base de données doivent être
capables de décrire leurs requêtes sans faire référence à des éléments techniques de la
base de données.
• Rapidité des accès: le système doit pouvoir fournir les réponses aux requêtes le plus
rapidement possibles, cela implique des algorithmes de recherche rapides.
• Administration centralisée: le SGBD doit permettre à l'administrateur de pouvoir
manipuler les données, insérer des éléments, vérifier son intégrité de façon centralisée.
Mbarek DHAHRI 4
Bases de données Introduction et principaux concepts des BD

• Limitation de la redondance: le SGBD doit pouvoir éviter dans la mesure du possible


des informations redondantes, afin d'éviter d'une part un gaspillage d'espace mémoire
mais aussi des erreurs.
• Vérification de l'intégrité: les données doivent être cohérentes entre elles, de plus
lorsque des éléments font références à d'autres, ces derniers doivent être présents.
• Partageabilité des données: le SGBD doit permettre l'accès simultané à la base de
données par plusieurs utilisateurs.
• Sécurité des données: Le SGBD doit présenter des mécanismes permettant de gérer les
droits d'accès aux données selon les utilisateurs.

4.3 Historique

* Jusqu’aux années 60 : Organisation classique en fichiers : systèmes à fichiers.


* Fin des années 60 : Première génération : apparition des premiers SGBD.
- Séparation de la description des données de leur manipulation par les programmes
d’application.
- Basés sur des modèles navigationnels :
o Modèles hiérarchiques : modèles père fils, structures d’arbres, (Exemples :
Adabas, DL/ 1 ou IMS (Information Management System))
o Modèles réseaux : modèle père fils, structure de graphes. (Exemples :
SOCRATE, IIDS, IDMS, IDS2, IMS2).

* À partir de 1970 : Deuxième génération de SGBD à partir du modèle relationnel.


- Enrichissement et simplification des SGBD afin de faciliter l’accès aux données pour les
utilisateurs.
- Modèle mathématique de base : l’algèbre relationnelle
- Exemples : ORACLE, SQL Server, DB2, Access, PostgreSQL, MySQL.

* 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

5 Administration de base de données


Un SGBD doit fournir des outils d’administration pour décrire les données, permettre le suivi de
leur structure de stockage et autoriser leur évolution.
Ces outils sont centralisés entre les mains de l’administrateur de la base de données.
Le rôle de l’administrateur de base de données est :
- Définition du schéma conceptuel de données
- Gestion des utilisateurs et partage des données entre eux
- Installation du SGBD et des outils associés
- Création de la base de données et assurer son évolution
- Gestion des privilèges d’accès (qui peut accéder à quoi et comment)
- Amélioration des performances
- Sécurité et cohérence des données
- Echange des données entre la base de données et le monde extérieur

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

Chapitre 2 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

Chaque entité possède des propriétés particulières appelées attributs.


Un attribut est une caractéristique ou une qualité d’une entité ou d’une association. Il peut
prendre une ou plusieurs valeurs.
Nom entité
La représentation d’un attribut se fait comme suit :
Propriété 1
Propriété 2

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

Exemples : Etudiant Classe


NCE Num_classe
Nom Appartenir Nom_classe
Prénom
Age
Une association peut être porteuse de propriété(s), il s’agit d’attribut(s) correspondant à
l’association des occurrences des entités.

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

Il est possible d’exprimer des relations n-aires.

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é

Cardinalité mini égale 0 Certaines occurrences de l’individu type ne participent pas


à la relation
Cardinalité mini égale 1 Toute occurrence de l’individu type participe au moins une
fois à la relation
Cardinalité maxi égale 1 Toute occurrence de l’individu type participe au plus une
fois à la relation
Cardinalité maxi égale n Toute occurrence de l’individu type peut participe plusieurs
fois à la relation

Exemple : Etudiant Epreuve


NCE Num_epr
Nom Passer Date_epr
0,3 note 1,n
Prénom
Age

Mbarek DHAHRI 11
Bases de données Le modèle Entité / Association

Un étudiant passe au moins 0 matière et au plus 3 matières.


Une épreuve est passée par 1 ou plusieurs étudiants.

3 Démarche de construction du modèle E /A


1 Détermination des entités et de leurs propriétés ou attributs
2 Détermination des associations qui les relient et les cardinalités correspondantes
3 vérification du modèle

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

Film Jouer 1,n Artiste


1,n
cachet
CodeFilm
CodeArt
Titre
Nom
Durée Réaliser Ville
Genre
1,1 0,n Nationalité

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

Chapitre 3 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 Concepts du modèle relationnel

2.1 Domaine

Un domaine D est un ensemble de valeurs caractérisé par un nom. Du point de vue de la


réalisation informatique, le domaine se restreint à la notion de type de données.
Exemple :
D_age : entier
D_sport : {football, handball, tennis, natation}
D_lieu : {stade_Menzeh, stade_ radès}

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

C’est une colonne de la relation caractérisée par un nom et un domaine.


Exemple :
Code_Produit : Entier
Prix_Unitaire : Réel

2.4 Clé d’une relation


Une clé de relation est un sous-ensemble d'attributs qui permet de caractériser tout
enregistrement d'une relation. En général, il existe plusieurs clés pour une même relation R.

2.4.1 Clé Candidate


C’est un attribut ou ensemble d’attributs appartenant à la relation qui permet d’identifier ou de
déterminer un et un seul tuple de la relation.
Exemple :
Soit la relation Produit (CodeP, Libelle, Prix_Unitaire) : CodeP est une clé candidate.

2.4.2 Clé Primaire


La clé primaire est une clé candidate ; en effet, chaque relation doit obligatoirement avoir une clé
primaire.

2.4.3 Clé Secondaire


C’est une clé candidate qui n’a pas été retenu comme clé primaire.

2.4.4 Clé Etrangère


Si un attribut est une clé primaire d’une relation 1 et figure dans une relation 2, toutes les valeurs
prises par cet attribut dans la relation 2 doivent obligatoirement exister dans la relation 1.
Exemple :
Soit les relations : Client (CodeC, Nom, Crédit)
Facture (NumFact, Date, Montant, CodeC)
CodeC est une clé étrangère dans la relation Facture.

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.

3 Les contraintes d’intégrité structurelles


Les contraintes d’intégrité complètent la définition du schéma relationnel et garantissent la
cohérence des données dans la base.

3.1 Contrainte de domaine

A chaque attribut est associé un domaine conformément auquel il doit être manipulé.

3.2 Contrainte d’unicité de la clé primaire


Toute relation doit avoir une clé primaire permettant d’identifier ses tuples. Les valeurs prises par
une clé primaire doivent être uniques.
Les valeurs NULL en modèle relationnel sont indéterminées.

3.3 Contrainte Entité

Chaque attribut participant à la clé primaire ne peut jamais être nul.

3.4 Contrainte de référence ou d’intégrité référentielle

Une clé étrangère dans une relation R1 doit être soit une valeur nulle, soit une valeur d’une clé
dans une relation R2.

4 Les règles de passage du modèle E /A au modèle relationnel


* Chaque entité devient une relation ;
* Chaque propriété ou rubrique devient un attribut ;

Mbarek DHAHRI 17
Bases de données Le modèle relationnel

* L’identifiant de l’entité devient une clé primaire de la relation ;


* Liaison 1 à plusieurs : migration de la clé primaire du père dans le fils ;

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)

* Liaison plusieurs à plusieurs

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

Enseignant (CIN, Nom, Prénom)


Matière (Nom_mat, Coef)
Enseigner (CIN, Nom_mat, Nbre_heures)

Mbarek DHAHRI 18
Bases de données Le modèle relationnel

* Liaison un à un
1,1 0,1
E1 E2

- L’identifiant de E2 devient un attribut (clé étrangère) dans E1


Exemple :

Facture Commande
Num_fact Num_com
1,1 Facturation 0,1
Date_fact Date_com
Montant

Facture (Num_fact, Date_fact, Montant, # Num_com)


Commande (Num_com, Date_com)
Exercice :
Traduire les modèle E /A des deux applications du chapitre précédent en modèle relationnel.

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).

5.1 Dépendance fonctionnelle

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.

5.1.1 Dépendance fonctionnelle partielle


Il existe un DF partielle entre A et B si et seulement si il existe S ⊂ A telle que S  B.
Exemple :
CIN, numclasse  âge ; (CIN  âge)

5.1.2 Dépendance fonctionnelle totale


Lorsqu’il n’existe pas une DF partielle entre A et B, on dit qu’il existe une DF totale.
Exemple : CIN  Nom

5.1.3 Dépendance fonctionnelle transitive


A détermine C transitivement si et seulement si il existe B telle que A  B et B  C.
Exemple :
NCE  nom_classe : NCE  num_classe Et num_classe  nom_classe
Une DF qui n’est pas transitive est dite directe.

Mbarek DHAHRI 20
Bases de données Le modèle relationnel

5.2 Les formes normales

5.2.1 1ère Forme Normale


Une relation est en 1ère forme normale si elle possède un identifiant et si tous les attributs sont
atomiques (non décomposables).
Exemple :
Personne (CIN, Nom, Adresse) : suivant le cas, on peut décomposer ou conserver l’attribut
adresse.

5.2.2 2ème Forme Normale


Une relation est en 2ème F.N si :
- Elle est en 1ère F.N
- Toutes les DF qu’elle contient sont élémentaires (pas de DF partielles)
Si la clé de la relation est composée d’un seul attribut, elle est en 2ème F.N. Sinon, il faut
décomposer la relation en autant de relation qu’il faut.
Exemple :
R (NV, Type, Puissance, Couleur)
NV, Type  Puissance est une DF partielle puisque Type  Puissance
 Il faut décomposer la relation
R1 (Type, Puissance) R2 (NV, #Type, Couleur)

5.2.3 3ème Forme Normale


Une relation est en 3ème F.N si :
- Elle est en 2ème F.N
- Toutes les DF qu’elle contient sont directes (éliminer la transitivité entre la clé et les
autres attributs non clé)
Exemple :
R (NV, Type, Puissance, Marque, Couleur)
NV  Puissance NV  Marque NV  Type
Type  Puissance Type  Marque
 Il faut décomposer la relation
R1 (Type, Puissance, Marque) R2 (NV, #Type, Couleur)

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

Chapitre 4 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

Pilote 1 ∪ Pilote 2 PLNUM VILLE


100 PARIS
101 PARIS
120 PARIS
130 TOUL
140 TOUL

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

2.4 Produit cartésien

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

Pilote ⊗ Avion PLNUM ADR AVNOM CAP


103 NICE AIRBUS 350
103 NICE AIRBUS 350
106 NICE BOING 250
106 NICE 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

Les pilotes dont l’adresse est « TOUL » ?


σ(ADR=’TOUL’)(Pilote)
Pilote PLNUM PLNOM ADR
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

Vol VOLNUM AVNUM PLNUM


IT500 110 100
IT501 130 100
IT503 110 100
IT504 110 120
IT505 120 120
IT506 130 110

Requête : ensemble des pilotes en service avec les numéros des vols et des avions
correspondants :
Pilote >< Vol
Pilote. PLNUM =Vol . PLNUM

PLNUM PLNOM ADR VOLNUM AVNUM PLNUM


100 JEAN PARIS IT500 110 100
100 JEAN PARIS IT501 130 100
100 JEAN PARIS IT503 110 100
120 PAUL PARIS IT504 110 120
120 PAUL PARIS IT505 120 120

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)

Exprimer les requêtes ci-dessous en langage algébrique :

R1 : Les produits de couleur bleu.


R2 : Quels sont les produits dont le prix dépasse 10 et qui existent en quantité < 100.
R3 : Quels sont les clients dont le crédit a dépassé le crédit max.
R4 : Quels sont les couleurs utilisées.
Mbarek DHAHRI 28
Bases de données L’algèbre relationnelle
R5 : Quelles sont les villes ou nous avons des clients.
R6 : Quels sont les clients qui ont passé des commandes.
R7 : Quels sont les clients qui n’ont pas passé des commandes.
R8 : Quels sont les produits commandés par le client ‘C1’.
R9 : Quels sont les clients qui ont commandés un produit rouge.
R10 : Quels sont les produits qui n’ont pas été commandés par le client de nom ‘X’.
R11 : Quels sont les clients qui ont commandés tous les produits rouges.

Solution

R1 : ∏CODP, LIBELE (σCOULEUR =’Bleu’ (Produit))


R2 : ∏CODP, LIBELE (σPU >10 AND QTES <100 (Produit))
R3 : ∏CODC, NOM (σCREDIT > CREDITMAX (Client))
R4 : ∏COULEUR(Produit)
R5 : ∏VILLE(Client)
R6 : ∏CODC (Commande)
R7 : ∏CODC(Client) - ∏CODC (Commande)
R8 : ∏CODP (∏NC (σCODC =’C1’ (Commande)) >< ∏NC, CODP (Lign-Comm))
NC

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

>< ∏NC, CODP (Lign-Comm))


NC

R11 : ∏CODC, CODP (∏CODC, NC (Commande) >< ∏NC, CODP (Lign-Comm)) ÷


NC

∏CODP (σCOULEUR =’Rouge’ (Produit))

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

Chapitre 5 SQL : Langage de définition de données (LDD)

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

3.1 Création d’une table


CREATE TABLE <table>
(colonne 1 Type1 [DEFAULT <valeur>] [NOT NULL] [Contrainte]

colonne n Typen)

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.

3.2 Contraintes d’intégrités

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.

3.2.1 Contrainte PRIMARY KEY


Indique la clé primaire de la table (contrainte d’intégrité d’entité). Aucune des colonnes qui
composent cette clé ne doit avoir une valeur NULL.
- Pour une contrainte sur une colonne : PRIMARY KEY
- Pour une contrainte sur une table : PRIMARY KEY (colonne1, colonne2, …)
Exemple :
- Contrainte sur une colonne :
CREATE TABLE EMP
(Matricule NUMBER (5) CONSTRAINT PKEMP PRIMARY KEY, Name CHAR (20))
- Une contrainte de colonne peut être mise au niveau de la table
CREATE TABLE EMP
(Matricule NUMBER (5),
Name CHAR (20),
CONSTRAINT PKEMP PRIMARY KEY (Matricule))
- Une contrainte qui porte sur plusieurs colonnes ne peut être indiquée que comme
contrainte de table
CREATE TABLE PARTICIPATION
(Matricule NUMBER(5),

Mbarek DHAHRI 33
Bases de données Le langage SQL
CodeP CHAR(10),
CONSTRAINT PKPART PRIMARY KEY (Matricule, CodeP))

3.2.2 Contrainte UNIQUE


Interdit qu’une colonne (ou la concaténation de plusieurs colonnes) contienne deux valeurs
identiques.
- Pour une contrainte sur une colonne : UNIQUE
- Pour une contrainte sur une table : UNIQUE (colonne1, colonne2, …)

3.2.3 Contrainte FOREIGN KEY … REFERENCES


- Pour une contrainte sur une colonne :
REFERENCES tableref [ (col1) ]
[ON DELETE CASCADE]
- Pour une contrainte sur une table
FOREIGN KEY (colonne1, colonne2, …)
REFERENCES tableref [ (col1, col2, …) ]
[ ON DELETE CASCADE ]
Indique que la concaténation de colonne1, colonne2, … (ou la colonne que l’on définit pour une
contrainte sur une colonne) est une clé étrangère qui fait référence à la concaténation des
colonnes col1, col2, … de la table tableref. Si aucune colonne de tableref n’est indiquée, c’est la
clé primaire de tableref qui est pris par défaut.
col1, col2, … doivent avoir la contrainte PRIMARY KEY ou UNIQUE. Ceci implique qu’une
valeur de colonne1, colonne2, … va référencer une et une seule ligne de tableref.
L’option « ON DELETE CASCADE » implique que la suppression d’une ligne de tableref va
entrainer automatiquement la suppression des lignes qui la référencent dans la table.

3.2.4 Contrainte CHECK


CHECK (condition) : donne une condition que la ou les colonnes devront vérifier.

3.2.4 Exemples de contraintes


Soi la base de données dont le schéma relationnel est le suivant :
Client (CodeClient, NomClient, PrénomClient, Ville, Tel, Age)
Produit ( CodeProduit, LibellePreduit, Prix_achat, Prix_Vente, qtéStock, #codeFour)
Fournisseur (CodeFour, NomFour, PrénomFour,AdresseFour, TelFour, FaxFour)

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 :

CREATE TABLE client (


CodeClient CHAR(4) CONSTRAINT PK_Client PRIMARY KEY,
NomClient VARCHAR2(30) CONSTRAINT nn_client NOT NULL,
PrenomClient VARCHAR2(30),
Ville VARCHAR2(50),
Tel NUMBER (8),
Age INTEGER CHECK (Age BETWEEN 20 AND 150));

2/ Création la table produit :

CREATE TABLE produit (


CodeProduit CHAR(3) CONSTRAINT PK_Code PRIMARY KEY,
LibelléProduit VARCHAR2 (30),
Prix_achat NUMBER (15,3),
Prix_vente NUMBER (15,3),
CodeFour CHAR(3) CONSTRAINT FK_four FOREIGN KEY (CodeFour)
REFERENCES Fournisseur (CodeFour) ON DELETE CASCADE) ;
3/ Création la table ligne_facture :

CREATE TABLE ligne_facture(


Codefacture NUMBER (4),
CodeProduit NUMBER (2),
Quantité INTEGER,
CONSTRAINT PK_Ligne PRIMARY KEY (codefacture, codeproduit),
CONSTRAINT FK_Produit FOREIGN KEY (CodeProduit) REFERENCES produit
(Codeproduit),

CONSTRAINT FK_Facture FOREIGN KEY (Codefacture) REFERENCES Facture


(CodeFacture)) ;

Mbarek DHAHRI 35
Bases de données Le langage SQL

3.3 Modification de la structure d’une table

Deux types de modification sont possibles : ajout d’une colonne (après toutes les autres
colonnes), et modification d’une colonne existante.

3.3.1 Ajout d’une colonne – ADD


ALTER TABLE table
ADD (col1 type [(taille)], col2 type [(taille)], …)
Permet d’ajouter une ou plusieurs colonnes à une table existante. Les types possibles sont les
mêmes que ceux décrits avec la commande CREATE TABLE.
L’attribut « NOT NULL » peut être spécifié seulement si la table est vide (si la table déjà contient
des lignes, la nouvelle colonne sera nulle dans ces lignes existantes et donc la condition NOT
NULL ne pourra être satisfaite)
Exemple :
Ajouter la colonne Fax_client à la table client :

ALTER TABLE client


ADD (Fax_client CHAR(10))

3.3.2 Modification d’une colonne – MODIFY


ALTER TABLE table
MODIFY (col1 type1 [(taille)], col2 type2 [(taille)], …)
Col1, Col2, … sont les noms des colonnes que l’on veut modifier. Elles doivent bien sûr déjà
exister dans la table. Type1, type2, … sont les nouveaux types que l’on désire attribuer aux
colonnes.
Il est possible de modifier la définition d’une colonne, à condition que la colonne ne contienne
que des valeurs NULL ou que la nouvelle définition soit compatible avec le contenu de la
colonne :
• on ne peut pas diminuer la taille maximale d’une colonne ;
• on ne peut spécifier « NOT NULL » que si la colonne ne contient pas de valeur nulle.
Mais, il est toujours possible d’augmenter la taille maximale d’une colonne, tant qu’on ne
dépasse pas les limites propres à SQL, et on peut dans tous les cas spécifier « NULL » pour
autoriser les valeurs nulles.

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))

3.4 Suppression d’une table


DROP TABLE table [CASCADE CONSTRAINTS] ;

Le mot clé « CASCADE CONSTRAINTS » permet de supprimer toutes les contraintes


d’intégrité référentielle qui se réfèrent aux clés primaires de table à supprimer.

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

4.1 Création d’une Vue

CREATE VIEW vue (col1, col2 …) AS SELECT …


La spécification des noms des colonnes de la vue est facultative : par défaut, les colonnes de la
vue ont pour nom les noms des colonnes résultat du SELECT.
Exemple :
CREATE VIEW EMP10 AS SELECT * FROM EMP WHERE DEPT = 10

4.2 Suppression d’une Vue

DROP VIEW vue

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.

5.1 Création d’un index

CREATE [UNIQUE] INDEX nom-index ON table (col1, col2)


Exemple : CREATE UNIQUE INDEX idx_nom ON EMP (NOME)

5.2 Suppression d’un index

DROP INDEX nom_index


Un index est automatiquement supprimé dés qu’on supprime la table à laquelle il appartient.

6 Privilèges d’accès à la base


Tout utilisateur doit communiquer son nom d’utilisateur et son mot de passe pour pouvoir
accéder à la base. C’est ce nom d’utilisateur qui déterminera les droits d’accès aux objets de la
base.
Les ordres GRANT et REVOKE permettent de définir les droits de chaque utilisateur sur les
objets de la base.

6.1 Attribution de droits : GRANT

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

6.2 Suppression de droits : REVOKE


Un utilisateur ayant accordé un privilège peut le reprendre à l’aide de l’ordre REVOKE :
REVOKE privilèges ON table/vue FROM utilisateur

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

Chapitre 6 SQL : Langage de manipulation de données (LMD)

1 Interrogation des données : SELECT


La syntaxe générale de l’ordre SELECT est la suivante :
SELECT [DISTINCT] { * | <nom_de_relation>.<nom_d’attribut> [alias] |
<nom_d’attribut> [alias] [, ...] }
FROM [<nom_d’utilisateur>.]<nom_de_relation> [alias] [, ...]
[WHERE <condition>]
[GROUP BY <nom_d’attribut> [, ...] [HAVING <condition>] ]
[ {UNION | INTERSECT | MINUS} <commande_SELECT>
[ ORDER BY {<nom_d’attribut> | <numéro_de_colonne>} [{ASC | DESC}] [, ... ]

1.1 Clause SELECT

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

1.2 Clause FROM

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.

1.3 Clause WHERE

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

1.4.1 Jointure d’une table à elle-même


Il peut être utile de rassembler des informations venant d’une ligne d’une table avec des
informations venant d’une autre ligne de la même table.
Dans ce cas, il faut renommer au moins l’une des deux tables à fin de pouvoir préfixer sans
ambiguïté chaque nom de colonne.
Exemple :
Listes des employés avec qui ont un supérieur, en indiquant pour chacun le nom de son
supérieur :
SELECT EMP.NOME EMPLOYE, SUPE.NOME SUPERIEUR
FROM EMP, EMP SUPE
WHERE EMP.SUP = SUPS.MATR

1.4.2 Jointure externe


Le SELECT suivant donnera la liste des employés et de leur département :
SELECT DEPT.DEPT, NOMD, NOME
FROM DEPT, EMP
WHERE DEPT.DEPT = EMP.DEPT
Dans cette sélection, un département qui n’a pas d’employé n’apparaîtra jamais dans la liste,
puisqu’il n’y a aura dans le produit cartésien des deux tables aucun élément ou l’on trouve une
égalité des colonnes DEPT.
Le (+) ajouté après un nom de colonne peut s’interpréter comme l’ajout, dans la tables à laquelle
la colonne appartient, d’une ligne fictive qui réalise la correspondance avec les lignes de l’autre
table, qui n’ont pas de correspondant réel.
Pour avoir une liste des divers départements, avec leurs employés s’ils en ont, sans omettre les
départements vides, on écrira alors :
SELECT DEPT.DEPT, NOMD, NOME
FROM DEPT, EMP
WHERE DEPT.DEPT = EMP.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’)

1.5.1 Sous-interrogation à une ligne et une colonne


Dans ce cas, le SELECT imbriqué équivaut à une valeur.
WHERE exp op (SELECT …)
Ou op est un des opérateurs : = , !=, <, >, <=,>=
Exp est toute expression légale
Exemple :
Listes des employés travaillant dans le même département que JOHN :
SELECT NOME
FROM EMP
WHERE DEPT = ( SELECT DEPT FROM EMP
WHERE NOME =’ JOHN ’)

1.5.2 Sous-interrogation ramenant plusieurs lignes


Une sous-interrogation peut ramener plusieurs lignes à condition que l’opérateur de comparaison
admette à sa droite un ensemble de valeurs.
Les opérateurs permettant de comparer une valeur à un ensemble de valeurs sont :
• l’opérateur IN

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 »

1.5.3 Sous-interrogation ramenant plusieurs colonnes


Il est possible de comparer le résultat d’un SELECT ramenant plusieurs colonnes à une liste de
colonnes. La liste de colonnes figurera entre parenthèse à gauche de l’opérateur de comparaison.
• avec une seule ligne sélectionnée :
WHERE (exp1, exp2,…) op (SELECT …)
• avec plusieurs lignes sélectionnées :
WHERE (exp1, exp2,…) op ANY (SELECT …)
WHERE (exp1, exp2,…) op ALL (SELECT …)
WHERE (exp1, exp2,…) IN (SELECT …)
WHERE (exp1, exp2,…) NOT IN (SELECT …)
Ou op est l’un des opérateurs = ou !=
Les expressions figurant dans la liste entre parenthèses seront comparées à celles qui sont
ramenées par le SELECT.

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 ’)

1.5.4 Clause [NOT] EXISTS


La clause EXISTS est suivie d’une sous-interrogation entre parenthèses, et prend la valeur vrai
s’il existe au moins une ligne satisfaisant les conditions de la sous-interrogation.
Exemple :
Liste des noms des départements qui ont au moins un employé ayant un salaire plus de 10000
dinars :
SELECT NOMD FROM DEPT
WHERE EXISTS (SELECT NULL FROM EMP
WHERE DEPT = DEPT.DEPT AND SAL > 10000)

1.6 Fonctions de groupes


Les fonctions de groupes peuvent apparaître dans le SELECT ou le HAVING.
• COUNT(*) : compte le nombre de lignes ;
• COUNT(col) : compte le nombre de valeurs non nulles de la colonne ;
• COUNT(DISTNCT col) : compte le nombre de valeurs non nulles différentes de la
colonne ;
• SUM : calcule la somme des valeurs de l’attribut (de type numérique) ;
• AVG : calcule la moyenne des valeurs de l’attribut ;
• MAX : recherche la plus grande valeur ;
• MIN : recherche le minimum.
Les valeurs NULL sont ignorées par les fonctions de groupe. Ainsi SUM(col) est la somme des
valeurs qui ne sont pas égales à NULL de la colonne ‘col’.
Exemple :
(a) Nombre des employés :
SELECT COUNT(*) FROM EMP
(b) Somme des commissions du département 10 :
SELECT SUM(comm) FROM EMP WHERE DEPT = 10

Mbarek DHAHRI 47
Bases de données Le langage SQL

1.7 Clause GROUP BY

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

1.8 Clause HAVING

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

1.9 Clause ORDER BY

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

1.10 Opérateurs ensemblistes

Pour cette section, on supposera que deux tables EMP1 et EMP2 contiennent les informations sur
deux filiales de l’entreprise.

1.10.1 Opérateur UNION


L’opérateur UNION permet de fusionner deux sélections de tables pour obtenir un ensemble de
ligne égal à la réunion des lignes des deux sélections. Les lignes communes n’apparaîtront qu’une
fois.
Exemple : Listes des ingénieurs des deux filiales :
SELECT * FROM EMP1 WHERE POSTE = ‘INGENIEUR’
UNION
SELECT * FROM EMP2 WHERE POSTE = ‘INGENIEUR’

Mbarek DHAHRI 49
Bases de données Le langage SQL

1.10.2 Opérateur INTERSECT


L’opérateur INTERSECT permet d’obtenir l’ensemble des lignes communes à deux
interrogations.
Exemple :
Liste des départements qui ont des employés dans les deux filiales :
SELECT DEPT FROM EMP1
INTERSECT
SELECT DEPT FROM EMP2

1.10.3 Opérateur MINUS


L’opérateur MINUS permet d’ôter d’une sélection les lignes obtenues dans une deuxième
sélection.
Exemple :
Liste des départements qui ont des employés dans première filiale mais pas dans la deuxième :
SELECT DEPT FROM EMP1
MINUS
SELECT DEPT FROM EMP2

2 Manipulation des données


La manipulation des données dans la base se fait à travers les commandes SQL suivantes :
• INSERT : ajout de nouvelles lignes ;
• UPDATE : mise à jour de lignes ;
• DELETE : suppression de lignes.

2.1 Insertion

INSERT INTO table (col1, … , coln) VALUES (val1, …, valn)


Ou
INSERT INTO table (col1, … , coln)
SELECT …
Table est le nom de la table sur laquelle porte l’insertion
col1, … , coln est la liste des noms des colonnes pour lesquelles on donne une valeur
Exemple : INSERT INTO dept (dept, nomd, lieu) VALUES (1,’FINANCES’,’TUNIS’)

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

L’ordre DELETE permet de supprimer des lignes d’une table.


DELETE FROM table [WHERE prédicat]
Si la clause WHERE n’est pas précise, toutes les lignes de la table sont supprimées.
Exemple : DELETE FROM dept WHERE dept = 10

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.

Etude de cas n° 2 : Cas de l’entreprise « CYBERMED »


L’entreprise « CYBERMED » veut automatiser la gestion de son parc véhicule pour une
meilleure exploitation. Son parc contient un ensemble de véhicules, caractérisés chacun par son
numéro d’immatriculation, sa marque, son modèle, sa puissance et sa date de mise en service.
Chaque véhicule est sous la responsabilité d’un employé (Directeur, Chauffeur, etc.) caractérisé
par son matricule, son nom et prénom, son grade et sa fonction. Un employé peut avoir une ou
plusieurs voitures à sa disposition selon son grade.
Les employés reçoivent un ensemble de bons de carburant, pour pouvoir s’approvisionner auprès
des stations de service. Un bon est qualifié par son numéro, sa date d’utilisation, et le nombre de
litre.
Par ailleurs, « CYBERMED » s’occupe de la maintenance de ses voitures, pour cela elle travaille
avec plusieurs garagistes qui réparent différents types de voitures, chaque garagiste est caractérisé
par son numéro, sa raison sociale, son adresse, son téléphone et son fax. Les voitures sont
envoyées aux garagistes selon leur disponibilité.
Travail demandé : Proposez un modèle entité / association.
Mbarek DHAHRI 53
Bases de données Travaux Dirigés
Etude de cas n°3 : Les stages à « l’UMLT »
L’UMLT a pour tradition d’organiser ses stages de la manière suivante.
Chaque année, le département d’informatique impose un stage obligatoire à ses étudiants de
deuxième année. Chaque étudiant doit effectuer un stage de 10 semaines dans une entreprise avec
laquelle un accord est signé par l’UMLT.
Pour cela, le département dispose d’une liste d’entreprises ayant déjà proposé des stages et leur
écrit pour les inciter à reprendre des étudiants en stage.
Au vu de celles-ci, les étudiants prennent contact avec les entreprises qui les intéressent.
Quand les conventions de stage sont signées, chaque stagiaire se voit désigner un enseignant pour
l’encadrer en stage, appelé (marraine ou parrain) de l’étudiant.
La marraine de l’étudiant doit veiller au bon déroulement du stage et aller rendre visite à
l’étudiant dans son entreprise d’accueil.
Chaque enseignant du département doit ainsi, quelle que soit sa spécialité, encadrer au moins 4
étudiants.
Afin de mieux répartir les enseignants, le chef de département doit connaître les entreprises que
les enseignants ont déjà visitées lors des stages des années précédentes.
Le département d’informatique de l’UMLT dispose des renseignements suivants :
- Pour chaque entreprise : son nom, son adresse, son type (publique, SSII, …..), le nom de la
personne de l’entreprise qui assure le contact avec l’UMLT ;
- Pour chaque étudiant : son numéro, son nom ,sa date de naissance ,son groupe de TP , et ,quand
sa convention de stage est signée, le nom de son entreprise d’accueil et la date de signature de la
convention, puis le nom de sa marraine(ou parrain) ;
- Pour chaque enseignant : son nom, son prénom, sa fonction, son numéro de téléphone, les
entreprises qu’il a déjà visitées, avec pour chacune l’année de sa dernière visite.
REMARQUE : une entreprise peut accueillir plusieurs stagiaires simultanément. Dans ce cas,
tous les stagiaires de l’entreprise n’ont pas nécessairement la même marraine (ou le même
parrain).
Travail demandé : Proposez un modèle entité / association.

Mbarek DHAHRI 54
Bases de données Travaux Dirigés

TD n° 2 : Modèle relationnel

Pour chacun des modèles Entité/Association suivants, déduire le modèle relationnel.


1.

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).

Exercice 2 : Base de données BANQUE


Soit les relations suivantes :
Client (NumSSC1, Non Cl, RueCl, VilleCl, NumEmpl)
Employe (NumEmpl, NomEmpl, NumTelEmpl, NomFiliale)
Epargne (NumEp, SoldeEp, NumSSC1)
Emprunt (NumEmprunt, MttEmprunt, NumSSC1)
Filiale (NomFiliale, CapitalFil, RueFil, VilleFil)

Description des données en langage naturel :


Un client est une personne ayant un compte à la banque, il a un nom, un numéro de sécurité
sociale et une adresse sous forme du nom de la rue et de la ville.
Un employé est une personne travaillant dans une filiale de la banque, il a un nom et un numéro
de téléphone. Pour chaque client est désigné un employé de la banque qui est l’interlocuteur
privilégié du client.

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.

Exprimez les requêtes ci-dessous en langage algébrique :

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 :

ABONNE (matricule:nombre(15), nom:chaîne(15), adresse:chaîne(50),


téléphone:nombre(10), date_adhésion:date, date_nais:date, csp:chaîne(15))
THEME (code_theme:chaîne(3), intitulé:chaîne(15))
MOT_CLE (code_motcle:nombre(8), mot_clé:chaîne(20))
AUTEUR(code_auteur:nombre(10), nom_auteur:chaîne(15), adresse_auteur:chaîne(50)
EDITEUR(code_editeur:nombre(10),nom_editeur:chaîne(15), dresse_editeur:chaîne(50)
DECRIT (code_mot:nombre(8), code_catalogue#:nombre(10))
ECRIT (code_auteur#:nombre(10), code_catalogue#:nombre(10))
LIVRE (code_catalogue:nombre(10), titre:chaîne(150), code_theme#:chaîne(3))
EXEMPLAIRE (code_rayon#:chaîne(7), usure:nombre(1), date_acquisition:date,
année_édition:nombre(4), code_catalogue#:nombre(10), code_editeur#:nombre(10))
EMPRUNT(code_rayon#:chaîne(7), date:date, matricule#:nombre(10), date_retour:date)

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.

Créer les différentes tables en utilisant le langage SQL.

Mbarek DHAHRI 61
Bases de données Travaux Dirigés

TD n° 4 : SQL (LMD)
Exercice 1
Soit les deux tables suivantes :

CLIENT(Num_client, Nom_cl, Adr_cl, Nationalité_cl)


OPERATION(Code_op, type_op, date_op, Num_client#)

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

[1] Georges GARDARIN « Bases de données » Eyrolles 2003.

[2] Christian Soutou « SQL pour Oracle » 3ème édition Eyrolles

[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 »

[5] « SQL Tutorial – Learn SQL Online » disponible sur le site :


« http://www.sql-statements.com/ »

Mbarek DHAHRI 64
Bases de données Annexe

Annexe : Différences des types entre SQL Server et Oracle

SQL Server Oracle


INTEGER NUMBER(10)
SMALLINT NUMBER(6)
TINYINT NUMBER(3)
REAL FLOAT
FLOAT FLOAT
BIT NUMBER(1)
VARCHAR(n) VARCHAR2(n)
TEXT CLOB
IMAGE BLOB
BINARY(n) RAW(n) or BLOB
VARBINARY RAW(n) or BLOB
DATETIME DATE
SMALL-DATETIME DATE
MONEY NUMBER(19,4)
NCHAR(n) CHAR (n*2)
NVARCHAR(n) VARCHAR (n*2)
SMALLMONEY NUMBER(10,4)
TIMESTAMP NUMBER
SYSNAME VARCHAR2(30),
VARCHAR2(128)

Mbarek DHAHRI 65

Vous aimerez peut-être aussi