Vous êtes sur la page 1sur 164

Module : Informatique 3

Filière: GE/GM
S3
Prof. Driss AIT OMAR

Année Universitaire: 2021-2022


Année Universitaire 2020-2021 | 1
Objectifs du cours
- ½ Module: Initiations aux bases de données

• S’initier et se familiariser avec quelques concepts sur des bases de


données,
• Savoir modéliser une base de données et sa manière de gestion,
• Pratiquer le langage de manipulation de données: de requêtes SQL,

Année Universitaire 2020-2021 | 2


Plan

Chapitre 0: Introduction Générale


Chapitre 1: Méthode MERISE
✓ Présentation de la méthode
✓ Conception du MCD
✓ Passage du MCD à MLD
Chapitre 2: Langage SQL
✓ LDD
✓ LMD
Année Universitaire 2020-2021 | 3
Chapitre 0: Introduction Générale

Année Universitaire 2020-2021 | 4


Références bibliographique

1) Carrez C., Des Structures aux Bases de


Données, Masson
2) Gardarin G., Maîtriser les Bases de
Données: modèles et langages, Eyrolles
3) Marcenac, P., SGBD relationnels,
Optimisation des performances,
Eyrolles.

Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données 5


Chapitre 0: Introduction

Introduction

Système

❑ Un système peut être vu comme un ensemble d’éléments matériels et immatériels


reliés entre eux et caractérisés par un ensemble de propriétés.
❑ Aussi, c’est une entité identifiable, et susceptible d’être évolué dans le temps.

Exemples: Entreprises, Familles, Bibliothèques, …

Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données 6 Année Universitaire 2020-2021 | 6
Chapitre 0: Introduction

Introduction

Système

❑ Un système peut être contrôler ou diriger par un autre pour qu’il atteint des besoins
spécifiques: système de pilotage.
❑ Le système possède un ensemble de moyens matériels, de personnels, … nécessaires
pour assurer ses activités; c’est ce qu’on appel le système opérant ou de production.

système de
pilotage
→ Flux d’information
système
d’information

Client(Demande) Livraison
système
opérant
Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données 7 Année Universitaire 2020-2021 | 7
Chapitre 0: Introduction

Introduction

Système d’information

❑ Un système d’information (noté SI) est un ensemble organisé de ressources


(matériels, logiciels, personnel et données ) qui permet de regrouper, de classifier,
de traiter et de diffuser de l'information sur un environnement donné;

❑ Un SI représente l'ensemble des éléments participant à la gestion, au stockage, au


traitement, au transport et à la diffusion de l'information au sein d'une
organisation..

Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données 8 Année Universitaire 2020-2021 | 8
Chapitre 0: Introduction

Introduction

Système d’information

❑ Exemple
▪ Vente de produits (fruits, légumes) par une coopérative :
Produits achetés à un producteur et revendus à des clients
▪ Différentes activités :
Achat de lot à un producteur, vente de produit à un client, suivi de l’ évolution des
stocks, etc.
▪ Informations à gérer :
Identification des produits avec prix de vente, achat et quantités, coordonnées des
producteurs et des acheteurs, etc.

Système d’information est une représentation opérationnelle de la réalité

Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données 9


Chapitre 0: Introduction

Système d’information

Rôles du Système d’information

❑ Le Rôle du Système d’information


❖ La collecte des informations
❖ Le stockage des informations
❖ Le traitement des informations
❖ La diffusion des informations

Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données 10


Chapitre 0: Introduction

Système d’information

Système d’information: Vue Informatique

❑ L’informatisation du SI nécessite la mise en place de supports matériels et


logiciels de stockage des données.
❑ L’information est numérisée et conservée sous la forme de fichiers.

Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données 11


Chapitre 0: Introduction

Système d’information

Système d’information: Vue Informatique

Les limites de l'utilisation des fichiers


❑ L'utilisation de fichiers impose à l'utilisateur :
▪ de connaître l'organisation des fichiers qu'il utilise afin de pouvoir accéder aux
informations dont il a besoin ;
▪ d'écrire des programmes pour manipuler ces informations.
❑ Pour des applications nouvelles, l'utilisateur devra écrire de nouveaux
programmes et il pourra être amené à créer de nouveaux fichiers qui contiendront
peut-être des informations déjà présentes dans d'autres fichiers.

Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données 12


Chapitre 0: Introduction

Système d’information

Système d’information: Vue Informatique

❑ Telles applications sont :


▪ rigides,
▪ contraignantes,
▪ longues et coûteuses à mettre en œuvre.
❑ Les données associées sont :
▪ mal définies et mal désignées,
▪ redondantes,
▪ peu fiables

Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données 13


Chapitre 0: Introduction

Système d’information

Système d’information: Vue Informatique

❑ Les utilisateurs, quant à eux, ne veulent plus de systèmes d'information constitués


d'un ensemble de programmes inflexibles et de données inaccessibles à toute
personne non spécialiste ;
❑ ils souhaitent des systèmes d'informations globaux, cohérents, directement
accessibles (sans qu'ils aient besoin soit d'écrire des programmes soit de
demander à un programmeur de les écrire pour eux) et des réponses immédiates
aux questions qu'ils posent.

Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données


14
Chapitre 0: Introduction

Bases de données

Une base de données représente un ensemble de données de


l’entreprise mémorisé par un ordinateur, qui est utilisé par de
nombreuses personnes et dont l’organisation est régie par un modèle
de données.

Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données


15
Chapitre 0: Introduction

Bases de données

Banques de données

Une banque de données représente l’ensemble des informations


mémorisées par un ordinateur concernant un domaine scientifique,
économique ou culturel donné et cela d’une façon aussi exhaustive
que possible

Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données


16
Chapitre 0: Introduction

Bases de données

Exemple de base de données

⚫ La base de données d’une société automobile


– Contient les informations ayant un rapport avec la
gestion de la société
– Caractère de confidentialité

Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données


17
Chapitre 0: Introduction

Bases de données

Critères d’une base de données:

⚫ Bonne représentation du monde réel


⚫ Non redondance de l’information
⚫ Indépendance des programmes par rapport aux
données
⚫ Sécurité et confidentialité des données
⚫ Partage des données

Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données


18
Chapitre 0: Introduction

Bases de données

Modèle de données:

Un modèle de données représente un ensemble de


concepts qui permet de construire une
représentation organisationnelle de l’entreprise.

Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données


19
Chapitre 0: Introduction

Bases de données

Système de gestion des bases de données (SGBD):

Un SGBD représente un ensemble coordonné de


logiciels qui permet de décrire, mémoriser, manipuler,
traiter, interroger les ensembles de données constituant
la base. Il assure la sécurité et la confidentialité des
données dans un environnement où de nombreux
utilisateurs ayant des besoins variés peuvent interagir
simultanément sur ces ensembles de données.

Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données


20
Chapitre 0: Introduction

Bases de données

Système de gestion des bases de données (SGBD):

 Différents logiciels existent;


 Un tableur (Excel) peut être considéré comme un SGBD.
 Nous allons utiliser dans notre cours le logiciel Access comme
SGBD; Ce logiciel permet une conception aisée de bases de
données de "petite" taille avec un nombre restreint
d'utilisateurs.
 Il est à noter que plusieurs autres SGBD plus performants
(mais également plus complexes) existent par ailleurs. On peut
citer notamment Oracle, SQL Server, Paradox, MySQL,
PostgreSQL parmi beaucoup d'autres.

Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données


21
Chapitre 0: Introduction

Bases de données

SGBD: Fonctionnalités !!!

❑ Garantir la persistance des données


❑ Garantir la cohérence des données
❑ Permettre à plusieurs utilisateurs d’accéder aux
données simultanément
❑ Protéger les données en cas de problèmes
❑ Contrôler l’accès aux données confidentielles,
❑ Offrir de bonnes performances d’accès
❑ ...

Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données


22
Chapitre 0: Introduction

Bases de données

Type de base de données:

⚫ 1ère génération : les années 70


– Modèles hiérarchiques
– Modèles en réseau
⚫ 2ème génération : année 1980
– Modèles relationnels
– Modèles entités-relations
⚫ 3ème génération
– Modèles objet (SGBD : O2, ORACLE)

Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données


23
Chapitre 0: Introduction

Bases de données

1ière génération: les modèles hiérarchiques

Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données


24
Chapitre 0: Introduction

Bases de données

1ière génération: les modèles réseaux

Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données


25
Chapitre 0: Introduction

Bases de données

1ière génération: les modèles réseaux

⚫ Pour retrouver une donnée dans une telle


modélisation, il faut connaître le chemin
d’accès (les liens)
⚫ Les programmes dépendent de la structure de
données
⚫ Des SGBD : IDMS, TOTAL, MDBS-III

Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données


26
Chapitre 0: Introduction

Bases de données

2ème génération: les modèles relationnels

⚫ La structure de données est formée par un


système de relations (représentation tabulaire)
⚫ Chaque relation représente un phénomène ou
un objet du monde de l’entreprise
⚫ Une relation est un ensemble de n-uplets (n
fixe) qui correspondent chacun à une propriété
de l’objet à décrire

Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données


27
Chapitre 0: Introduction

Bases de données

2ème génération: les modèles relationnels

Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données


28
Chapitre 0: Introduction

Bases de données

2ème génération: les modèles relationnels

