Vous êtes sur la page 1sur 177

Université Sultan Moulay Slimane

Ecole Nationale de Commerce et de Gestion


Beni Mellal

Module : Outils d'aide à la décision

GESTION DES BASES DE DONNEES

Pr. Houda MOUDNI


1

2022/2023
Déroulement
Volume Horaire :
 CM : 15h
 TP : 11h

Evaluation :
 Contrôles Continus + Quiz + Travaux à rendre + Assiduité = 40%
 Examen final: 60%

2
Plan du cours

Chap. 1 - Notion de base de données;

Chap. 2 - Base de données relationnelles;

Chap. 3 - Langage SQL

3
Chapitre 1: Notion de Bases de données
1. Introduction;

2. Définition d’une base de données et d’un SGBD;

3. Différents types de bases de données;

4. Quelques SGBD existants;

5. Objectifs et avantages des BD et SGBD;

6. Conclusion.

4
Les informations dans l’entreprise

Décisions
Chef
d’entreprise

Informations

5
Où se trouve les informations ?

Documents

Carte mémoire

Ordinateurs

Clé USB
6
Risques
• Des informations sont éparpillées
• Oublie d’information
• Plusieurs erreurs possibles
• Perte du temps

Résultats: Prendre de mauvaise décisions

7
Solutions

Deux approches :

1. Approche Fichiers : données en fonction du traitement → risque


d’incohérence;
2. Approche Base de données : intégration des données dans un seul
fichier / indépendance des traitements.

8
Base de données ou Excel?

• Redondance :
Données répétées (info client si plusieurs commandes, info produit si plusieurs fois
commandé…)
9
• Réécriture :
Orthographe, perte de temps, mise à jour difficile
Approche Base de données

Une Base de données (BD) est un ensemble structuré et organisé de


données permettant le stockage de grandes quantités d’informations afin
de faciliter l’exploitation.

10
Le système de gestion de base de données
La gestion de la base de données se fait grâce à un système appelé SGBD
(Système de Gestion de Bases de Données) ou en anglais DBMS (DataBase
Management System).
Le SGBD est un logiciel permettant de gérer les bases de données, c'est-à-
dire :
permettre l'accès aux données de façon simple
autoriser un accès aux informations à de multiples utilisateurs
manipuler les données présentes dans la base de données (insertion,
suppression, modification)
Le SGBD est l'interface entre la base de données et les utilisateurs 11
Niveaux de description des SGBD
Trois niveaux de description ou d'abstraction des données sont définis selon
la norme ANSI/SPARC (Standard Planning And Requirement Comitte):

1. le niveau interne avec le schéma physique ;


2. le niveau conceptuel avec le schéma conceptuel ;
3. le niveau externe avec les vues.

12
Niveau interne (ou physique) :
 Est le niveau relatif à la mémoire physique.

 Il concerne la structure de stockage physique de la base de données,


notamment, les types de fichiers utilisés, caractéristiques des
enregistrements (longueur, composants), ainsi que l’accès aux données
par exemple à travers les tables et les indexes.

13
Niveau externe

 il s’agit du niveau où les utilisateurs interrogent la BD.

 A ce niveau, à chaque utilisateur ou groupe d’utilisateurs, des vues sur


tout ou sur une partie du schéma sont associées.

14
Niveau conceptuel ou logique
 Décrit la structure des données dans la base, les contraintes d’intégrité,
leurs propriétés et leurs relations, indépendamment de toute
préoccupation technologique d'implémentation ou d'accès par les
utilisateurs;

 En général, la vue conceptuelle est censée être une vue des données
telles qu’elles sont réellement.

15
Niveaux de description des SGBD

Niveau Niveau Niveau


externe logique interne

16
Objectifs d'un SGBD
Un SGBD doit résoudre certains problèmes et répondre à des besoins précis :

• Indépendance physique (indépendance données/programme)


• Indépendance logique
• Non redondance des données
• Cohérence et intégrité des données
• Partage de données
• Sécurité des données

17
Indépendance physique

• Permet à l’administrateur de la BD d’être libre de modifier la structure de


mémorisation.
• Exemple : des nouveaux types de matériel de stockage disponibles.

• Le SGBD offre une structure permettant la représentation des données


réelles sans se soucier de l’aspect matériel du système.

18
Indépendance logique (1)

• Un même ensemble de données peut être vu différemment par des


utilisateurs différents.

• Chaque groupe de travail doit pouvoir se concentrer sur ce qui l’intéresse.

• Il peut arranger les données comme il souhaite, même si d’autres


utilisateurs ont une vue différente.

19
Indépendance logique (2)
Exemple: Une base de données contient les informations suivantes:
véhicule(num-véhicule, marque, type, couleur)
personne(num-CIN, nom, prénom)
propriétaire(num-CIN, num-véhicule, date-achat).
Un groupe de travail ne s’intéressera qu’aux individus qui possèdent
une voiture :
individus(num-CIN, nom, prénom, num-véhicule).
Un autre groupe ne s’intéressera qu’aux véhicules vendus à une
certaine date :
voiture(num-véhicule, type, marque, date-achat). 20
Non redondance des données

Le SGBD doit permettre d’éviter la duplication d’informations qui entraine :

 La perte de place mémoire,

 Demande des moyens humains importants pour saisir et maintenir à


jour plusieurs fois les mêmes données.

21
Cohérence des données
• Cohérence obtenue par la vérification des contraintes d’intégrité.
• Une contrainte d’intégrité est une contrainte sur les données de la base, qui
doit toujours être vérifiée pour assurer la cohérence de cette base.
• Les systèmes d’information sont souvent remplis de telles contraintes ; le
SGBD doit permettre une gestion automatique de ces contraintes d’intégrité
sur les données.
Par exemple :
‒ un identifiant doit toujours être saisi ;
‒ le salaire doit être positif
22
Partage de données
• Partage des données pour un accès multi-utilisateur simultané aux mêmes
données. Il faut entre autre assurer un résultat d'interrogation cohérent pour
un utilisateur consultant une base pendant qu'un autre la modifie.

• Le SGBD doit permettre à plusieurs utilisateurs d’accéder simultanément


aux données tout en conservant l’intégrité de la base de donnée.

23
Sécurité des données (1)
• Les données doivent pouvoir être protégées contre les accès non autorisés.

• Pour cela, il faut pouvoir associer à chaque utilisateur des droits d’accès
aux données.

Exemple: un chef de service pourra connaître les salaires des


personnes qu’il dirige, mais pas de toute l’entreprise.

24
Sécurité des données (2)

• Le système doit aussi tolérer les pannes :

si une panne pendant l’exécution d’une opération, le SGBD doit être capable
de revenir à un état dans lequel les données sont cohérentes.

25
Principales fonctionnalités d’un SGBD

 Création et mises à jour de la structure de la base de données.

 Administration de la base de données : gestion des utilisateurs, des


droits d’accès etc.

 Saisie et mises à jour des données.

 Interrogation des données selon différents critères et/ou en effectuant