⚫ Il n’est plus nécessaire de décrire explicitement


les liens
⚫ Les chemins d’accès sont indépendants de la
modélisation
⚫ DES SGBD : INGRES, ORACLE, DBASE2,
ACCESS

Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données


29
Chapitre 0: Introduction

Bases de données

2ème génération: le modèle entités-relations

⚫ Modèle de représentation et de structuration des


données
⚫ Modèle sémantique
– Comprendre l’organisation des données
– Visualiser l’organisation des données
⚫ Non destiné directement à l’implémentation de ces
données
⚫ Conception d’une base de données
– Réalisation d’un modèle entités-relations
– Transformation de ce modèle en modèle relationnel
directement implémentable

Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données


30
Chapitre 0: Introduction

Bases de données

Etapes BD-SGBD

❖ Conception de BD
À partir de l'analyse du contexte, analyser les besoins :
• Quelles données retenir et stocker ? Comment les organiser ?
•Quelles contraintes à prendre en compte ? Comment les
représenter ?
❖ Programmation
Développement de requêtes et programmes pour interroger la BD Interfaces
avec d'autres applications
❖ Implémentation de SGBD
Support de nouveaux types de données, intégration de données
et d'applications, interfaces utilisateurs, langages

Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données


31
Chapitre 0: Introduction

Bases de données

Conception d’une base de données

❑ Modélisation conceptuelle indispensable avant


la conception
d’une application de base de données
❑ Plusieurs Méthodes existent:
❖ Merise
❖ Booch
❖ OMT (Object Modeling Technique)
❖ UML
Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données
32
Chapitre 0: Introduction

Bases de données

MERISE

M éthode d'
E tude et de
R éalisation ,

I nformatique pour les


S ystèmes d'
E ntreprise
Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données
33
Chapitre I. Méthode Merise
Les quartes phases de la méthode Merise:

1. La phase d'analyse :
Cette phase, qui ne sera pas étudié dans ce cours, est
une phase essentielle qui consiste à:
 étudier l'existant :
◼ y-a-t'il un système qui gère déjà tout ou partie de
l'information, qu'il s'agisse d'un logiciel ou d'un ensemble de
documents papiers ?
◼ Comment ces informations sont elles stockées?
◼ Quelles sont les informations stockées ?
◼ Que manque t-il ?
◼ Qu'est ce qui convient ou ne convient pas aux utilisateurs?

Année Universitaire 2020-2021 | 34


I. Méthode Merise
Les quartes phases de la méthode Merise:

 Interroger les futurs utilisateurs :


◼ Qu'attendent-ils du futur SGBD ?
◼ Quelles sont les opérations qu'ils désirent
automatiser ?
◼ Recueillir les informations existantes, étudier les
divers liens qui peuvent exister entre ces
informations, mettre en évidence les règles de
gestion employées, ...

Année Universitaire 2020-2021 | 35


I. Méthode Merise
Les quatres phases de la méthode Merise:

2. La phase conceptuelle :
Elle consiste à représenter l'organisation des
données de manière générale.
Elle aboutit sur la création du modèle conceptuel
des données (MCD) dans lequel les données sont
représentées sous forme d'entités liées entre elles
par des relations.

Année Universitaire 2020-2021 | 36


I. Méthode Merise
Les quartes phases de la méthode Merise:

Année Universitaire 2020-2021 | 37


I. Méthode Merise
Les quartes phases de la méthode Merise:

3. La phase logique ou organisationnelle :


Dans cette phase, la base de données sont
représentées sous une forme logique plus proche
de leur représentation réelle au sein du SGBD :
Les informations sont représentées uniquement sous
forme de tables au sein d'un modèle logique des
données (MLD).

Année Universitaire 2020-2021 | 38


I. Méthode Merise
Les quartes phases de la méthode Merise:

Année Universitaire 2020-2021 | 39


I. Méthode Merise
Les quartes phases de la méthode Merise:

4. La phase physique ou opérationnelle :


Elle consiste à construire réellement la base de
données au sein du SGBD (ici Access).
Cette partie ne sera pas décrite dans cette
section, mais dans les suivantes.

Année Universitaire 2020-2021 | 40


I. Méthode Merise
❑ A retenir :

 Les quatre phases de la méthode Merise :


 Analyse (étude de l'existant et enquête),
 Conceptuel (création du MCD),

 Logique (création du MLD),

 Physique (conception de la base de données dans


Access).

Année Universitaire 2020-2021 | 41


I. Méthode Merise

Modèle Conceptuel de données


 Après la phase d'analyse, nous pouvons commencer
à représenter les informations sous forme
conceptuelle.
 Le Modèle Conceptuel de Données (MCD) que nous
allons construire contient deux éléments principaux :
les entités et les relations.

Année Universitaire 2020-2021 | 42


I. Méthode Merise
Modèle Conceptuel de données
 Une entité est un élément du problème.
 Elle est définie par un ensemble de propriétés.
Chacune des propriétés est l'un des éléments qui
caractérise l'entité.
 Il faut distinguer une entité et une occurrence
d'entité (ou instance).
 Une entité correspond au type général d'une
donnée (ex : le type "employé") alors qu'une
occurrence d'une entité est un représentant
particulier de cette entité (l'employé "Jean Martin").

Année Universitaire 2020-2021 | 43


I. Méthode Merise
Modèle Conceptuel de données
 Une relation est un lien possible qui relie deux
entités.
 Par exemple, si un employé peut être affecté à un
entrepôt, il y aura une relation "affectation" entre
l'entité "entrepôt" et l'entité "employé". Cela ne
signifie pas nécessairement qu'il y aura affectation
pour chacun des employé, juste qu'il est possible
qu'un employé soit affecté à un entrepôt.
 Une relation peut éventuellement être reliée à plus
de deux entités et peut avoir certaines propriétés.

Année Universitaire 2020-2021 | 44


I. Méthode Merise
Modèle Conceptuel de données
 Après avoir fait une analyse aussi complète que
possible du problème à informatiser, la
construction du MCD se fait en quatre étapes :
a. Repérage des entités,
b. Construction des entités, choix des propriétés,
c. Construction des relations,
d. Choix des cardinalités.

Année Universitaire 2020-2021 | 45


I. Méthode Merise
La construction du MCD

a. Repérage des entités:


 Une entité est un composant du problème : une
personne, une facture, un livre, ...
 C'est la représentation d'un objet matériel ou
immatériel pourvu d'une existence propre et
conforme aux choix de gestion de l'entreprise.

Année Universitaire 2020-2021 | 46


I. Méthode Merise
La construction du MCD

 Comme dit plus haut, ce que l'on considère comme


entité est un type général (ex : l'entité personne
représente toutes les personnes) à ne pas
confondre avec une occurrence d'entité (Jean
Martin étant une personne, on le considère comme
une occurrence de l'entité personne).
 Une entité doit avoir une existence
indépendamment de toute autre entité.

Année Universitaire 2020-2021 | 47


I. Méthode Merise
La construction du MCD

 Exemple : On considère le problème suivant :


 Un libraire gère des œuvres littéraires. Une œuvre
est une création littéraire.
 Une œuvre a au moins un auteur et est dans une
édition (un livre).
 Une édition possède un ISBN unique et a un unique
éditeur. Elle peut contenir plusieurs œuvres.
 On veut mémoriser pour chaque édition le nombre
d'exemplaires en stock et pour chaque exemplaire
son état.

Année Universitaire 2020-2021 | 48


I. Méthode Merise
La construction du MCD: Exemple

 Dans ce problème, les entités sont :


 L’entité "œuvre" : Une création littéraire, un récit…
 L’entité "auteur" : une personne créateur d'œuvre,

 L’entité "édition" : un livre contenant une ou plusieurs


œuvres littéraires,
 L’entité "éditeur" : la société qui va imprimer les livres,

 L’entité "exemplaire" : un exemplaire physique de livre.

➢ L'ISBN, par exemple, n'est pas une entité puisqu'il


s'agit d'un élément qui caractérise l'entité "édition".

Année Universitaire 2020-2021 | 49


I. Méthode Merise
La construction du MCD: Exemple

 Exemple Liste des œuvres

ISBN Titre Auteur Editeur Stocks

2.207.30089.7 Fondation 5 Denoël 10

2.221.09973.7 L'incident Jésus 2 Laffont 7

2.070.42167.8 Chrono-Minets 5 Gallimard 8

2.290.03567.X Frankenstein 1 J'ai Lu 12

2.070.36822.X 1984 3 Gallimard 5

Liste des auteurs


Code Nom Prénom
1 Shelley Mary W.
2 Herbert Franck
3 Orwell Georges
4 Bradbury Ray
5 Asimov Isaac
Année Universitaire 2020-2021 | 50
I. Méthode Merise
La construction du MCD

b. Construction des entités


 On commence par donner un nom à chacune des
entités. Il faut ensuite rechercher les propriétés de ces
entités.
 On devra garder à l'esprit les points suivants :
 toute propriété est élémentaire (elle n'est pas la
composition d'éventuelles propriétés plus petites),
 une propriété ne doit pas être "instable" ou "calculable" :
si une propriété peut être obtenue par calcul à partir
d'autres éléments qui vont apparaitre dans la base de
données (notamment d'autres propriétés), on ne doit pas la
considérer,

Année Universitaire 2020-2021 | 51


I. Méthode Merise
La construction du MCD

 toute entité doit posséder une propriété particulière


appelée sa clé (ou identifiant).
Une clé doit caractériser de manière unique chaque
occurrence de l'entité. Par exemple, le nom de famille
d'une personne ne peut pas être considéré comme une
clé d'une entité "personne" puisque deux personnes
peuvent avoir le même nom de famille. Le numéro de
sécurité sociale est par contre tout à fait acceptable. Il
vaut mieux éviter les identifiants trop longs (on
préférera un code de quelques chiffres à un intitulé
d'une vingtaine de lettres par exemples),

Année Universitaire 2020-2021 | 52


I. Méthode Merise
La construction du MCD

 si
aucune des propriétés "naturelles" ne peut servir
de clé, on en rajoute une artificiellement (Par
exemple "CodeLivre" ou "IdAnimal").
 Chaque propriété ne doit dépendre que d'une
seule entité.

Année Universitaire 2020-2021 | 53


I. Méthode Merise
La construction du MCD

 Une entité se représente ensuite graphiquement


sous la forme d'une boite dans laquelle on indique
en titre le nom de l'entité suivi de toutes ses
propriétés. On indique d'une manière particulière
l'identifiant.

Année Universitaire 2020-2021 | 54


I. Méthode Merise
La construction du MCD

 Exemple :
 Dans l'exemple du libraire, on peut construire les
entités suivantes (les propriétés sont indiquées après
le nom de l'entité, l'identifiant est en gras) :
 œuvre : Idœuvre, titre
 Auteur : IdAuteur, nom, prénom

 édition : ISBN, titre, nb pages

 éditeur : IdEditeur, nom

 Exemplaire : IdExemplaire, état

Année Universitaire 2020-2021 | 55


I. Méthode Merise
La construction du MCD

 Notons que, dans le cas de l'édition, l'ISBN est un


identifiant tout à fait acceptable.
 Dans les autres cas, aucune des propriétés ne
convenant comme identifiant, il a fallu créer une
propriété particulière pour cet effet (Id...).

Année Universitaire 2020-2021 | 56


I. Méthode Merise
La construction du MCD
Œuvres
Auteurs
Idœuvre
Titre IdAuteur
Nom
Prénom

Editions
ISBN
Editeurs
Titre
Nb pages IdEditeur
Exemplaires
Nom
Id_livre
Etat

Année Universitaire 2020-2021 | 57


I. Méthode Merise
La construction du MCD

c. Construction des relations


 L'étape suivante consiste à énumérer toutes les
relations possibles entre entités.
 Si une relation a une chance d'apparaitre (et de
nous intéresser), alors on doit la considérer dans le
MCD. On parle également parfois d'association.
 Une relation se représente de la manière suivante :

Année Universitaire 2020-2021 | 58


I. Méthode Merise
La construction du MCD

 On notera les points suivants :


 Une relation est en général entre deux entités. Il est
possible d'avoir des relations entre plus que deux
entités.
 Par exemple, une relation Vente entre Acheteur,
Vendeur et Lieu pour une base de données de
transaction immobilière.
 Il est néanmoins souvent possible (et préférable!) de se
restreindre à des relations entre deux entités.
 Dans le cas ici, la relation Vente pourrait être
remplacée par une entité Acte de vente qui est en
relation avec l'acheteur, le vendeur et le lieu.

Année Universitaire 2020-2021 | 59


I. Méthode Merise
La construction du MCD

 Ilest tout à fait possible d'avoir plusieurs relations entre


deux entités.
 Il est également possible d'avoir une relation dite
réflexive, c'est-à-dire entre une entité et elle-même.
 Par exemple, on peut avoir une relation Responsable
entre une table employé et elle même.
◼ Dans ce cas, il convient tout de même de remarquer
que chacune des "pattes" de la relation a une
signification différente. Ici, l'une des "pattes"
signifiera est responsable de et l'autre signifiera a
comme responsable.

Année Universitaire 2020-2021 | 60


I. Méthode Merise
La construction du MCD

 Une relation peut avoir des propriétés.


Par exemple, si une relation Contient lie l'entité Facture
et l'entité Produit, elle possède certainement la
propriété "quantité" (une facture contient un produit x
en quantité y).
D'ailleurs, si une propriété dépend de plus d'une entité
(comme c'est le cas ici avec la quantité qui dépend à la
fois de la facture et du produit), c'est certainement
qu'elle dépend d'une relation, et non pas d'une entité.

Année Universitaire 2020-2021 | 61


I. Méthode Merise
La construction du MCD

 Ilfaut éviter les relations que l'on peut déduire d'autres


relations par transitivité.
Par exemple, dans une base de données gérant une
université, si on dispose d'entités étudiant, formation et
cours. On a les relations fait partie entre formation et
cours (un cours fait partie d'une formation) et
inscription entre étudiant et formation. Il est inutile
d'avoir en plus une relation inscription entre étudiant
et cours : tout étudiant inscrit à une formation est
systématiquement inscrit à tous les cours qui composent
la formation.

Année Universitaire 2020-2021 | 62


I. Méthode Merise
La construction du MCD

 Exemple :
Dans l'exemple du libraire, on a les relations
suivantes:

Année Universitaire 2020-2021 | 63


I. Méthode Merise
La construction du MCD

d. Choix des cardinalités


 Une fois les relations établies, il convient ensuite de
caractériser le nombre de fois ou chacune de ces
relations peut apparaitre réellement. Ceci se fait à
l'aide des cardinalités. Dans une relation classique
(i.e. entre deux entités), quatre cardinalités sont à
déterminer.

Année Universitaire 2020-2021 | 64


I. Méthode Merise
La construction du MCD

 minA est le nombre minimal de fois où une occurrence de l'entité A


participe à une relation du type considéré. Il s'agit en général de
0 ou 1.
 maxA est le nombre maximal de fois où une occurrence de l'entité
B participe à la relation. Il s'agit en général de 1 ou n (n pour
plusieurs fois, ou un nombre quelconque de fois).
 minB et maxB fonctionnent de la même manière, mais en
considérant l'entité B.
 Notons qu'il est souvent difficile de choisir entre une cardinalité
de type 0: n et une cardinalité de type 1: n. Il est important de
noter que ce choix a souvent peu d'importance.
Année Universitaire 2020-2021 | 65
I. Méthode Merise
La construction du MCD

 Exemple :
 Dans l'exemple du libraire, considérons la relation édite
qui existe entre les entités éditeur et édition.
 Ainsi, dans l'exemple du libraire, une édition (un livre) a
toujours un et un seul éditeur (soit un minimum de un
éditeur, et un maximum de un éditeur).
 Un éditeur par contre peut éditer au minimum une
édition et au maximum plusieurs éditions (un nombre
quelconque de fois).

Année Universitaire 2020-2021 | 66


I. Méthode Merise
La construction du MCD

 Ce qui nous donne :

 Le MCD complet est donc :

Année Universitaire 2020-2021 | 67


I. Méthode Merise
La construction du MCD

e. Cas particuliers et pièges :


 Quelques points particuliers sont à garder à l'esprit
lors de la réalisation d'un MCD.
 Un identifiant est obligatoire pour chaque entité.

 Il ne doit pas y avoir de redondance


d'informations: Une information quelconque ne doit
pas être représentée plus d'une fois dans le MCD.

Année Universitaire 2020-2021 | 68


I. Méthode Merise
La construction du MCD

 Evitez autant que possible les relations entre plus


de deux entités. Souvent, il est possible de
remplacer la relation par une entité.
 Restez dans la mesure du possible avec des
cardinalités de valeurs 0, 1 ou n. Il est de toute
manière souvent possible de se ramener à ce cas
dans les rares cas où des cardinalités d'un autre
type semblent plus naturelles. En pratique, il peut y
avoir d’autre valeurs, mais c’est très rare (exemple
du tiercé : un pari concerne exactement 3 chevaux
cardinalité 3:3)
Année Universitaire 2020-2021 | 69
I. Méthode Merise

 Dans l'idéal, il faut trouver un bon compromis entre niveau


de détail et "taille" de la base de données.
Il est toujours possible de multiplier les entités, mais il vaut
mieux le faire que si cela a vraiment du sens et un intérêt
dans le problème.
Par exemple, si on a une entité personne, on peut considérer
l'adresse comme une entité séparée (reliée à personne par
une relation "habite à") ou comme une propriété de la
personne (ce qui est fait usuellement). En règle générale, il
est plus économique de définir l'adresse comme une
propriété, mais dans un cas ou il est courant que des
personnes habitent au même endroit, la règle de non-
redondance incite plutôt à utiliser une nouvelle entité

Année Universitaire 2020-2021 | 70


I. Méthode Merise
La construction du MCD: A retenir!

 La méthode générale de construction du MCD :


 Recherche des entités,
 Recherche des propriétés (dont la clé de chaque
entité),
 Recherche des relations entre entités,

 Recherche des cardinalités (0:1, 1:1, 0: n ou 1:n ?)

Année Universitaire 2020-2021 | 71


I. Méthode Merise
Exercice : réalisation de MCD (Banque)

 Une banque désire posséder un SGBD pour


suivre ses clients. Elle désire ainsi stocker les
coordonnées de chaque client (nom, prénom adresse),
et les comptes dont elle dispose ainsi que leur solde
(sachant par ailleurs que certains compte ont plusieurs
bénéficiaires). On stockera également les opérations
relatives à ces comptes (retrait et dépôt, avec leur
date et le montant).

Année Universitaire 2020-2021 | 72


I. Méthode Merise
Exercice : réalisation de MCD

 Une banque désire posséder un SGBD pour


suivre ses clients. Elle désire ainsi stocker les
coordonnées de chaque client (nom, prénom adresse),
et les comptes dont elle dispose ainsi que leur solde
(sachant par ailleurs que certains compte ont plusieurs
bénéficiaires). On stockera également les opérations
relatives à ces comptes (retrait et dépôt, avec leur
date et le montant).

Année Universitaire 2020-2021 | 73


I. Méthode Merise
Exercice : réalisation de MCD

1:n 1:n 0:n


 bénéficie Comptes
Clients
NoClient Id_Cpt
Nom
Solde
Prénom
Adresse

Opérations
Concerne
Id_op

Type
1:1
Date

montant
Année Universitaire 2020-2021 | 74
I. Méthode Merise
Exercice : MCD (gestion de commandes)

 Les règles de gestion :


 Le magasin vend des produits a des clients.

 Les produits possèdent une référence (un code), un libelle et un prix


unitaire.
 Les clients ont une identité (nom, prénom, adresse...).

 Les clients passent des commandes de produits. On mémorise la date


de la commande.
 Pour chaque commande, le client précise une adresse de livraison.

 La commande concerne un certain nombre de produits, en une quantité


spécifiée pour chaque produit.

Année Universitaire 2020-2021 | 75


I. Méthode Merise
Exercice : MCD (gestion de commandes)

Année Universitaire 2020-2021 | 76


I. Méthode Merise
Exercice : MCD (agence immobilière)

 Les règles de gestion :


 Une agence de location de maisons et d’appartements désire gérer sa
liste de logements. Elle voudrait en effet connaître l’implantation de
chaque logement (nom de la commune et du quartier) ainsi que les
personnes qui les occupent (les signataires uniquement).
 Le loyer dépend d’un logement, mais en fonction de son type (maison,
studio, T1, T2...) l’agence facturera toujours en plus du loyer la même
somme forfaitaire à ses clients. Par exemple, le prix d’un studio sera
toujours égal au prix du loyer + 30 DH de charges forfaitaires par
mois.
 Pour chaque logement, on veut disposer également de l’adresse, de la
superficie ainsi que du loyer.
 Quant aux individus qui occupent les logements (les signataires du
contrat uniquement), on se contentera de leurs noms, prénoms, date de
naissance et numéro de téléphone.
Année Universitaire 2020-2021 | 77
I. Méthode Merise
Exercice : MCD (agence immobilière)

 Pour chaque commune, on désire connaître le nombre d’habitants ainsi


que la distance séparant la commune de l’agence.
 L’agence désire gérer l’historique de l’occupation des logements par les
individus. On considèrera de plus qu’un individu peut être signataire de
plusieurs contrat de location.
 On précise aussi qu’un logement peut faire l’objet de plusieurs locations
disjointes dans le temps.
 L’unité géographique retenue pour la gestion des logements est le
quartier et on considère que chaque commune possède au moins un
quartier.

Année Universitaire 2020-2021 | 78


I. Méthode Merise
Exercice : MCD (agence immobilière)

Individus
1,N Communes 1,N
Effectuer
Id commune
1,1 Nom commune
N°identité Distance agence
Nom Nombre d'habitants
Prénom Locations Situer Dan
DateNaissance 1,1
N°téléphone N°Location Concerner
DateDébut
DateFin 1,1
0,N
Quartiers
Logements
1,1 N° logement
TypeLogements Adresse
Id quartier
Nom quartier
Type logement Superficie
Correspondre
Charges forfaitaires Loyer

1,1 0,N
1,N Appartenir
Année Universitaire 2020-2021 | 79
I. Méthode Merise
MCD>>> MLD

 L'étape de transformation du MCD en MLD est


assez simple et passe par trois étapes :
 Transformation des entités en tables,
 Transformation des relations du MCD,

 Suppression des tables inutiles.

Année Universitaire 2020-2021 | 80


I. Méthode Merise
Modèle logique des données

a. Construction des tables


 La première étape consiste à transformer toutes les
entités du MCD en tables du MLD.
 Cette transformation est directe : il suffit de recopier les
entités. Il s'agit essentiellement d'un changement de
vocabulaire :
 une entité devient une table,
 une propriété devient un champ,
 un identifiant devient une clé primaire.
 A noter toutefois qu'il est essentiel qu'il n'y ait pas deux
tables qui aient le même nom.

Année Universitaire 2020-2021 | 81


I. Méthode Merise
Modèle logique des données

 Exemple:
 la première partie de la construction du MLD du
libraire est directe. Il suffit de recopier les entités.

Année Universitaire 2020-2021 | 82


I. Méthode Merise
Modèle logique des données

b. Transformation des relations en liens


Pour les associations. Dépend des cardinalités. Deux
grand cas possibles :
 Relation 1:1 ?:?

la relation est matérialisée par l’ajout d’une clé étrangère

 Relation ?:n ?:n

la relation donne lieu à la création d’une table

Année Universitaire 2020-2021 | 83


I. Méthode Merise
Modèle logique des données

Premier cas:
 Dans le cas d'une relation ou l'une des branches a une
cardinalité de 1:1 ou 0:1, la transformation de la
relation se fait de la manière suivante :
 On ramène dans la table correspondant à l'entité "du côté
du 1:1" (ou du 0:1) la clé primaire de l'autre table ainsi que
toutes les éventuelles propriétés de la relations.
 On lie la clé primaire ainsi importée avec la clé primaire de
la deuxième table.
 Si la relation contenait des propriétés, celle-ci se retrouve
également importée du côté du 1:1

Année Universitaire 2020-2021 | 84


I. Méthode Merise
Modèle logique des données

 Se transforme en:

 A noter que la clé importée (ici IdB qui se retrouve dans


table A) ne devient pas une clé de la table : c'est une
propriété comme une autre. Notons aussi que le lien se
fait entre champs (on relie IdA à IdB) et non pas, comme
dans le MCD, entre les tables.

Année Universitaire 2020-2021 | 85


I. Méthode Merise
Modèle logique des données

EntitéA EntitéB
0:n relation
IdA 1:1 IdB
propriétéR
PropriétéA1 propriétéB1

devient
TableA
TableB
PK_IdA PK_IdB
Champ A1 Ch_propriété B1
FK IdA
Ch_proriété R
Année Universitaire 2020-2021 | 86
I. Méthode Merise
Modèle logique des données

Deuxième cas
 Dans tous les autres cas, la relation du MCD se
transforme en une table du MLD :
 On crée une nouvelle table correspondant à la relation.
Cette table contient toutes les éventuelles propriétés de
la relation.

 On intègre à cette table les clés primaires des entités


impliquées dans la relation.

Année Universitaire 2020-2021 | 87


I. Méthode Merise
Modèle logique des données

 On relie les clés primaires des tables avec les clés


importées dans la nouvelle table.

 On choisit enfin la ou les clés primaires de la


nouvelle table. L'idée générale est que chaque
occurrence de cette entité doit pouvoir être
identifiée de manière unique par ses clés primaires.

Année Universitaire 2020-2021 | 88


I. Méthode Merise
Modèle logique des données

 Cela revient en général à choisir comme clés


primaires l'ensemble de clés importées des autres
tables.

 Se transforme en:

Année Universitaire 2020-2021 | 89


I. Méthode Merise
Modèle logique des données

Cas particuliers
 Quelques cas particuliers peuvent apparaitre.

 Si la relation est de type 1:1 - 1:1, on fusionne les


deux entités en une. Ce type de relation rare est
souvent dû à un problème dans la conception du
MCD.
 Si la relation est de type 0:1 - 1:1, on traite la
relation comme une relation de type 1:1 ?:?(en
ramenant la clé primaire du côté du 1:1)

Année Universitaire 2020-2021 | 90


I. Méthode Merise
Modèle logique des données

Cas particuliers
 Les relations réflexives (entre une entité et elle-
même) se traitent comme les autres relations.
 les relations ternaires (entre trois entités, ou plus), se
traitent comme d'habitude.
Si l'une des branches a une cardinalité de type 1:1,
on ramène les clés primaires des autres entités et les
propriétés de la relation dans l'entité "du côté du
1:1".
Si ce n'est pas le cas, la relation se transforme en
table.

Année Universitaire 2020-2021 | 91


I. Méthode Merise
Modèle logique des données

c. Suppression des tables inutiles


 La dernière étape consiste simplement à supprimer
les tables inutiles.
 En général (mais pas toujours), une table qui ne
contient qu'un seul champ (sa clé) est inutile : elle ne
nous apporte aucune information.
 L'exemple le plus classique est une entité de type
"date".

Année Universitaire 2020-2021 | 92


I. Méthode Merise
Modèle logique des données

 Exemple :
 Le MLD correspondant à l'exemple du libraire est le
suivant :

Année Universitaire 2020-2021 | 93


I. Méthode Merise
MCD>>MLD: A retenir

 La méthode de transformation MCD-MLD :


 les entités sont transformées en tables (sans modification)
 les relations sont transformées en fonction de leurs
cardinalités
◼ pour une relation de type 1:1 - ?:? entre une entité A et une
entité B se traduit par une importation de la clé primaire de
l'entité B dans la table de A, et on ajoute un lien entre les
deux clés,
◼ une relation autre (sans 1:1 - ?:?) se transforme en
table dans laquelle on retrouve les clés primaires de
A et B.
 les tables inutiles sont supprimées : il s'agit essentiellement des
tables à un seul champ (leur clé).

Année Universitaire 2020-2021 | 94


I. Méthode Merise
MCD>>MLD: Quelques cas particuliers

 Relation binaire (0,1)-(1,1):


 On duplique la clé de la table basée sur l'objet à cardinalité (0,1) dans la table
basée sur l'objet à cardinalité (1,1).

Année Universitaire 2020-2021 | 95


I. Méthode Merise
MCD>>MLD: Quelques cas particuliers

 Plusieurs relations entre 2 objets


 Les règles générales s'appliquent.

Année Universitaire 2020-2021 | 96


I. Méthode Merise
MCD>>MLD: Quelques cas particuliers

 Relation binaire (0,1)-(0,1):


 On duplique la clé d'une des tables dans l'autre. Lorsque la relation contient
elle-même des propriétés, celles-ci deviennent également attributs de la table
dans laquelle a été ajoutée la clé étrangère.

Année Universitaire 2020-2021 | 97


I. Méthode Merise
MCD>>MLD: Quelques cas particuliers

 Relations réflexives:
 Nous appliquons les règles générales avec la seule différence que la relation
est 2 fois reliée au même objet.

Année Universitaire 2020-2021 | 98


I. Méthode Merise
MCD>>MLD: Quelques cas particuliers

 Relations réflexives:
 Nous appliquons les règles générales avec la seule différence que la relation
est 2 fois reliée au même objet.

Année Universitaire 2020-2021 | 99


I. Méthode Merise
MCD>>MLD: Exercices

 Exercice «Gestion d'école»


◼ Transformez le MCD suivant, qui représente «la gestion d'une école» en un MLD
en respectant toutes les règles du passage MCD à MLD.

Année Universitaire 2020-2021 | 100


I. Méthode Merise
MCD>>MLD: Exercices

Année Universitaire 2020-2021 | 101


I. Méthode Merise
MCD>>MLD: Exercices

Année Universitaire 2020-2021 | 102


I. Méthode Merise
MCD>>MLD: Exercices

Année Universitaire 2020-2021 | 103


I. Méthode Merise
MCD>>MLD: Exercices
1,N
1,N

Id commune
N°identité Effectuer Nom commune
1,1
Nom Distance agence
Prénom Nombre d'habitants
DateNaissance Situer Dan
N°téléphone 1,1
Concerner
N°Location
1,1
DateDébut 0,N
DateFin

Id quartier
1,1 N° logement Nom quartier
Adresse
Superficie
Type logement Correspondre
Loyer
Charges forfaitaires

1,1 0,N
1,N Appartenir
Année Universitaire 2020-2021 | 104
I. Méthode Merise
MCD>>MLD: Exercices

Année Universitaire 2020-2021 | 105


Résumé
 La méthode Merise, comprend 4 niveaux avec
chacun un modèle référent :

Année Universitaire 2020-2021 | 106


II Le langage SQL

Année Universitaire 2020-2021 | 107


Bases de données Le langage de requête

Introduction

Origine

❑ Le langage SQL (Structured Query Language) peut être considéré comme le


langage d’accès normalisé aux bases de données.
❑ Introduit par IBM, évolution du langage SEQUEL(Structured English Query
Language), commercialisé tout d'abord par ORACLE
❑ SQL est devenu le langage standard pour décrire et manipuler les BDR
❑ La première norme SQL (SQL-1) de l’ISO (International Standard Organisation)
apparaît en 1986.
❑ Il existe désormais plusieurs dizaines de produits proposant le langage SQL et
tournant sur des machines allant des micros aux gros systèmes.
❑ Depuis, les différents produits phares ont évolué, la norme SQL est passée à
SQL-2, puis SQL-3.
❑ SQL est désormais un langage incontournable pour tout SGBD moderne.

Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données Année Universitaire 2020-2021 | 108
Bases de données Le langage de requête

Introduction

Catégories d’instructions

❑ Les instructions SQL sont regroupées en catégories en fonction de leur utilité et


des entités manipulées.
❑ Nous pouvons distinguer cinq catégories, qui permettent :
1. la définition des éléments d’une base de données (tables, colonnes, clefs,
index, contraintes, . . .),
2. la manipulation des données (insertion, suppression, modification,
extraction, . . .),
3. la gestion des droits d’accès aux données (acquisition et révocation des
droits),
4. la gestion des transactions,
5. le SQL intégré.

Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données Année Universitaire 2020-2021 | 109
Bases de données Le langage de requête

Catégories d’instructions

Langage de définition de données

❑ Le langage de définition de données (LDD, ou Data Definition Language,


DDL en anglais) est un langage orienté au niveau de la structure de la base de
données.
❑ Le LDD permet de créer, modifier, supprimer des objets.
❑ Il permet également de définir le domaine des données (nombre, chaîne de
caractères, date, booléen, . . .) et d’ajouter des contraintes de valeur sur les
données.
❑ Il permet enfin d’autoriser ou d’interdire l’accès aux données et d’activer ou de
désactiver l’audit pour un utilisateur donné.

Les instructions du LDD


CREATE, ALTER, DROP, AUDIT, NOAUDIT, ANALYZE, RENAME,
TRUNCATE.

Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données Année Universitaire 2020-2021 | 110
Bases de données Le langage de requête

Catégories d’instructions

Langage de manipulation de données

❑ Le langage de manipulation de données (LMD, ou Data Manipulation


Language, DML en anglais) est l’ensemble des commandes concernant la
manipulation des données dans une base de données.
❑ Le LMD permet l’ajout, la suppression et la modification de lignes, la
visualisation du contenu des tables et leur verrouillage.

Les instructions du LMD

INSERT, UPDATE, DELETE, SELECT, EXPLAIN, PLAN, LOCK TABLE.

Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données Année Universitaire 2020-2021 | 111
Bases de données Le langage de requête

Manipulation des données

Introduction

❑ SQL propose quatre instructions pour manipuler des données :


▪ l’extraction des données par requêtes: SELECT;
▪ l’insertion d’enregistrements : INSERT ;
▪ la modification de données : UPDATE ;
▪ la suppression d’enregistrements : DELETE (et TRUNCATE).

Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données Année Universitaire 2020-2021 | 112
Bases de données Le langage de requête

Manipulation des données

SELECT

La commande SELECT constitue, à elle seule, le langage permettant d'interroger


une base de données. Elle permet de :

❑ sélectionner certaines colonnes d'une table (projection) ;


❑ sélectionner certaines lignes d'une table en fonction de leur contenu (sélection) ;
❑ combiner des informations venant de plusieurs tables (jointure, union,
intersection, différence et division) ;
❑ combiner entre elles ces différentes opérations.

Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données Année Universitaire 2020-2021 | 113
Bases de données Le langage de requête

Manipulation des données

SELECT

❑ La commande SELECT permet de rechercher des données à partir de plusieurs


tables ; le résultat est présenté sous forme d'une table réponse
Expression des projections
❑ Elle est composée d’une directive FROM qui précise la (les) table(s)
interrogée(s), et d’une directive WHERE qui contient les critères
❑ Exemple: Donner les numéros de tous les vols?
SELECT NVOL
FROM Vols

Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données Année Universitaire 2020-2021 | 114
Bases de données Le langage de requête

Manipulation des données

SELECT

❑ On peut introduire dans la clause FROM un synonyme (alias) à un nom de table


en le plaçant immédiatement après le nom de la table
❑ Les noms de table ou les synonymes peuvent être utilisés pour préfixer les noms
de colonnes dans le SELECT
❑ FROM liste de (nom de table [[AS] nom]) | (requête AS nom)
WHERE condition
❑ Le mot-clé AS permet de renommer une colonne, ou de nommer une colonne
créée dans la requête.
❑ Exemple: Pour afficher le nom, le prénom et le salaire annuel des employés, on
peut utiliser la requête :
❑ SELECT surname AS nom, name AS prénom, salary*12 AS salaire FROM
employee

Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données Année Universitaire 2020-2021 | 115
Bases de données Le langage de requête

Manipulation des données

SELECT

❑ Contrairement à l’algèbre relationnelle, SQL n'élimine pas les doublons


❑ Pour éliminer les doublons il faut spécifier DISTINCT
❑ Exemple : Donner les numéros des pilotes qui conduisent au moins un avion?
SELECT DISTINCT NPIL
FROM Vols
❑ Il est possible d'effectuer des opérations arithmétiques (+, -, *, /) sur les colonnes
extraites
❑ Exemple : afficher une augmentation de 5% du cout de chaque vol?
SELECT NVOL, COUT_VOL*0.05
FROM Vols

Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données Année Universitaire 2020-2021 | 116
Bases de données Le langage de requête

Manipulation des données

SELECT

❑ Une étoile (*) permet de lister tous les attributs


❑ Exemple : Donner toutes les caractéristiques des avions stockés dans la table ?
SELECT *
FROM Avions

Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données Année Universitaire 2020-2021 | 117
Bases de données Le langage de requête

Manipulation des données

SELECT

Expression des restrictions


❑ Exemple : Donner les avions qui ont une capacité > 200 places ?
SELECT NAV
FROM Avions
WHERE CAP>200;
❑ La condition de recherche (qualification) est spécifiée après la clause WHERE
par un prédicat
❑ Un prédicat simple peut-être :
▪ un prédicat d’égalité ou d’inégalité (=, <>, <, >, <=, >=)
▪ un prédicat LIKE
▪ un prédicat BETWEEN
▪ un prédicat IN
▪ un test de valeur NULL
▪ un prédicat EXISTS
▪ un prédicat ALL ou ANY
❑ Un prédicat composé est construit à l’aide des connecteurs AND, OR et NOT

Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données Année Universitaire 2020-2021 | 118
Bases de données Le langage de requête

Manipulation des données

SELECT

❑ Donner la capacité de tous les avions Boeing?


SELECT NAV, NOM AV, CAP
FROM Avions
WHERE NOMAV LIKE ’Boeing%’ ;
❑ Le prédicat LIKE compare une chaîne avec un modèle
▪ (_) remplace 1 caractère
▪ (%) remplace n'importe quelle suite de caractères
❑ Donner les avions qui sont à Rabat et dont la capacité est de 300 places?
SELECT NAV
FROM Avions
WHERE LOC = ’Rabat’ AND CAP = 300 ;
❑ Le connecteur AND relie les 2 prédicats de comparaison
❑ Recherche avec condition conjonctive

Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données Année Universitaire 2020-2021 | 119
Bases de données Le langage de requête

Manipulation des données

SELECT

❑ Donner les vols qui utilisent les avions 100 et 101?


SELECT NVOL
FROM Vols
WHERE NAV= ’100’ OR NAV = 101 ;
❑ Recherche avec condition disjonctive
❑ Donner tous les pilotes qui n’habitent pas à Rabat?
SELECT NPIL
FROM Pilotes
WHERE NOT VILLE = ’Rabat’ ;
❑ Recherche avec condition négative

Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données Année Universitaire 2020-2021 | 120
Bases de données Le langage de requête

Manipulation des données

SELECT

❑ Donner les avions qui ont une capacité entre 200 et 300 places ?
SELECT NAV
FROM Avions
WHERE CAP BETWEEN 200 AND 300 ;
❑ Le prédicat BETWEEN teste l'appartenance à un intervalle
❑ Donner les pilotes qui habitent soit à Rabat soit à Casa ?
SELECT NPIL
FROM Pilotes
WHERE VILLE IN (’Rabat’, ’Casa’) ;
❑ Le prédicat IN teste l'appartenance à une liste de valeur

Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données Année Universitaire 2020-2021 | 121
Bases de données Le langage de requête

Manipulation des données

SELECT

Valeurs nulles
❑ La valeur NULL est une valeur particulière signifiant qu'une donnée est
manquante, sa valeur est inconnue
▪ Dans une expression arithmétique, si l'un des termes est nul, alors l'expression
entière prend la valeur NULL
▪ Un prédicat de comparaison (=, <>, <, <=, >, >=) prend la valeur logique
"inconnu" si l'un des termes de la comparaison est NULL

Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données Année Universitaire 2020-2021 | 122
Bases de données Le langage de requête

Manipulation des données

Exercice

❑ Soit le schéma relationnel suivant :


Pilote (NumP, NomP, Addresse, Salaire)
Avion (NumA, NomA, Capacité, Localisation)
Vol (NumV, #NumP, #NumA, Dep_V, Arr_V, Dep_H, Arr_H)
1. Donnez la liste des avions dont la capacité est supérieure à 350 passagers.
2. Quels sont les numéros et noms des avions localisés à Ouarzazate ?
3. Quels sont les numéros des pilotes en service et les villes de départ de leurs vols ?
4. Donnez toutes les informations sur les pilotes de la compagnie.
5. Quel est le nom des pilotes domiciliés à Ouarzazate dont le salaire est supérieur à
15000 Dhs ?
6. Quels sont les avions (numéro et nom) localisés à Rabat ou dont la capacité est
inférieure à 350 passagers ?
7. Liste des vols au départ de Ouarzazate allant à Casablanca après 18 heures ?

Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données Année Universitaire 2020-2021 | 123
Bases de données Le langage de requête

Manipulation des données

Exercice

❑ Soit le schéma relationnel suivant :


Pilote (NumP, NomP, Addresse, Salaire)
Avion (NumA, NomA, Capacité, Localisation)
Vol (NumV, #NumP, #NumA, Dep_V, Arr_V, Dep_H, Arr_H)
1. Donnez la liste des avions dont la capacité est supérieure à 350 passagers.
SELECT * FROM Avion WHERE Capacité > 350 ;

Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données Année Universitaire 2020-2021 | 124
Bases de données Le langage de requête

Manipulation des données

Exercice

❑ Soit le schéma relationnel suivant :


Pilote (NumP, NomP, Addresse, Salaire)
Avion (NumA, NomA, Capacité, Localisation)
Vol (NumV, #NumP, #NumA, Dep_V, Arr_V, Dep_H, Arr_H)
1. Donnez la liste des avions dont la capacité est supérieure à 350 passagers.
2. Quels sont les numéros et noms des avions localisés à Ouarzazate ?
SELECT NumA, NomA FROM Avion WHERE Localisation = ’Ouarzazate’ ;

Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données Année Universitaire 2020-2021 | 125
Bases de données Le langage de requête

Manipulation des données

Exercice

❑ Soit le schéma relationnel suivant :


Pilote (NumP, NomP, Addresse, Salaire)
Avion (NumA, NomA, Capacité, Localisation)
Vol (NumV, #NumP, #NumA, Dep_V, Arr_V, Dep_H, Arr_H)
1. Donnez la liste des avions dont la capacité est supérieure à 350 passagers.
2. Quels sont les numéros et noms des avions localisés à Ouarzazate ?
3.Quels sont les numéros des pilotes en service et les villes de départ de leurs vols ?
SELECT NumP, Dep_V FROM Vol;

Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données Année Universitaire 2020-2021 | 126
Bases de données Le langage de requête

Manipulation des données

Exercice

❑ Soit le schéma relationnel suivant :


Pilote (NumP, NomP, Addresse, Salaire)
Avion (NumA, NomA, Capacité, Localisation)
Vol (NumV, #NumP, #NumA, Dep_V, Arr_V, Dep_H, Arr_H)
1. Donnez la liste des avions dont la capacité est supérieure à 350 passagers.
2. Quels sont les numéros et noms des avions localisés à Ouarzazate ?
3. Quels sont les numéros des pilotes en service et les villes de départ de leurs vols ?
4. Donnez toutes les informations sur les pilotes de la compagnie.
SELECT * FROM Pilote;

Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données Année Universitaire 2020-2021 | 127
Bases de données Le langage de requête

Manipulation des données

Exercice

❑ Soit le schéma relationnel suivant :


Pilote (NumP, NomP, Addresse, Salaire)
Avion (NumA, NomA, Capacité, Localisation)
Vol (NumV, #NumP, #NumA, Dep_V, Arr_V, Dep_H, Arr_H)
1. Donnez la liste des avions dont la capacité est supérieure à 350 passagers.
2. Quels sont les numéros et noms des avions localisés à Ouarzazate ?
3. Quels sont les numéros des pilotes en service et les villes de départ de leurs vols ?
4. Donnez toutes les informations sur les pilotes de la compagnie.
5. Quel est le nom des pilotes domiciliés à Ouarzazate dont le salaire est supérieur à
15000 Dhs ?
SELECT NomP FROM Pilote WHERE Addresse =’Ouarzazate’AND
Salaraire > 200000;

Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données Année Universitaire 2020-2021 | 128
Bases de données Le langage de requête

Manipulation des données

Exercice
❑ Soit le schéma relationnel suivant :
Pilote (NumP, NomP, Addresse, Salaire)
Avion (NumA, NomA, Capacité, Localisation)
Vol (NumV, #NumP, #NumA, Dep_V, Arr_V, Dep_H, Arr_H)
1. Donnez la liste des avions dont la capacité est supérieure à 350 passagers.
2. Quels sont les numéros et noms des avions localisés à Ouarzazate ?
3. Quels sont les numéros des pilotes en service et les villes de départ de leurs vols ?
4. Donnez toutes les informations sur les pilotes de la compagnie.
5. Quel est le nom des pilotes domiciliés à Paris dont le salaire est supérieur à 15000
Dhs ?
6. Quels sont les avions (numéro et nom) localisés à Rabat ou dont la capacité est
inférieure à 350 passagers ?
SELECT NumA, NomA FROM Avion WHERE Localisation = ’Rabat’ OR Capacité
< 350;

Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données Année Universitaire 2020-2021 | 129
Bases de données Le langage de requête

Manipulation des données

Exercice

❑ Soit le schéma relationnel suivant :


Pilote (NumP, NomP, Addresse, Salaire)
Avion (NumA, NomA, Capacité, Localisation)
Vol (NumV, #NumP, #NumA, Dep_V, Arr_V, Dep_H, Arr_H)
1. Donnez la liste des avions dont la capacité est supérieure à 350 passagers.
2. Quels sont les numéros et noms des avions localisés à Ouarzazate ?
3. Quels sont les numéros des pilotes en service et les villes de départ de leurs vols ?
4. Donnez toutes les informations sur les pilotes de la compagnie.
5. Quel est le nom des pilotes domiciliés à Paris dont le salaire est supérieur à 15000
Dhs ?
6. Quels sont les avions (numéro et nom) localisés à Rabat ou dont la capacité est
inférieure à 350 passagers ?
7.Liste des vols au départ de Ouarzazate allant à Casablanca après 18 heures ?
SELECT * FROM Vol WHERE Dep_V = ’Ouarzazate’AND Arr_V = ’Casablanca’
AND Dep_H > ’18:00:00’;

Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données Année Universitaire 2020-2021 | 130
Bases de données Le langage de requête

Manipulation des données

SELECT

Tri du résultat d'un SELECT


❑ La clause ORDER BY permet de spécifier les colonnes définissant les critères
de tri
▪ Le tri se fera d'abord selon la première colonne spécifiée
▪ puis selon la deuxième colonne etc...
❑ SELECT liste de nom de colonne
FROM nom de table
[WHERE expression]
ORDER BY { expression | position } [ASC | DESC]
[{ expression | position } [ASC | DESC]] ;
❑ L'ordre de tri est précisé par ASC (croissant) ou DESC (décroissant) ; par défaut
ASC

Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données Année Universitaire 2020-2021 | 131
Bases de données Le langage de requête

Manipulation des données

SELECT

Tri du résultat d'un SELECT


❑ Exemple 1 : donner les horaires des vols triés par ordre croissant des dates et
heures de départ
SELECT NVOL, DATE_d, DATE_a
FROM Vols
ORDER BY DATE_d ;
❑ Exemple 1 : Lister les produits en les triant par marques et à l'intérieur d'une
marque par prix décroissants?
SELECT *
FROM produit P
ORDER BY P.marque, P.prix DESC

Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données Année Universitaire 2020-2021 | 132
Bases de données Le langage de requête

Manipulation des données

SELECT

Les fonctions de groupe


❑ les fonctions de groupe calculent les résultats à partir d’une collection de
valeurs.
▪ COUNT (*) comptage des lignes
▪ COUNT ([DISTINCT | ALL]) comptage des valeurs
▪ MAX ([DISTINCT | ALL]) maximum des valeurs
▪ MIN ([DISTINCT | ALL]) minimum des valeurs
▪ SUM ([DISTINCT | ALL]) somme des valeurs
▪ AVG ([DISTINCT | ALL]) moyenne des valeurs
▪ STDDEV ([DISTINCT | ALL]) écart-type des valeurs
▪ VARIANCE ([DISTINCT | ALL]) variance des valeurs

Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données Année Universitaire 2020-2021 | 133
Bases de données Le langage de requête

Manipulation des données

SELECT

Les fonctions de groupe


❑ Donner le nombre d’avions?
SELECT COUNT(*) NBR _AV
FROM Avions ;
❑ Donner le nombre d’heures de vols du pilote 4020?
SELECT SUM(TIMEDIFF(D_a,D_d)) NBR_H
FROM Vols
WHERE NPIL = 4020 ;
❑ Les valeurs nulles ne sont pas prises en compte, sauf pour COUNT(*)
❑ Si l'argument est un ensemble vide, COUNT renvoie la valeur 0, les autres
fonctions renvoyant la valeur NULL

Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données Année Universitaire 2020-2021 | 134
Bases de données Le langage de requête

Manipulation des données

SELECT

Exercice
❑ Ecrire la requête qui retourne la moyenne et la somme des notes
des étudiants dont le nom commence ‘M’

SELECT

Solution
❑ SELECT AVG(note), SUM(note)
FROM Etudiant
WHERE nom LIKE ‘M%';

Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données Année Universitaire 2020-2021 | 135
Bases de données Le langage de requête

Manipulation des données

SELECT

Exercice
❑ Ecrire la requête qui retourne la date d’embauche(date_emb) la plus ancienne et la
plus récente des employées.

SELECT

Solution
❑ SELECT MIN(date_emb), MAX(date_emb)
FROM employe;

Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données Année Universitaire 2020-2021 | 136
Bases de données Le langage de requête

Manipulation des données

SELECT

Exercice
❑ Ecrire la requête qui renvoie le nombre de départements (doublons inclus) de la
table employe.

SELECT

Solution
❑ SELECT COUNT(N_dep) FROM employe;

Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données Année Universitaire 2020-2021 | 137
Bases de données Le langage de requête

Manipulation des données

SELECT

Exercice
❑ Ecrire la requête qui retourne le nombre d’enregistrements dans la table EMP dont
la colonne N_dep a pour valeur 30.

SELECT

Solution
❑ SELECT COUNT(*) FROM employe
WHERE N_dep = 30;

Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données Année Universitaire 2020-2021 | 138
Bases de données Le langage de requête

Manipulation des données

SELECT

Exercice
❑ Ecrire la requête qui renvoie la moyenne des commissions obtenues par les
employés.

SELECT

Solution
❑ SELECT AVG(comm) FROM employe;

Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données Année Universitaire 2020-2021 | 139
Bases de données Le langage de requête

Manipulation des données

SELECT

Les regroupements de lignes


❑ La clause GROUP BY permet de partitionner une table en plusieurs groupes
❑ Toutes les lignes d'un même groupe ont la même valeur pour la liste des attributs
de partitionnement spécifiés après GROUP BY
❑ Les fonctions de groupe calculent les résultats à partir d’une collection de
valeurs.
SELECT liste d’expressions1
FROM nom de table
GROUP BY liste d’expressions2 ;
❑ les expressions de liste d’expressions1 doivent être des expressions formées
uniquement :
▪ d’expressions de liste d’expressions2
▪ de fonctions de groupe
▪ de constantes

Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données Année Universitaire 2020-2021 | 140
Bases de données Le langage de requête

Manipulation des données

SELECT

Les regroupements de lignes


❑ Exemple :Donner le nombre d’avions affectés à chaque ville d’affectation d’un
avion?
SELECT LOC, COUNT(*) NBR _AV
FROM avions
GROUP BY LOC ;
❑ Exemple: Donner le nombre de vols qui ont la même durée?
SELECT TIMEDIFF(D_a,D_d) DUR_VOL, COUNT(*) NBR_VOL
FROM Vols
GROUP BY TIMEDIFF(D_a, D_d) ;

Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données Année Universitaire 2020-2021 | 141
Bases de données Le langage de requête

Manipulation des données

SELECT

Exercice
❑ Ecrire la requête qui renvoie la moyenne des salaires pour chaque département
présent dans la table employé.

SELECT
Solution
❑ SELECT deptno, AVG(sal) FROM employe
GROUP BY deptno;

Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données Année Universitaire 2020-2021 | 142
Bases de données Le langage de requête

Manipulation des données

SELECT

Conditions sur l’ensemble des lignes


❑ La clause HAVING permet de spécifier une condition de restriction des groupes
❑ Elle sert à éliminer certains groupes, comme WHERE sert à éliminer des lignes
❑ SELECT liste d’expressions
FROM nom de table
[WHERE condition ]
HAVING condition sur lignes ;
❑ les expressions de liste d’expressions et condition sur lignes doivent être formées
uniquement :
▪ de fonctions de groupe
▪ de constantes

Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données Année Universitaire 2020-2021 | 143
Bases de données Le langage de requête

Manipulation des données

SELECT

Conditions sur l’ensemble des lignes


❑ Exemple1 : pour savoir si le pilote 4010 assure tous les vols avec un avion
diffèrent à chaque fois?
SELECT ’OUI’ REP
FROM Vols
WHERE NPIL = 4010
HAVING COUNT(*) = COUNT(DISTINCT NAV) ;
❑ Exemple2 : donner les pilotes qui conduisent au moins deux avions différents
SELECT NPIL
FROM Vols
WHERE NPIL IS NOT NULL
GROUP BY NPIL
HAVING COUNT(DISTINCT NAV) >= 2 ;

Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données Année Universitaire 2020-2021 | 144
Bases de données Le langage de requête

Manipulation des données

SELECT

Exercice
❑ Ecrire la requête qui renvoie les numéro de départements dont le salaire maximal
(à afficher aussi) est supérieur à 2900.

SELECT

Solution
❑ SELECT deptno, MAX(sal)
FROM employe
GROUP BY deptno
HAVING MAX(sal) > 2900;

Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données Année Universitaire 2020-2021 | 145
Bases de données Le langage de requête

Manipulation des données

SELECT

Exercice
❑ Afficher la somme des salaires des employés supérieure à 5000 par fonction, et les
fonctions dont les quatre premières lettres sont différentes de la chaîne de
caractères « TECH». Le résultat est ordonné de façon décroissante sur les sommes
des salaires.

SELECT
Solution
❑ SELECT fonction, SUM(sal)
FROM employe
WHERE fonction NOT LIKE ‘TECH%'
GROUP BY fonction
HAVING SUM(sal) > 5000
ORDER BY DESC SUM(sal);

Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données Année Universitaire 2020-2021 | 146
Bases de données Le langage de requête

Manipulation des données

SELECT

Expression des jointures


❑ Le produit cartésien s'exprime simplement en incluant plusieurs tables après la
clause FROM
❑ La condition de jointure est exprimée après WHERE
❑ Exemple1 : Donner les références et les noms des produits vendus
SELECT P.IdPro, P.nom
FROM produit P , vente V
WHERE P.IdPro = V.IdPro
❑ Exemple2 :Donner les noms des clients qui ont acheté le produit de nom ‘IBM'
SELECT C.nom
FROM client C , produit P, vente V
WHERE V.IdCli = C.IdCli
AND V.IdPro = P.IdPro
AND P.nom = ‘IBM'

Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données Année Universitaire 2020-2021 | 147
Bases de données Le langage de requête

Manipulation des données

SELECT

Auto-jointure
❑ Exemple : Donner les noms des clients de la même ville que Ahmed?
SELECT C2.nom
FROM client C1 , client C2
WHERE C1.ville = C2.ville
AND C1.nom = ‘Ahmed’
AND C2.nom <> ‘Ahmed’
❑ Cet exemple utilise, pour le couplage des villes, la jointure de la table Client avec
elle-même (auto-jointure)
❑ Pour pouvoir distinguer les références ville dans les 2 copies, il faut introduire 2
alias différents C1 et C2 de la table client

Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données Année Universitaire 2020-2021 | 148
Bases de données Le langage de requête

Manipulation des données

SELECT

Opérateur de jointure naturelle

❑ Exemple: donner le nombre de places de chaque vol qui a été affecté à un avion?
SELECT NVOL, CAP
FROM Vols, Avions
WHERE Vols.NAV = Avions.CAP ;

Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données Année Universitaire 2020-2021 | 149
Bases de données Le langage de requête

Manipulation des données

INSERT

❑ La commande INSERT permet d'ajouter de nouvelles lignes à une table


INSERT
INTO table [ (liste de colonnes) ]
{VALUES (liste de valeurs) | requête}
❑ Dans le cas où la liste de colonnes n'est pas spécifiée , tous les attributs de la table
cible doivent être fournis dans l'ordre de déclaration
❑ Une insertion à partir d'une requête permet d'insérer plusieurs lignes dans la table
cible à partir d'une autre table

Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données Année Universitaire 2020-2021 | 150
Bases de données Le langage de requête

Manipulation des données

INSERT

❑ Exemple1 :ajouter un avion dans la table Avions en respectant l’ordre des


colonnes?
INSERT INTO Avions
VALUES (100, ’Airbus’, 200, ’Paris’) ;
❑ Exemple2 : ajouter un avion dans la table avions sans connaître l’ordre?
INSERT INTO Avions (NAV, CAP, LOC, NOM AV)
VALUES (101, 200, ’Paris’, ’Airbus’) ;
❑ Exemple3 : ajouter un avion dans la table Avions dont la localisation est
indéfini?
INSERT INTO Avions (NAV, NOM AV, CAP)
VALUES (102, ’Airbus’, 200);
ou
INSERT INTO Avions
VALUES (102, ’Airbus’, 200, NULL) ;

Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données Année Universitaire 2020-2021 | 151
Bases de données Le langage de requête

Manipulation des données

UPDATE

❑ La commande UPDATE permet de changer des valeurs d'attributs de lignes


existantes
UPDATE table
SET liste d'affectations
[ WHERE qualification ]
❑ L'absence de clause WHERE signifie que les changements doivent être appliqués
à toutes les lignes de la table cible
❑ Exemple : modifier la capacité de l’avion numéro 100
UPDATE Avions SET CAP = 300
WHERE NAV = 100 ;

Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données Année Universitaire 2020-2021 | 152
Bases de données Le langage de requête

Manipulation des données

DELETE

❑ La commande DELETE permet d'enlever des lignes dans une table


DELETE
FROM table
[ WHERE qualification ]
❑ L'absence de clause WHERE signifie que toutes les lignes de la table cible sont
enlevées
❑ Exemple : supprimer de la table avions tous les avions dont la capacité
est inférieur à 100
DELETE FROM Avions
WHERE CAP < 100 ;

Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données Année Universitaire 2020-2021 | 153
Bases de données Le langage de requête

Manipulation des données

Fonctions pour requêtes SQL

Fonctions numériques
▪ SIGN(nombre) signe du nombre spécifié
▪ ABS(nombre) valeur absolue
▪ ACOS(nombre) arc cosinus
▪ ASIN(nombre) arc sinus
▪ ATAN(nombre) arc tangente
▪ COS(nombre) cosinus
▪ SIN(nombre) sinus
▪ TAN(nombre) tangente
▪ COSH(nombre) cosinus hyperbolique
▪ SINH(nombre) sinus hyperbolique
▪ TANH(nombre) tangente hyperbolique

Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données Année Universitaire 2020-2021 | 154
Bases de données Le langage de requête

Manipulation des données

Fonctions pour requêtes SQL

Fonctions numériques
▪ EXP(puissance) élevé à la puissance
▪ LN(nombre) logarithme naturel
▪ LOG(base, nombre) logarithme en base quelconque
▪ SQRT(nombre) racine carrée
▪ POWER(nombre, puissance) puissance d’un nombre
▪ MOD(dividende, diviseur) modulo (reste de la division)
▪ CEIL(nombre) le plus petit entier plus grand que le nombre passé en argument
▪ FLOOR(nombre) le plus grand entier plus petit ou égal au nombre passé en
argument

Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données Année Universitaire 2020-2021 | 155
Bases de données Le langage de requête

Manipulation des données

Sous –requêtes

❑ Imbrication de sous- requêtes dans la clause WHERE


SELECT projection
FROM nom de table
WHERE condition
(SELECT projection
FROM nom de table
WHERE condition, · · · ) ;

Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données Année Universitaire 2020-2021 | 156
Bases de données Le langage de requête

Manipulation des données

Sous –requêtes

❑ Sous-requêtes : donnant une seule ligne


SELECT projection
FROM nom de table
WHERE expr op
(SELECT projection
FROM nom de table
WHERE condition, · · · ) ;
op ∈ { = , <>, < , <= , > , >= }

Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données Année Universitaire 2020-2021 | 157
Bases de données Le langage de requête

Manipulation des données

Sous –requêtes

❑ Sous-requêtes : donnant une seule ligne


Exemple: donner les vols qui utilisent le même avion que celui utilisé par le vol
V101?
SELECT NVOL
FROM Vols
WHERE NAV =
(SELECT NAV
FROM Vols
WHERE NVOL = ’V101’ ) ;

Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données Année Universitaire 2020-2021 | 158
Bases de données Le langage de requête

Manipulation des données

Sous –requêtes

❑ Sous- requêtes donnant au plus une ligne


Exemple :donner le vols qui assure le même trajet que celui du Vol V101 mais
deux jours plus tard:
SELECT NVOL
FROM Vols
WHERE (V_dep, V_arri, D_dep, D_arriv) =
(SELECT (V_dep, V_a, D_dep+2, D_arriv+2)
FROM Vols
WHERE NVOL = ’V101’ ) ;

Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données Année Universitaire 2020-2021 | 159
Bases de données Le langage de requête

Manipulation des données

Sous –requêtes

❑ Sous- requêtes donnant 0, 1 ou plusieurs lignes


SELECT projection
FROM nom de table
WHERE expr NOT IN
(SELECT (projection
FROM · · · ) ;

SELECT projection
FROM nom de table
WHERE expr op ANY | ALL
(SELECT (projection
FROM · · · ) ;
op ∈ { = , <>, < , <= , > , >= }

Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données Année Universitaire 2020-2021 | 160
Bases de données Le langage de requête

Manipulation des données

Sous –requêtes

❑ Sous-requêtes donnant 0, 1 ou plusieurs lignes


Exemple: pour connaître les vols qui sont assurés par un pilote qui habite Paris
SELECT NVOL
FROM Vols
WHERE NPIL IN
(SELECT NPIL
FROM Pilotes
WHERE VILLE = ’Paris’ ) ;

Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données Année Universitaire 2020-2021 | 161
Bases de données Le langage de requête

Manipulation des données

Sous –requêtes

❑ Sous-requêtes donnant 0, 1 ou plusieurs lignes


Exemple: donner les pilotes qui n’assurent aucun vol?
SELECT NPIL
FROM pilotes
WHERE NPIL NOT IN
(SELECT NPIL
FROM vols
WHERE NPIL IS NOT NULL ) ;

Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données Année Universitaire 2020-2021 | 162
Bases de données Le langage de requête

Manipulation des données

Sous –requêtes

❑ Sous-requêtes d’existence
SELECT projection
FROM nom de table [Alias]
WHERE [NOT] EXISTS
(SELECT (projection
FROM · · · ) ;

Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données Année Universitaire 2020-2021 | 163
Bases de données Le langage de requête

Manipulation des données

Sous –requêtes

❑ Sous- requêtes d’existence


pour connaître les avions qui sont conduits par au moins un
pilote de Marseille
SELECT DISTINCT NAV
FROM Vols
WHERE EXISTS
(SELECT *
FROM pilotes
WHERE NPIL = Vols.NPIL
AND VILLE = ’Marseille’);

Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données Année Universitaire 2020-2021 | 164

Vous aimerez peut-être aussi