des calculs (par les utilisateurs).

26
Les différents types de bases de données
Il existe trois grands types de bases de données :

1. Les bases hiérarchiques;


2. Les bases réseaux;
3. Les bases relationnelles;

27
Le modèle hiérarchique (1)
 Les données sont classées hiérarchiquement, selon une arborescence
descendante.

 Présente les données sous forme d’un arbre;

 Une donnée peut référencer une autre donnée dans une relation père/fils;

 Ce modèle utilise des pointeurs entre les différents enregistrements.

28
Le modèle hiérarchique (2)
Exemple hiérarchique

29
Le modèle hiérarchique (3)
Inconvénients :

 Redondance de données.

 Modification d'une information sur toutes les occurrences lors d'une


mise à jour;

 Toutes les interrogations dépendent de la racine (traverser l'arbre en


partant de la racine pour retrouver l'information).

 Manipulation difficile de données.


30
Le modèle réseau (1)
 Comme le modèle hiérarchique ce modèle utilise des pointeurs vers des
enregistrements.

 La structure n'est plus forcément arborescente dans le sens descendant.

31
Le modèle réseau (2)
Exemple réseau

32
Le modèle réseau (3)
Avantage par rapport aux SGBD hiérarchiques :

 la non redondance de données et la rapidité.

Inconvénients :

 Le schéma de la BD devient complexe quand la base de données est


importante.

33
Le modèle relationnel (1)
 les données sont enregistrées dans des tableaux à deux dimensions
(lignes et colonnes).

 La manipulation de ces données se fait selon la théorie mathématique des


relations

34
Le modèle relationnel (2)
Exemple relationnel

35
Le modèle relationnel (3)
Avantages :

• Facilité d’utilisation : Le modèle relationnel est très intuitif à utiliser


car composé de tableaux organisés de lignes et de colonnes.

• Capacité d'interrogation : Il permet à un langage de requête de haut


niveau comme SQL d'éviter une navigation complexe dans la base de
données.

36
Le modèle relationnel (4)

• Redondance des données : Une base de données relationnelle


garantit qu'aucun attribut n'est répété.

Aujourd’hui, le modèle relationnel est le plus utilisé il occupe environ


75% (environ trois quarts des bases de données).

37
Exemples de SGBD (1)

 Hiérarchiques : IMS;

 Réseaux : IDS2, Socrate-Clio;

38
Exemples de SGBD (2)
• Bases relationnelles

39
Méthodes de développement de bases de données
Un ouvrage est une oeuvre littéraire publiée. Il est caractérisé par
son numéro identifiant, son titre, son éditeur, sa date de première
parution, ses mots-clés (10 au maximum), une brève note de
présentation (ces notes sont en cours de constitution), le nom et
le prénom de ses auteurs. A un ouvrage correspondent un certain besoins des
nombre d'exemplaires, qui en sont la matérialisation physique. ... utilisateurs

Conception de
base de données
Conception de
base de données

create database BIB


create dbspace BIB_DATA;
create table OUVRAGE (
NUMERO char(18) not null,
TITRE varchar(60) not null,
EDITEUR char(32) not null,
DATE_1RE_PARUTION date not null, code SQL DDL
PRESENTATION varchar(255),
primary key (NUMERO)) in BIB_DATA;
. . .
alter table EXEMPLAIRE add constraint FKDE
foreign key (NUMERO)references OUVRAGE;
. . .
create unique index IDOUVRAGE
on OUVRAGE (NUMERO);
. . . 40
Méthodes de développement de bases de données
OUVRAGE
Numéro
Titre AUTEUR
Editeur écrit
0-N 1-N Nom
Date 1re parution
Prénom
Mot clé[0-10]
Un ouvrage est une oeuvre littéraire publiée. Présentation[0-1]
Il est caractérisé par son numéro identifiant, id: Numéro
son titre, son éditeur, sa date de première
0-N
parution, ses mots-clés (10 au maximum),
une brève note de présentation (ces notes de
sont en cours de constitution), le nom et le 1-1
prénom de ses auteurs. A un ouvrage MOT_CLE OUVRAGE AUTEUR
EXEMPLAIRE
correspondent un certain nombre NUMERO NUMERO ID_AUTEUR
Num série MOT_CLE TITRE NOM
d'exemplaires, qui en sont la matérialisation Date acquisition id: NUMERO EDITEUR PRENOM
physique. ... Localisation MOT_CLE DATE_1RE_PARUTION id: ID_AUTEUR
Etage ref: NUMERO PRESENTATION[0-1]
Rayon id: NUMERO
Travée
Etat[0-1] EXEMPLAIRE
id: de.OUVRAGE schéma NUMERO ECRIT
Conception de Num série NUM_SERIE ID_AUTEUR
conceptuel NUMERO
base de données DATE_ACQUISITION
id: ID_AUTEUR
LOC_ETAGE
LOC_RAYON NUMERO
LOC_TRAVEE ref: NUMERO
ETAT[0-1] equ: ID_AUTEUR
id: NUMERO
MOT_CLE OUVRAGE AUTEUR NUM_SERIE
create database BIB NUMERO NUMERO ID_AUTEUR ref: NUMERO schéma logique
create dbspace BIB_DATA; MOT_CLE TITRE NOM
EDITEUR PRENOM
(relationnel)
create table OUVRAGE ( id: NUMERO
MOT_CLE DATE_1RE_PARUTION id: ID_AUTEUR
NUMERO char(18) not null, PRESENTATION[0-1]
acc acc
TITRE varchar(60) not null, ref: NUMERO id: NUMERO
EDITEUR char(32) not null, acc
DATE_1RE_PARUTION date not null, EXEMPLAIRE ECRIT
PRESENTATION varchar(255), NUMERO ID_AUTEUR
primary key (NUMERO)) in BIB_DATA; NUM_SERIE NUMERO
. . . DATE_ACQUISITION
id: ID_AUTEUR
alter table EXEMPLAIRE add constraint FKDE LOC_ETAGE
NUMERO
LOC_RAYON BIB_DATA
foreign key (NUMERO)references OUVRAGE; acc 41
LOC_TRAVEE
. . . OUVRAGE ref: NUMERO
ETAT[0-1]
create unique index IDOUVRAGE MOT_CLE acc
id: NUMERO equ: ID_AUTEUR
on OUVRAGE (NUMERO); NUM_SERIE
EXEMPLAIRE
. . . ECRIT
acc AUTEUR
schéma physique
ref: NUMERO
Analyse conceptuelle

Produit en entrée : besoins fonctionnels des utilisateurs

Processus : construction d'un schéma qui exprime formellement et de


manière abstraite les besoins fonctionnels des utilisateurs

Produits en sortie : schéma conceptuel (MCD)

42
Conception logique

Produit en entrée : schéma conceptuel

Processus : construit un schéma logique équivalent au schéma conceptuel


et conforme à un modèle de base de données

Produit en sortie : schéma logique de la base de données (MLD)

43
Conception physique

Produits en entrée : schéma logique

Processus : construit un schéma physique équivalent au schéma logique,


conforme aux spécificités d'un SGBD.

Produit en sortie : schéma physique selon un SGBD

44
Les concepts de base d’un MCD
• Les données à ne pas prendre en compte dans un MCD sont, en général,
les données calculées et concaténées.

• IL FAUT:
 Supprimer les données calculées ;
 Décomposer les données concaténées : (Adresse : Rue, ville et code
postal).

45
Les concepts de base d’un MCD
ENTITE :
• Une entité est la représentation d’un objet matériel ou immatériel ayant un rôle
dans le système que l'on désire décrire. Une entité peut être :
 Une personne (CLIENT)
 Un lieu (DEPOT, BUREAU, ATELIER, …)
 Un objet documentaire ( LIVRE, OUVRAGE, DOSSIER,…)

• L’entité est représentée par un rectangle.

• Une entité est caractérisée par :


 Un identifiant.
 Une suite d’information liée à cet identifiant (propriétés). 46
Les concepts de base d’un MCD
IDENTIFIANT

• L’identifiant est un attribut qui permet de retrouver une occurrence d'entité


unique à tout instant parmi celles de l’entité.
Ex: CNE dans étudiants, CIN dans Clients.

47
Les concepts de base d’un MCD
PROPRIÉTÉ :

• une donnée élémentaire que l ’on perçoit sur une entité.


Exemple :
 CNE, nom, prénom, e-mail, année,… pour l’entité étudiant.
 Numéro, étage, bloc,… pour l’entité salle.
 Matricule, année, colleur, type vitesse,… pour l’entité voiture

48
Les concepts de base d’un MCD

ASSOCIATION :

• Une association est une relation, un lien logique (sémantique) entre deux
ou plusieurs entités.
• L’association est représentée par un verbe.
• L'association est représentée par un ovale.

49
Les concepts de base d’un MCD
On distingue différents types d’association:

 Les associations binaires: qui associent 2 entités.


 Les associations ternaires: qui associent 3 entités.
 Les associations n-aires: qui associe plus de 2 entités (ex:
associations ternaires, quaternaires).
 Les associations réflexives: qui associent les occurrences d’une
même entité.
 Les associations plurielles: lorsque deux mêmes entités sont
plusieurs fois en association. 50
Les concepts de base (MCD)

ASSOCIATION BINAIRE

Dimension = 2 → association binaire

Elève
CodeMassar
Nom
Matière
Etudier
Prénom CodeMatière
Date naissance Note Désignation
Ville
NiveauEtude

51
Les concepts de base (MCD)

ASSOCIATION TERNAIRE

Dimension = 3 → association ternaire


Professeur

Matière Enseigner Classe

… Nbre d’heure …
52
Les concepts de base (MCD)
ASSOCIATION RÉFLEXIVE

53
Les concepts de base (MCD)
ASSOCIATION PLURIELLE

Personne Travailler dans


Projet
Code_personne
Code_projet
Nom
Désignation
Prénom
Durée
Date naissance Diriger
Adresse

54
Les concepts de base d’un MCD
CARDINALITÉ :
• La cardinalité d'une entité est composé d'un couple comportant une borne
maximale et une borne minimale.

 la borne minimale (généralement 0 ou 1) décrit le nombre minimum


de fois qu'une entité peut participer à une relation.

 la borne maximale (généralement 1 ou n) décrit le nombre maximum


de fois qu'une entité peut participer à une relation.
55
Exemple d’un MCD

Client Commande
1,n 1,1
Num_Client Passe Num_Cde
Nom Date_Cde
Prenom

56
Du MCD vers MLD
Traitement des Entités
• chaque entité devient une table ;
• chaque propriété d'une entité devient une colonne ;
• L'identifiant de l'entité devient la clé primaire.
Traitement des Associations diffère selon la cardinalité
• Association binaire avec au moins une cardinalité (x,1);
• Association binaire avec les deux cardinalités (x,n) ;
• Association non binaire.

57
Du MCD vers MLD
Cas 1 : Association binaire avec au moins une cardinalité maximale à 1 .

 Elimination de l’association et migration de l’identifiant de l'entité du

coté (x, n) dans la table de l'entité du coté (x, 1) ;

 Si l'association est porteuse de données, ses propriétés deviennent des

attributs de la table de l’entité coté (x,1).

58
Exemple
Etudiant Formation
1,1 Suit 0,n
Num_Etu Libelle_Formation
Nom Description
Prenom

Etudiant Formation

Num_Etu Libelle_Formation
Nom Description
Prenom
#Libelle_Formation 59
Du MCD vers MLD
Cas 2 : Association binaire avec les deux cardinalités maximales à n .

 L’association devient une table avec migration des identifiants des deux entités

dans la table de l'association ;

 La clé primaire de la nouvelle table est la combinaison des identifiants des deux

entités participantes à l’association ;

 Si l'association est porteuse de données, ses propriétés deviendront des

attributs de la nouvelle table. 60


Exemple
Formation Cours
1,n Contient 1,n
Libelle_Formation Libelle_Cours
Description Coefficient Enseignant

Formation Cours
Contient
Libelle_Formation Libelle_Cours
Description #Libelle_Formation Enseignant
#Libelle_Cours
#Enseignant
Coefficient 61
Du MCD vers MLD
Cas 3 : Association non binaire ( qui relie plus de deux entités).

 L’association devient une table avec migration des clés primaires des entités

participantes dans la table de l'association;

 La clé primaire de la nouvelle table est la combinaison des clés primaires des

entités participantes à l’association.

 Si l'association est porteuse de données, ses propriétés deviendront des

attributs de la nouvelle table. 62


Exemple
Enseignant Matière

No_Enseignant 1,n Enseigne 1,n Code_Matiere


Nom Libelle
Prenom
Date_de_naissance

1,n

Classe

Nom_Classe
Cycle

63
Exemple
Enseignant Enseigne Matière

No_Enseignant #Code_Matiere Code_Matiere


Nom #No_Enseignant Libelle
Prenom #Nom_Classe
Date_de_naissance

Classe

Nom_Classe
Cycle

64
Chapitre 2: Le modèle relationnel

1. Introduction;

2. Concepts de base;

3. Algèbre relationnelle;

65
Motivation d’un MLD

• Un Modèle Conceptuel de Données n’est pas directement implantable car


indépendant de tout choix technologique;

• Traduction nécessaire vers un Modèle Logique de Données:

 Suit une approche spécifique de modélisation (hiérarchique, objet,


relationnelle, …)

66
Origine du modèle relationnel
• Proposé par Codd (Thèse de doctorat) en 1970.

• Le modèle relationnel fournit un support mathématique cohérent à la


manipulation de données : l’algèbre relationnelle.

• Modèle dominant dans les offres commerciales de SGBD :

 Oracle, DB2, Sybase, Ingres, Postgres, MySQL, Access

67
Base de données relationnelle
• Une BD relationnelle est composée d’un ensemble de tables (ou
relations).

• Une table possédant un nom et est composée de :

 Lignes qu’on appelle enregistrements (ou tuples).

 Colonnes représentant chacune un champ (ou un attribut).

• Chaque champ a un nom et un type :

 Texte, numérique, date, … 68


Base de données relationnelle
• Manipulation par des opérateurs de l’algèbre relationnelle.

• Cohérence des données gérée par des règles et normes (Vérifiée surtout
au niveau MCD)

 Dépendances fonctionnelles

 Théorie de la normalisation

69
Exemple de tables

70
Domaine
• Chaque colonne d’une table appartient à un ensemble de valeurs
possibles appelé son domaine.

• Le domaine désigne toutes les valeurs permises qui peuvent apparaître


dans la colonne.

• Un domaine se définit soit :

 en extension : couleur_voiture = {bleu, vert, marron, noir, gris, rouge}

 en compréhension : âge_enfants = {x dans N tel que x < 15}


71
Relation
Définition:
‒ Sous-ensemble du produit cartésien d’une liste de domaines
caractérisé par un nom.
‒ La relation est aussi appelée TABLE.
Exemple :
Soient D1={Mohamed, Ali, Sara, Loubna} et
D2={Rabat, Béni Mellal, Kenitra}
Relation « Est né à » D1 D2
« Est né à » Mohamed Rabat

Ali Rabat 72

Sara Béni Mellal

Loubna Kenitra
Attribut
Définition:
‒ Colonne d’une relation caractérisée par un nom.
‒ Le nom associé à un attribut est généralement porteur de sens : il diffère
donc du nom du domaine qui supporte l’attribut.
Exemple :
« Est né à » Prénom VilleNatale

Mohamed Rabat
Relation Ali Rabat
« Est né à »
Sara Béni Mellal

Loubna Kenitra

Attributs : Prénom et VilleNatale 73


Tuple
Définition:
‒ Ligne d’une relation correspondant à un enregistrement.

« Est né à » Prénom VilleNatale

Mohamed Rabat
Relation Ali Rabat
« Est né à » Sara Béni Mellal

Loubna Kenitra
Attributs : Prénom et VilleNatale

Tuples : (“Mohamed”, “Rabat”), (“Ali”, “Rabat”), …


74
Schéma de relation
• Le schéma de relation représente la structure invariante d’une relation.

• Constitué du nom de la relation suivi de la liste des attributs et de leurs


domaines associés.

Produit (n_produit : entier, nom : texte, qte_en_stock : entier)

• Les attributs constituant la clé primaire de la relation r sont écrits en


premier dans le schéma de relation et sont généralement soulignés.

75
Base de données relationnelles
• Ensemble de schémas de relation.

• La conception d’une base de données relationnelle revient donc à


construire un ensemble de schémas de relation qui modélise au mieux le
monde réel.
Exemple:
Auteur(NoAuteur: entier, Nom: texte, Prenom: texte)
Livre(NumLivre: entier, #NumAuteur: entier, Titre: texte)
76
Degré & cardinalité
• Le degré d’une table est le nombre de ses attributs.

• Exemple : La table Produit (code produit, libellé du produit, prix unitaire,


quantité en stock).

• Le degré de la table « Produit » est égale à 4.

• Le nombre total des enregistrements présents dans une table est appelé la
cardinalité de la table.

77
Exemple de relations

78
Règles pour une relation
• Deux tables d’une même BD ne peuvent avoir le même nom.
• Deux colonnes d’une même table ne peuvent avoir le même nom.
• Un même champ peut être présent dans plusieurs tables.
• L’ordre des colonnes est sans aucune importance.
• Toutes les lignes ont le même format et le même nombre d’entrée.
• Chaque entrée dans chaque ligne doit être une valeur unique.
• L’ordre des lignes est sans importance car elles sont identifiées par leur
contenu.
• Il n’y a pas deux lignes identiques dans toutes leurs entrées. 79
La valeur NULL
• Dans une relation, la valeur NULL représente des données manquantes,
inconnues.

• La valeur NULL correspond à une entrée non renseignée (non saisie, non
introduite, non obligatoire).

Attention :

La valeur NULL n’est pas égale à 0 (zéro) et ne représente aucune valeur


particulière pour l’ordinateur.
80
Les règles d'intégrité

 Intégrité de domaine.

 Intégrité de relation.

 Intégrité de référence.

81
Intégrité de domaine
• Contrôle des valeurs des attributs:

 par exemple, 4.000 ≤ salaire ≤ 20.000

 liste de couleurs possibles [bleu, rouge, vert, jaune]

• Contrôle entre valeurs des attributs:

 QTE_STOCK ≥ QTE_COMMANDE

82
Intégrité de relation

• Unicité de la clé primaire;

• Aucun des attributs de la clé primaire ne doit être NULL (du fait que la clé
primaire identifie de manière unique les tuples d’une relation).

83
Clé étrangère

84
Clé étrangère
• Clé étrangère permet au SGBDR de maintenir la cohérence des lignes de
deux relations ou des lignes de la même relation.

• Définition : une clé étrangère est un attribut appartenant à une table qui
existe aussi en tant que clé primaire dans une autre table.

• Une clé étrangère d’une table référence une clé primaire d’une autre table.

• Les valeurs de clé étrangère qui apparaissent dans une table doivent être
les mêmes que celles de clé primaire dans la table connexe.
85
Clé étrangère

CLIENT ( NumCli, Nomcli, Adresseruecli, AdresseCPcli, Adressevillecli)


COMMANDE ( NumCom, datecom, # NumCli)

Si la relation comprend un attribut clé étrangère, celui-ci sera placé à la fin et


précédé du signe #.
86
Clé étrangère
• 2 tables

• 1 champ en commun dans chacune des tables

• même type de champ (texte avec texte, numérique avec numérique ...)

• même longueur (pas un champ long de 15 caractères avec un autre long


de 20 caractères)

• même genre d'information (Ex.: Code d'inventaire avec des codes


d'inventaires, CNE avec CNE ...)
87
Contrainte d’Intégrité Référentielle
Un SGBDR doit appliquer les règles suivantes afin d’assurer les CIR :
• Ajout : lors de l’ajout d’une ligne contenant une valeur de clé étrangère, le
SGBD vérifie que cette valeur existe aussi comme valeur de clé primaire
dans la table connexe.
• Suppression : lors de la suppression d’une ligne, le SGBD vérifie
qu’aucune clé étrangère dans les tables connexes ne possède la même
valeur que la clé primaire de la ligne supprimée.
• Mise à jour (ou modification) : lors de la mise à jour d’une valeur de clé
primaire, le SGBD vérifie qu’aucune clé étrangère dans les tables
connexes n’a la même valeur. 88
Contrainte d’Intégrité Référentielle
• Dans le premier cas, le SGBD rejettera l’ajout d’une ligne contenant une valeur
clé étrangère inconnue.

• Dans les deux derniers cas, un concepteur de BD conserve habituellement un


certain contrôle sur la façon dont l’application référentielle est appliquée.

• Lorsqu’une ligne contenant une clé primaire est supprimée, le concepteur peut
spécifier au SGBD de supprimer toutes les lignes des autres tables ayant des
clés correspondantes ou de régler toutes les clés étrangères correspondantes à
NULL.
89
Les relations entre tables

• Dans une BD, certaines tables sont en relation les unes avec les autres.

• Dans les BD relationnelles, les relations entre tables sont généralement


établies par l’intermédiaire de clés primaires et étrangères.

• On répartie les données dans des tables que l’on relie pour réduire la
redondance des données.

90
Les relations entre tables

• Relation « un à un » : une ligne d’une table A est en relation avec une


seule ligne d’une autre table B.

• Relation « un à plusieurs » : une ligne d’une table A peut être en relation


avec plusieurs lignes d’une autre table B.

91
Les relations entre tables
Exemples de relations entre tables :

• Un président dirige une université :

 Relation de type un à un.

• Un propriétaire possède plusieurs voitures, une voiture appartient à un seul


propriétaire :

 Relation de type un à plusieurs.

92
Les relations entre tables

93
Les relations entre tables

94
Exercice
• Considérons la table Département

• Expliquez si ces les lignes peuvent être ou non insérées dans la table
Département.

95
Solution de l’exercice
• 1ère ligne  Non : cette ligne ne peut pas être insérée, car elle viole le
principe d’unicité de la clé primaire (la valeur 10 existe déjà dans la table).

• 2ème ligne  Non : cette ligne ne peut pas être insérée, car elle viole la
contrainte d’intégrité de la clé primaire (la clé primaire ne peut pas être
NULL).

• 3ème ligne  Oui : cette ligne peut être insérée sans problème, car aucune
contrainte n’est violée.
96
Normalisation
• Lors de la conception d’une BD, plusieurs possibilités de modélisation
existent;
• La qualité d’un modèle dépend de plusieurs facteurs:
 quantité d'information à stocker
 facilité d'expression des requêtes
 prévention d'erreur de mise à jour et d'incohérences
• La normalisation d’une BDD implique le respect de critères de protection de
l’intégrité des données.
• Plusieurs formes normales existent dont 1ère, 2ème, 3ème sont largement
suffisantes. 97
La normalisation : exemple
• Une entreprise de vente de bateaux qui souhaite constituer un SI relatif à
son activité.
Achats(IdClient, NomClient, PrénomClient, AdresseClient,
ImmatriculationBateau, ModèleBateau, LongueurBateau, DateAchat,
MontantAchat)
Problèmes potentiels
1. redondance de données :
une personne qui achète plusieurs bateaux
2. incohérence suite à une Mise à jour :
une personne qui change d’adresse 98
La normalisation : exemple
3. anomalies lors d’insertion/suppression :
• un client potentiel ne peut être enregistré dans la BD s’il n’a pas
encore acheté de bateau.
• lorsqu’un client vend son bateau, il est supprimé du système
d’information.

99
Comment normaliser ?

Décomposition des relations jusqu’à ce que toutes respectent les 3 Formes


Normales.

100
Première Forme Normale
Une relation est dite en Première Forme Normale si tous ses attributs sont
atomiques ;
• aucun des attributs ne doit être une relation entre « sous-attributs »
• pas de colonnes dans une colonne

Nom Notes Nom Note1 Note2 Note3


Mohamed 12; 14.5; 16 Mohamed 12 14.5 16

Sara 9; 10; 13.5 Sara 9 10 13.5

101
Dépendance Fonctionnelle

Définition
• Deux groupes d’attributs X et Y de la relation R sont en Dépendance
Fonctionnelle si dans R, chaque valeur de X détermine une et une seule
valeur de Y

si je connais la valeur de X alors je connais la valeur de Y

102
Exemple 1
Soit les deux attributs suivantes:
• Code APOGEE
• Nom étudiant
Est qu’il y a une dépendance fonctionnelle entre ces deux attributs?
Détermine ?
Code APOGEE Nom étudiant

103
Exemple 2
Soit les deux attributs suivantes:
• Nom client
• Date de commande
Est qu’il y a une dépendance fonctionnelle entre ces deux attributs?
Détermine ?

Nom client X Date commande

Il n’y a pas de dépendance fonctionnelle entre Nom client et Date


commande. 104
Seconde Forme Normale
Condition
 Cette normalisation exige que les relations soient déjà en première forme
normale.
 Elle ne concerne que les relations à une clé composée (composée de
plusieurs attributs).
 Tous les attributs n’appartenant pas à la clé sont en dépendance
fonctionnelle avec la clé. (dès qu’un attribut non-clé dépend d’une partie
de la clé, la relation n’est pas en 2FN)
105
Exemple
• Prêt_livre (numcli, numlivre, nomcli, adrcli, titre_livre, dateprêt)
• DF
numcli  nomcli, adrcli
num_livre  titre_livre
numcli, numlivre  dateprêt
• Prêt_livre n ’est pas en 2 FN car nomcli dépend uniquement de numcli et pas de
numcli et de numlivre.
• décomposition
client (numcli, nomcli,adrcli)
Livre (num_livre, titre_livre)
prêt (numcli, numlivre, dateprêt)
106
Troisième Forme Normale
Condition
 Cette normalisation exige que les relations soient déjà en seconde Forme
Normale (2FN).

 Aucun de ses attributs non-clés ne dépend d’un autre attribut non-clé ; (il
n’existe pas de DF entre 2 attributs non-clés).

107
Exemple
• ville(num_ville, nom_ville, num_dept, nom_dept)
• DF
num_ville  nom_ville, num_dept, nom_dept
num_dept  nom_dept
• ville n’est pas en 3 FN car nom_dept dépend de num_dept
• décomposition
ville(num_ville, nom_ville, num_dept)
dept(num_dept, nom_dept)
108
Algèbre relationnelle
Définition:
• Collection d’opérations formelles qui agissent sur des relations et
produisent une relation en résultat.
• Dans la plupart des systèmes relationnels, la réponse à une requête
s’obtient par l’utilisation d’un ou plusieurs opérateurs relationnels.
Deux types d’opérateurs:
Opérateurs unaires :
Sélection, Projection,
Opérateurs binaires :
Union, Intersection, Différence, Produits, Jointures, … 109
Algèbre relationnelle

Motivation : Formuler des requêtes pour interroger des données.

• Qu’est-ce qu’une requête ?

une expression dans l’algèbre relationnelle, i.e., des opérations sur les
tables.

110
Algèbre relationnelle
• Soit Filtrer :
‒ Sélection (filtre / critères)
‒ Projection (choix de colonnes)
‒ Différence (suppression de lignes)
• Soit Combiner :
‒ Produit cartésien (toutes les possibilités)
‒ Jointure (complément d'information)
‒ Union (union d'ensembles de lignes)…
111
Opérateurs relationnels unaires

• Projection

Seule une partie des attributs est considérée.

• Sélection

Seule une partie des tuples est considérée.

112
Projection
La projection d’une relation R sur un ensemble d’attributs (A1 ,…, Ak ) se note
:

113
Exemple 1
• Quels sont les références et les prix des produits ?

𝜋𝐼𝑑𝑃𝑟𝑜,𝑃𝑟𝑖𝑥 (𝑃𝑟𝑜𝑑𝑢𝑖𝑡)

114
Exemple 2
• Quelles sont les marques des produits ?

𝜋𝑀𝑎𝑟𝑞𝑢𝑒 (𝑃𝑟𝑜𝑑𝑢𝑖𝑡)

115
Sélection
• La sélection sur une relation R selon une condition C se note:

116
Exemple
• Quelles sont les produits de marque ‘IBM’ ?

• 𝜎𝑀𝑎𝑟𝑞𝑢𝑒="𝐼𝐵𝑀" (𝑃𝑟𝑜𝑑𝑢𝑖𝑡)

117
Sélection

• Opérateurs de comparaison :

=, ≠ , < , > , ≤ , ≥ , BETWEEN (entre), IN (dans), LIKE(comme)

• Combinaison de plusieurs conditions reliées par des opérateurs logiques :

and, or, not

118
Opérateurs relationnels binaires
• Union : La fusion de deux relations est considérée.
• Différence : Les tuples d’une relation qui n’existent pas dans une seconde
relation sont considérés.
• Produit cartésien : Toutes les combinaisons entre tuples de 2 relations
sont considérées.
• Intersection : Seuls les tuples présents dans 2 relations sont considérés.
• Thêta-produit : Produit cartésien suivi d’une sélection (Appelé également
jointure). 119
Union
• L’union de deux relations R et R’ se note : 𝑅 ∪ 𝑅′

120
Intersection
• L’intersection de deux relations R et R’ se note : 𝑅 ∩ 𝑅′

121
Différence
• La différence de deux relations R et R’ se note : 𝑅 − 𝑅′

122
Produit cartésien
• Le produit cartésien de deux relations R et R’ se note : 𝑅 × 𝑅′

123
Jointures
• Jointure naturelle
Thêta-produit dont la condition est une égalité de valeurs entre des
attributs de deux relations.
• Jointure extérieure
Jointure naturelle à laquelle on ajoute les tuples de chaque relation
n’ayant pas trouvé de correspondance dans l’autre.
• Semi-jointure
Jointure naturelle à laquelle on ajoute les tuples de la première relation
n’ayant pas trouvé de correspondance dans l’autre.
 La jointure naturelle est l’opérateur le plus utilisé avec les sélections et 124

projections.
Jointure naturelle
• La jointure naturelle de deux relations R et R’ selon une condition C se note
:

125
Renommage
• C’est l’opérateur qui permet de donner un nouveau nom à un attribut
existant. 𝑅′ = 𝜌𝑎Τ𝑏 𝑅

126
Combinaison d’opérateurs
La puissance de l'algèbre relationnelle s'exprime dans la combinaison
d’opérateurs permettant d'exprimer des requêtes précises.
Ex: on cherche l’immatriculation des véhicules possédés par la personne
dont le nom est « Ali ».

127
Exercice Algèbre relationnelle

128
Exercice
Soit la base de données simplifiée. Exprimer la signification et le résultat des
requêtes suivantes:

129
Chapitre 3: Le langage SQL

1. Présentation du langage SQL;

2. Types de données;

3. Requêtes d’action;

4. Requêtes de sélection;

130
Présentation du langage SQL
• Le sigle SQL signifie "Structured Query Language", soit en français
"Langage de requêtes structuré".
• Il a été développé par IBM au cours des années 70 et son nom était
SEQUEL, abréviation de Structured English QUEry Language.
• SQL : langage proche de l’utilisateur et de sa façon de poser les requêtes
(formulation proche du langage naturel).
• SQL : langage facile à apprendre pour rédiger les requêtes, les lire et les
comprendre. 131
Présentation du langage SQL
Utilisation de SQL :

• En mode interactif : l’utilisateur écrit textuellement une commande


SQL et récupère le résultat immédiatement.

• En mode intégré : une commande SQL est mélangée avec les


instructions d’un programme en langage de haut niveau tel que C,
C++, Visual basic, Pascal...

132
Types de données
• INTEGER ou INT : entiers signés.
• TEXT(p) ou CHAR(p) : chaîne de caractères de longueur fixe de p caractères.
• VARCHAR (p): chaîne de caractères de longueur variable de p caractères
maximum.
• DATE, TIME, DATETIME: dates et/ou heures.
• LOGICAL : valeur logique « oui » ou « non ».
• DECIMAL(p, q) : nombres décimaux de p chiffres dont q après le point décimal
(par défaut, q = 0).
• FLOAT : nombre réel en virgule flottante.
• … 133
Types de données
Quelques propriétés des attributs en SQL :
• PRIMARY KEY : clé primaire.
• FOREIGN KEY : clé étrangère.
• NULL / NOT NULL : valeurs non obligatoires/obligatoires.
• DEFAULT = Valeur : pour définir une valeur par défaut.
• UNIQUE : permet de vérifier que la valeur saisie pour un champ
n'existe pas déjà dans la table.
• CONSTRAINT : permet de donner un nom à une contrainte ce qui
permet de la manipuler. 134
Conventions
Les conventions relatives aux noms des tables et des champs varient
quelque peu d'un SGBD à l'autre:
• Le nombre de caractères ne doit pas être trop grand (64 dans Access,
18 à 30 dans d'autres SGBD) ;
• Seuls les lettres, les chiffres et le caractère de soulignement sont
autorisés.
• Certains SGBD requièrent que le nom d'un champ commence par une
lettre, mais ce n'est pas le cas d'Access ;
• Les termes faisant partie du vocabulaire du langage SQL sont interdits
("date » par exemple). Ce sont les mots réservés. 135
Les requêtes dans SQL

On distingue 3 types de requêtes:

• Actions (Création et m.à.j),

• Sélections (Interrogation)

• Contrôle (définir des permissions pour les utilisateurs).

136
Requêtes d’action
• Requêtes d’actions: Sont des requêtes qui permettent de créer des tables,
d’ajouter, de supprimer des enregistrements d’une table, d’ajouter une
colonne…
• Création d’une table : Cette opération donne comme résultat une table
vide ne contenant aucun enregistrement.
 Il faut préciser :
 Le nom de la table;
 La description de ses colonnes : nom, type de données et
contraintes.
 L’instruction CREATE TABLE permet de créer une nouvelle table. 137
Création de table
• Syntaxe SQL pour créer une nouvelle table avec une clé primaire :
CREATE TABLE nom_de_la_table (
champ1 type_donnees PRIMARY KEY ,
champ2 type_donnees,
champ3 type_donnees,
champ4 type_donnees
);

138
Création de table
• Syntaxe SQL pour créer une nouvelle table avec une clé primaire composé :
CREATE TABLE nom_de_la_table (
champ1 type_donnees,
champ2 type_donnees,
champ3 type_donnees,
champ4 type_donnees,
PRIMARY KEY (champ1,champ2)
);
139
Création de table: Exemple

CREATE TABLE Client(


Id INT PRIMARY KEY,
Nom TEXT,
Prenom TEXT,
Email TEXT NOT NULL,
Date_naissance DATE,
Pays TEXT,
Ville TEXT
); 140
Création d’une table: Clé étrangère

• Créez une requête SQL permettant de créer la table Participe (Numadh:


entier, Numact: entier, AnneeParticipe: entier);

• Numadh est la clé primaire de la table Adherent et Numact est la clé


primaire de la table Activite.

141
Création d’une table: Clé étrangère
CREATE TABLE Participe (
Numadh INT,
Numact INT,
anneeParticipe INT,
PRIMARY KEY (Numadh, Numact, AnneeParticipe),
FOREIGN KEY (Numadh) REFERENCES
Adherent(Numadh),
FOREIGN KEY (Numact) REFERENCES Activite(Numact)
);

142
Modification dans une table

• L’instruction ALTER TABLE permet d’ajouter ou de supprimer un seul


champ à une table.

143
Modification dans une table
Il y a trois types d’actions concernant la modification de structure d’une table :
 Ajouter une ou plusieurs colonnes.
 Supprimer une ou plusieurs colonnes.
 Modifier les propriétés d’une ou de plusieurs colonnes.
Les commandes SQL relatives à ces actions :
 ADD
 DROP
 MODIFY
144
Modification dans une table
• Pour modifier la structure d’une table, on précise tout d’abord le nom de
celle-ci en écrivant la commande suivante :

ALTER TABLE Nom_table

• En suite, on spécifie la nature de l’action de modification (ajout, suppression


ou modification).

• Pour cela, il faut utiliser l’une des trois commandes : ADD, DROP ou
MODIFY.
145
Modification dans une table : Exemples d’ajout
• Ajouter une colonne « DATECOMPTE » de type Date dans la table «
COMPTE » :
ALTER TABLE COMPTE
ADD DATECOMPTE DATE;
Ou
ALTER TABLE COMPTE
ADD Column DATECOMPTE DATE;

146
Modification dans une table: Exemples de suppression

• Supprimer la colonne « ADRAGENCE » de la table « AGENCE » :

ALTER TABLE CLIENT

DROP ADRAGENCE;

147
Modification dans une table : Exemples de modification
de propriétés
• Modifier la colonne « AGE » de la table « CLIENT » pour qu’elle soit
obligatoire:
ALTER TABLE CLEINT
MODIFY AGE NOT NULL;
• Modifier le type de la colonne « ADRAGENCE » pour qu’il soit un
CHAR(100) au lieu de CHAR(40) :
ALTER TABLE AGENCE
MODIFY ADRAGENCE CHAR(100);
148
Suppression d’une table

• La syntaxe SQL pour supprimer une table est très simple :


DROP TABLE Nom_table
Exemples :
DROP TABLE CLIENT
DROP TABLE AGENCE
DROP TABLE COMPTE

149
Insertion d’enregistrements

• La commande qui permet d’insérer une ligne dans une table est la suivante:

INSERT INTO Nom_table [(champ1, champ2, …)] VALUES


(valeur1, valeur2, …) ;

• Dans la clause “INTO…”, on spécifie le nom de la table ainsi que les noms
des colonnes.
• Si l’on veut ajouter une ligne contenant les valeurs pour tous les champs,
dans ce cas on peut omettre les noms de colonnes.
150
Insertion d’enregistrements: exemple

• Ajouter l’enregistrement suivant (100, BENALI, Aziz, Ingenieur, 90050)


dans la table EMPLOYES: EMPLOYES (Nemploye, Nom, Prenom,
Fonction, Adresse, Codeville)

INSERT INTO EMPLOYES (Nemploye, Nom, Prenom, Fonction,


Codeville) VALUES (100, "BENALI", "Aziz", "Ingenieur", 90050);

151
Modification d’un enregistrement

• L’instruction UPDATE permet la mise à jour d’une table;


• On modifie la valeur d’un champ d’un enregistrement qui vérifie une
condition précise (critère pour accéder à la ligne qui sera le sujet de la
modification);
• Syntaxe :
UPDATE table SET nouvelles valeurs WHERE critères

152
Modification d’un enregistrement

• Les champs à mettre à jour doivent être écrits dans la clause SET, l’un
après l’autre (avec leurs valeurs) et séparés par des virgules.

• Les champs non spécifiés après la clause SET ne seront pas modifiés.

• Si la clause WHERE est absente, tous les enregistrements de la table


seront affectées.

153
Modification d’un enregistrement: exemples
• Donner une requête SQL pour modifier l’adresse de l'employé numéro 10
par la nouvelle adresse sera "10 Avenue Mohamed VI, Rabat".

UPDATE EMPLOYES SET Adresse = "10 Avenue Mohamed VI,


Rabat" WHERE Nemployé = 10 ;

• Donner une requête SQL pour augmenter de 5% le salaire de tous les


acteurs : ACTEURS (N_act, Nom, Prénom, Nationalité, Salaire, Age, Films)

UPDATE ACTEURS SET Salaire = Salaire * 1.05 ;


154
Suppression d’enregistrements
• L’instruction DELETE permet d’effacer des enregistrements d’une table.

• La syntaxe de la commande est :

DELETE FROM Nom_table WHERE Condition;

• Pour supprimer tous les enregistrements d’une table, il suffit de ne pas


indiquer la clause WHERE.

155
Suppression d’enregistrements: exemples

• Effacez tous les enregistrements de la table ACTEURS;

DELETE FROM ACTEURS ;

• Effacez tous les acteurs de nationalité marocaine;

DELETE FROM ACTEURS WHERE Nationalite= "marocaine";

156
Les requêtes de sélection
• Une requête de type SELECTION permet d'interroger une base de données
en composant les projections, les restrictions, les jointures….

• Le résultat d’une telle requête est renvoyé sous forme d’une table formée
d’un ou plusieurs attributs.

Syntaxe :
SELECT nom_du_champ
FROM nom_de_table ;
157
Exemples
Soit la table ACTEURS :
ACTEURS (N_act, Nom, Prénom, Nationalité, Salaire, Films)

• Donner une requête SQL pour afficher tous les champs et tous les
enregistrements de la table ACTEURS:
SELECT * FROM ACTEURS;
• Requête SQL pour afficher uniquement le Nom, Prénom et le salaire de
chaque Acteur:
SELECT Nom, Prénom, Salaire FROM ACTEURS;
158
DISTINCT
• Cette requête sélectionne le champ « ma_colonne » de la table
« nom_du_table » en évitant de retourner des doublons.

Syntaxe :

SELECT DISTINCT ma_colonne


FROM nom_du_table ;

159
Exemple
SELECT DISTINCT prenom FROM client ;

Table :Client

160
• Avec l’instruction SELECT, il est possible d’utiliser les fonctions suivantes
pour effectuer des calculs:
‒ SUM () renvoie la somme d’un champ
‒ AVG () renvoie la moyenne d’un champ
‒ MAX () renvoie la valeur maximale d’un champ
‒ MIN () renvoie la valeur minimale d’un champ
‒ COUNT (*) renvoie le nombre d’enregistrements de la table

161
Exemples

• Afficher le nombre totale d’enregistrements de la table ACTEURS.


SELECT COUNT(*) FROM ACTEURS;
• Afficher le nombre totale d’enregistrements de la table ACTEURS et
nommer le champ retourné Nombre total.
SELECT COUNT(*) As Nombre_Total FROM ACTEURS;
• Afficher le nombre d’enregistrements de la table ACTEURS qui ont une
entrée dans le champ Nom. Nommer le champ retourné Nombre d’entrée.
SELECT COUNT(Nom) As Nombre_d’entrée FROM ACTEURS;
162
Exemples
• Afficher le total des salaires de la table ACTEURS et nommer le champ
retourné Total des salaires:
SELECT SUM(Salaire) As Total_des_salaires FROM ACTEURS;
• Afficher la moyenne des salaires de la table ACTEURS et nommer le
champ retourné Moyenne des salaires.
SELECT AVG(Salaire) As Moyenne_des_salaires FROM
ACTEURS;
• Afficher le salaire le plus élevé de la table ACTEURS et nommer le champ
retourné Salaire maximal.
SELECT MAX(Salaire) As Salaire_maximal FROM ACTEURS;
163
Les éléments de la clause WHERE
Permet d’extraire les lignes d’une base de données qui respectent une
condition. Cela permet d’obtenir uniquement les informations désirées.

Syntaxe :
SELECT nom_colonnes
FROM nom_table
WHERE condition ;

164
Les opérateurs de comparaison

• On peut utiliser les opérateurs suivants dans les conditions d’une requête :
 = : égal
 <> : différent
 < : inférieur strict
 > : supérieur strict
 <= : inférieur ou égal
 >= : supérieur ou égal

165
Les opérateurs de comparaison
• Comparaison à une valeur (= , < , > , >= , <= , <>)

• Comparaison à une fourchette de valeurs (BETWEEN … AND)

• Comparaison à une liste de valeur ( IN (. , . ,...) )

• Comparaison à un filtre (LIKE)

166
Les opérateurs logiques
• Ils permettent de construire des conditions plus complexes.
• Les opérateurs logiques de SQL sont :
• AND (ET) : conjonction.
• OR (OU) : disjonction
• NOT (NON) : négation
• L'opérateur AND réunit deux ou plusieurs conditions et sélectionne un
enregistrement seulement si cet enregistrement satisfait toutes les
conditions listées.
• L'opérateur OR réunit deux conditions, mais sélectionne un enregistrement
167
si une des conditions listées est satisfaite.
Exemples
• Afficher tous les noms d’acteurs dont le salaire est supérieur ou égal à 4000
SELECT Nom FROM ACTEURS WHERE Salaire >=4000;
• Afficher tous les noms d’acteurs dont la nationalité est américaine et le
salaire est supérieur à 4000
SELECT Nom FROM ACTEURS WHERE
(Nationalité="américaine") AND (Salaire > 4000);
• Afficher tous les noms d’acteurs dont la nationalité est américaine ou Le
salaire est supérieur à 4000
SELECT Nom FROM ACTEURS WHERE
(Nationalité="américaine") OR (Salaire >4000);
168
Exemples

• Afficher les acteurs dont le salaire est entre 3500 et 5000


SELECT * FROM ACTEURS WHERE Salaire BETWEEN 3500 AND
5000;
• Afficher tous les acteurs dont la nationalité est américaine, marocaine ou
égyptienne
SELECT * FROM ACTEURS WHERE Nationalité IN ("Américaine",
"Egyptienne", "marocaine");

169
Exemples

• Afficher tous les noms d’acteurs qui commencent par "D"


SELECT Nom FROM ACTEURS WHERE Nom LIKE "D*";
• Afficher tous les noms d’acteur ne commençant pas par D et ayant 4 lettres
SELECT Nom FROM ACTEURS WHERE Nom NOT LIKE "D*"
AND Nom LIKE "????";

170
Exemple

Soit les tables PRODUITS, COMMANDES, DETAILS et EMPLOYES.


• PRODUITS (Réf , Nompr, Nfournisseur, Pu)
• COMMANDES(Ncommande, Codecli, Nemployé, Date_commande)
• DETAILS(Ncommande, Réf , Quantité, Remise)
• EMPLOYES(Nemployé, Nom, Prénom, Fonction, Adresse, Ville)

171
Les jointures
• Jointure interne: utilise INNER JOIN. Ne sont incluses dans le résultat
final que les lignes qui se correspondent dans les deux tables.
• La jointure externe gauche, dans laquelle INNER JOIN est remplacé par
LEFT JOIN. Toutes les lignes de la première table sont incluses dans le
résultat de la requête, même s'il n'existe pas de ligne correspondante dans
la seconde table ;
• La jointure externe droite, dans laquelle INNER JOIN est remplacé par
RIGHT JOIN. Toutes les lignes de la seconde table sont incluses dans le
résultat de la requête, même s'il n'existe pas de ligne correspondante dans
la première table. 172
Exemple
• Afficher tous les produits (Réf, Nompr) qui ont été vendus.
SELECT PRODUITS.Réf, Nompr FROM PRODUITS INNER JOIN
DETAILS ON PRODUITS.Réf = DETAILS.Réf ;
Ou bien
SELECT PRODUITS.Réf, Nompr FROM PRODUITS, DETAILS
WHERE PRODUITS.Réf = DETAILS.Réf ;

173
ORDER BY
• Afficher tous les produits (Réf, Nompr) qui ont été vendus par ordre
décroissant selon le champ Réf.
SELECT PRODUITS. Réf, Nompr
FROM PRODUITS , DETAILS
WHERE PRODUITS. Réf = DETAILS . Réf
ORDER BY PRODUITS.Réf DESC;

Par défaut, le résultat d’une requête sélection est trié selon l’ordre croissant
(ASC) du premier attribut qui figure dans la clause SELECT.
174
GROUP BY
• En utilisant la table détails, afficher pour chaque commande le total de
quantités des produits vendus.
SELECT Ncommande, SUM(Quantité) AS Totale_quantités_
vendues
FROM DETAILS
GROUP BY Ncommande ;

175
HAVING
• Afficher pour chaque commande le total de quantités des produits vendus
et tel que ce total est > 60
SELECT Ncommande, SUM(Quantité) AS Totale_quantités_
vendues
FROM DETAILS
GROUP BY Ncommande
HAVING SUM(Quantité) > 60 ;

176
Exemple

• Afficher les commandes qui contiennent plus que 3 produits (>=3)


SELECT Ncommande, COUNT(Réf) AS Nombre_de_produits
FROM DETAILS
GROUP BY Ncommande
HAVING COUNT(Réf) >=3 ;

177

Vous aimerez peut-être aussi