Vous êtes sur la page 1sur 225

COURS

DOrganisation &
Exploitation des
donnes
1
S.Serrhini

Introduction
2

Objectifs

Contenu du cours

Organisation du cours

Supports

valuation
S.Serrhini

Introduction
3

OBJECTIFS :

Principes des SGBD = systmes de gestion des


bases de donnes.

Mise en pratique de ces principes


S.Serrhini

Introduction

CONTENU DU COURS :
I. Modles et langages :
Conception dun schma conceptuel et
relationnel
Langage de manipulation et dinterrogation
des donnes

II. Aspects systmes :


Stockage des donnes
Organisation des fichiers
S.Serrhini

5
Introduction

SUPPORTS :
Thorie :
syllabus S.SERRHINI
(version papier + en ligne sur EV)
copies transparents

Laboratoires :
cahier de laboratoire
(Au fur et mesure sur lE.V.)
S.Serrhini

6 Introduction
EVALUATION :

Thorie :
examen crit en juin/septembre
Interrogations ???
Laboratoires :
valuation continue
S.Serrhini

Le niveau
Organisationnel
MRD

7
S.Serrhini

MRD : soit lexemple suivant


8

Donnez le type de chaque association du MCD suivant ?

CLIENT 1,1 FACTURE PRODUIT


NumClient Correspondre
Nom NumFacture Rfrence
Prnom Date Dsignation
Adresse 0,1 0,N Prix
CodePostal Concerner
Ville 1,N Quantit
COMMANDE
0,N Prospecter
1,N
NumCommande 1,N
Effectuer Date
1,1 REPRESENTANT DEPARTEMENT
1,1
1,N NumReprsentant NumDpartement
Obtenir Nom Nom
S.Serrhini

9
M.C.D. Vers le M.R.D.
Pour passer dun M.C.D. de type Entit-Association
un Modle Relationnel de Donnes (MRD),
il faut appliquer 5 Rgles:

Rgle 1 : Transcription des entits.


Rgle 2 : Associations N M.
Rgle 3 : Associations porteuses de proprits.
Rgle 4 : Associations 1 N.
Rgle 5 : Associations 1 1.
S.Serrhini

Donnez le type de chaque association du MCD suivant ?


10

Les types dassociations :

Association N M : Prospecte

Association porteuse de proprits : Concerne

Associations 1 N : Effectuer, Obtenir

Association 1 1 : Correspond
S.Serrhini

Rgle 1 :
Transcription des entits
11

Transcription des entits

CLIENT Nom de lentit CLIENT Nom de la


relation (table)
NumClient NumClient
Nom Nom
Prnom Prnom
Adresse Adresse
CodePostal Identifiant CodePostal Cl primaire
Ville Ville

Proprits Attributs

MCD MRD
S.Serrhini

Rgle 1 :
12
Transcription des entits
Cl primaire:
Dans une table relationnelle, il ne peut y avoir deux
lignes identiques.

La Cl Primaire sert assurer lunicit dune ligne.

La Cl Primaire peut ne comporter quun seul attribut


Elle est dite Cl primaire simple .
La Cl Primaire peut comporter plusieurs attributs
Elle est dite Cl primaire composite .
S.Serrhini

Rgle 2 :
associations N M
13

Associations N M Prospecte

DEPARTEMENT REPRESENTANT
1000 Bruxelles 500 Cuypers Eric
1070 Anderlecht 501 Gravelle Stephane
4000 Lige
5300 Andenne
1000 Bruxelles 500 Cuypers Eric
1070 Anderlecht 500 Cuypers Eric
4000 Lige 501 Gravelle Stephane
5300 Andenne 501 Gravelle Stephane

1000 500 UNIQUE


Rgle 2 :
S.Serrhini

14
associations N M
Associations N M

REPRESENTANT DEPARTEMENT
1,N 1,N
NumReprsentant Prospecter
NumDpartement
Nom
MCD Nom

MRD
REPRESENTANT PROSPECTER DEPARTEMENT
1 N
NumReprsentant 1
#NumReprsentant N NumDpartement
Nom #NumDpartement Nom
S.Serrhini

Rgle 3 :
15
Associations porteuses de proprits
Associations porteuses de proprits. Concerne

COMMANDE PRODUIT
C1 1/1/2004 P1 Disquette 5 Euro
C2 15/6/2004 P2 Clavier 25 Euro
P3 CD 10 Euro

C1 1/1/2004 P1 Disquette 5 Euro 4


C1 1/1/2004 P2 Clavier 25 Euro 1
C2 15/6/2004 P2 Clavier 25 Euro 2

Proprit
C1 P1 4
C1 P2 1 Unique
C2 P2 2
S.Serrhini

Rgle 3 :
16
Associations porteuses de proprits
Associations porteuses de proprits

PRODUIT
COMMANDE
1,N Concerner 0,N
Rfrence
NumCommande Quantit
Dsignation
Date
Prix

CONCERNER PRODUIT
COMMANDE
1 N
N 0
#NumCommande Rfrence
NumCommande
#Rfrence Dsignation
Date
Quantit Prix
S.Serrhini

Rgle 4 :
17
Associations 1 N
Association 1 N Effectuer

CLIENT COMMANDE
100 DUPONT Alain C1 01/1/2004
101 DURAND Eric C2 15/6/2004
102 MARTIN Nadine C3 12/8/2004
C4 20/9/2004
100 DUPONT Alain C1 01/1/2004
100 DUPONT Alain C2 15/6/2004
101 DURAND Eric C3 12/8/2004
101 DURAND Eric C4 20/9/2004

C1 01/1/2004 100 Cl trangre


C2 15/6/2004 100
C3 12/8/2004 101
C4 20/9/2004 101
S.Serrhini

Rgle 4 :
18
Associations 1 N

Cl trangre:
Un attribut est dit Cl trangre dans une table lorsquil
est cl primaire dans une autre.
Pour lidentifier on lui ajoute un signe distinctif # .

La Cl trangre peut tre NULLsous certaines conditions


La Cl trangre nest pas unique
S.Serrhini

Rgle 4 :
19
Associations 1 N
Associations 1 N.

CLIENT COMMANDE
0,N 1,1
Effectuer
NumClient NumCommande
Nom Date
Prnom
MCD ...

MRD
CLIENT
COMMANDE
1
NumClient
NumCommande
Nom N Date
Prnom
#NumClient
...
S.Serrhini
Rgle 5 :
20 Associations 1 1
Associations 1 1 Correspond

COMMANDE FACTURE
C1 01/1/2004 F1 2/1/2004
C2 15/6/2004 F2 16/6/2004

C1 1/1/2004 F1 2/1/2004
C2 15/6/2004 F2 16/6/2004

C1 1/1/2004 F1 F1 2/1/2004 C1
C2 15/6/2004 F2 F2 16/6/2004 C2

Cls trangres
S.Serrhini
Rgle 5 :
21
Associations 1 1
Associations 1 1.

FACTURE 1,1 0,1 COMMANDE


Correspondre
NumFacture NumCommande
Date Date

MCD

MRD
FACTURE COMMANDE
1 1
NumFacture NumCommande
Date Date
#NumCommande 1
1 #NumFacture
S.Serrhini

Tableau comparatif
22

MCD MRD

Identifiant Cl primaire

Proprit Attribut/champ

Entit Relation/table
Relation/table (pas
Association
toujours)
Occurrence Occurrence
S.Serrhini

MRD : Exercice 1
23

Construire le MRD correspondant au MCD suivant :


CLIENT
1,1 FACTURE PRODUIT
NumClient Correspondre
Nom NumFacture Rfrence
Prnom Date Dsignation
Adresse 0,N Prix
0,1
CodePostal Concerner
Ville Quantit
COMMANDE 1,N
0,N Prospecter
1,N 1,N
NumCommande
Effectuer Date
1,1 REPRESENTANT DEPARTEMENT
1,1
1,N NumReprsentant NumDpartement
Obtenir Nom Nom
S.Serrhini

MRD : Exercice 1
24

CLIENT 1,1 FACTURE PRODUIT

NumClient Correspondre
NumFacture Rfrence
Nom Date Dsignation
Prnom Prix
0,N
Adresse 0,1
CodePostal Concerner
Ville
1,N Quantit
0,N COMMANDE 6 entitsProspecter6 relations
1,N 1,N
Effectuer NumCommande
1,1 Date
REPRESENTANT DEPARTEMENT
1,1
1,N NumReprsentant NumDpartement
Obtenir Nom Nom
S.Serrhini

25
MRD : Exercice 1

CLIENT FACTURE PRODUIT

NumClient NumFacture Rfrence


Nom Date Dsignation
Prnom Prix
Adresse
CodePostal
Ville
COMMANDE

NumCommande
Date
REPRESENTANT DEPARTEMENT

NumReprsentant NumDpartement
Nom Nom
S.Serrhini

MRD : Exercice 1
26

CLIENT FACTURE PRODUIT

NumClient NumFacture Rfrence


Nom Date Dsignation
Prnom Prix
Adresse
CodePostal
Ville
COMMANDE

NumCommande
Date
REPRESENTANT DEPARTEMENT

NumReprsentant NumDpartement
Nom Nom
S.Serrhini

27
MRD : Exercice 1

CLIENT (NumClient, Nom, Prnom, Adresse,


CodePostal, Ville);
COMMANDE (NumCommande, Date);
FACTURE (NumFacture, Date);
ARTICLE (Rfrence, Dsignation, Prix);
REPRESENTANT (NumReprsentant, Nom);
DEPARTEMENT (NumDpartement, Nom);
28
MRD : Exercice 1

CLIENT 1,1 FACTURE PRODUIT

NumClient Correspondre Une association


NumFacture n m non
Rfrence
porteuse de proprit
Nom Date Dsignation
Prnom Prix
0,1
0,N
Adresse
CodePostal Concerner
Ville
1,N Quantit
0,N COMMANDE
Prospecter
1,N 1,N
Effectuer NumCommande
1,1 Date
REPRESENTANT DEPARTEMENT
1,1
1,N NumReprsentant NumDpartement
Obtenir Nom Nom
S.Serrhini

29
MRD : Exercice 1

CLIENT
FACTURE PRODUIT
NumClient
Nom
NumFacture Rfrence
Prnom
Date Dsignation
Adresse
Prix
CodePostal
Ville

COMMANDE

NumCommande
Date PROSPECTER DEPARTEMENT
REPRESENTANT
NumReprsentant #NumReprsentant
NumDpartement
Nom #NumDpartement
Nom
S.Serrhini

30
MRD : Exercice 1

PROSPECTER (#NumReprsentant,
#NumDpartement);
S.Serrhini

MRD : Exercice 1
31

CLIENT 1,1 Une association


FACTURE PRODUIT nm
NumClient Correspondre porteuse dune
NumFacture
proprit
Rfrence
Nom Date Dsignation
Prnom Prix
0,1
0,N
Adresse
CodePostal Concerner
Ville
1,N Quantit
0,N COMMANDE
Prospecter
1,N 1,N
Effectuer NumCommande
1,1 Date
REPRESENTANT DEPARTEMENT
1,1
1,N NumReprsentant NumDpartement
Obtenir Nom Nom
S.Serrhini

MRD : Exercice 1
32

FACTURE
COMMANDE

NumCommande NumFacture
Date Date

CONCERNER
CLIENT PRODUIT
#NumCommande
#NumCommande
NumClient #Rfrence
Date Rfrence
Nom Quantit
Dsignation
Prnom Prix
Adresse
CodePostal
Ville
REPRESENTANT PROSPECTER DEPARTEMENT

NumReprsentant #NumReprsentant NumDpartement


Nom #NumDpartement Nom
S.Serrhini

MRD : Exercice 1
33

CONCERNER (#NumCommande,
#Rfrence,
Quantit);
S.Serrhini

34 MRD : Exercice 1

CLIENT 1,1 FACTURE PRODUIT

NumClient Correspondre
NumFacture Rfrence
Nom
Prnom Deux associations 1 n
Date Dsignation
Prix
0,1
0,N
Adresse
CodePostal Concerner
Ville
1,N Quantit
0,N COMMANDE
Prospecter
1,N 1,N
Effectuer NumCommande
1,1 Date
REPRESENTANT DEPARTEMENT
1,1
1,N NumReprsentant NumDpartement
Obtenir Nom Nom
S.Serrhini

35
MRD : Exercice 1

COMMANDE FACTURE
COMMANDE

NumCommande NumFacture
Date Date
#NumClient CONCERNER
#NumReprsentant
CLIENT PRODUIT
#NumCommande
NumClient Date
#Rfrence Rfrence
Nom Quantit Dsignation
Prnom Prix
Adresse
CodePostal
Ville
REPRESENTANT PROSPECTER DEPARTEMENT

NumReprsentant #NumReprsentant NumDpartement


Nom #NumDpartement Nom
S.Serrhini

MRD : Exercice 1
36

CLIENT 1,1 FACTURE PRODUIT

NumClient
Nom
Correspondre
Une association
NumFacture Rfrence 11
Date Dsignation
Prnom Prix
0,1
0,N
Adresse
CodePostal Concerner
Ville
1,N Quantit
0,N COMMANDE
Prospecter
1,N 1,N
Effectuer NumCommande
1,1 Date
REPRESENTANT DEPARTEMENT
1,1
1,N NumReprsentant NumDpartement
Obtenir Nom Nom
S.Serrhini

37 MRD : Exercice 1

CLIENT (NumClient, Nom, Prnom, Adresse, CodePostal, Ville);


COMMANDE (NumCommande, Date, #NumClient, #NumReprsentant);
FACTURE (NumFacture, Date);
PRODUIT (Rfrence, Dsignation, Prix);
REPRESENTANT (NumReprsentant, Nom);
DEPARTEMENT (NumDpartement, Nom);
CONCERNER (#Commande, #Produit, Quantit);
CONCERNER (#Representant, #Dpartement);
S.Serrhini

38 MRD : Exercice 1

Table CLIENT => NumClient

Cl Primaire
Intgrit dentit
S.Serrhini

39 MRD : Exercice 1

Table COMMANDE => NumClient

Cl Etrangre
Intgrit de rfrence
S.Serrhini

40 MRD : Exercice 1

Table CONCERNER => #Commande, #Produit

CONCERNER (#Commande, #Produit, Quantit);

PRODUIT (Rfrence, Dsignation, Prix);

Cl Primaire composite
Noms diffrents Intgrit dentit
S.Serrhini

41 MRD : Exercice 1

Table CONCERNER => #Commande, #Produit

CONCERNER (#Commande, #Produit, Quantit);

Attribut: Intgrit de domaine

COMMANDE (NumCommande, Date, #NumClient, #NumReprsentant);

Attribut: Intgrit de domaine


S.Serrhini

Socotra
42
DATE

Date
OUVRIERS CHANTIERS
1,n
NumRegistre NumChantier PHASES
Nom 1,n NomChantier
Prnom EST_OCCUPE 1,n Rue NumPhase
1,n
EST_COMPOSE 0,n
Rue CodePostal Libell
HeuresPrestes
CodePostal Ville DurePrvue Catgorie
Ville MatreOuvrage
Spcialit Montant
DateNaissance Dure
DateEngagement
1,1
0,n

NECESSITER
CONCEVOIR
Date Dbut
Date Fin 1,n

ARCHITECTES
0,n
Num_ordre
Nom
MATERIEL Prnom
Rfrence Rue
Type CodePostal
PoidsMax Ville
HautMax Tlphone
VitMax Mail
S.Serrhini

43

Chapitre IV :
SQL
S.Serrhini

44
Chapitre IV

Base de donnes et S.G.B.D.

Une collection de
donnes

S.G.B.D
(Systme de Gestion de Base de Donnes)
Permet lutilisateur dexploiter les
donnes
S.Serrhini

45

Base de Donnes

Clients
Clients

Ordre dAchats

Commandes
S.Serrhini

SQL: Introduction
46

STRUCTURED QUERY LANGUAGE :


= Langage structur : dfinition et manipulation de BD relationnelles

HISTORIQUE :
Annes 70 : SEQUEL (IBM)
1981 : 1er SGBD sous SQL
1986 : normalisation SQL/86
1989 : SQL/89
1992 : SQL/92 ou SQL2
Aujourdhui : SQL3 (orient objet)
S.Serrhini

SQL: Introduction
47

LDD :(langage de dfinition de donnes)


pour dcrire la structure

SQL LMD :(langage de manipulation des donnes)


pour appliquer des oprations aux
donnes
LDD LMD LCD

LCD (langage de contrle des donnes)


Pour grer les protections daccs aux
tables + environnement multiutilisateurs
S.Serrhini

SQL: Introduction
48

LDD :
COMMANDES FONCTIONS
CREATE DOMAIN Cration dun domaine
CREATE TABLE Cration dune table

DROP Suppression dun objet


Modification de la
ALTER TABLE dfinition dune table
S.Serrhini

SQL:
Quest-ce quun SGBD ?
49

1. Dfinition :

Un Systme de Gestion de Base de Donnes


(SGBD) est un logiciel de haut niveau qui
permet de manipuler des informations
stockes dans la base de donnes.
S.Serrhini

SQL:
Quest-ce quun SGBD ?
50

2. Niveaux des fonctions dun SGBD :

Niveau physique:
gestion sur mmoires secondaires, fiabilit, accs aux rseaux,

Niveau logique:
dfinition des donnes(LDD), Manipulation des donnes
consultation + mises jour des donnes (LMD), aspects
scuritaires, intgrits,

Niveau externe:
intgration avec langage de program., outils daide de saisie,
S.Serrhini

SQL:
Quest-ce quun SGBD ?
51

3. Manipulations dun SGBD

Oprations sur les donnes :

Insertion
COMMANDES
Mise jour
DU LMD
Destruction
Recherche
S.Serrhini

SQL:
Quest-ce quun SGBD ?
52

3. Manipulations dun SGBD

Exemples de questions poses la BD :


Augmenter le prix du produit P1,
Supprimer le client Dupont,
Rechercher les clients habitant Lige,
Calculer la somme de toutes les commandes de
Jean Dubois,
Etc
S.Serrhini

SQL:
53
Quest-ce quun SGBD ?

3. Manipulations dun SGBD

Optimisation :
Choisir une bonne organisation physique

Concurrence daccs :
Plusieurs utilisateurs doivent pouvoir accder en
mme temps aux mmes donnes
S.Serrhini

SQL:
54
Algbre Relationnelle

Langage propos par E.CODD, 1969


Comporte des oprations pour manipuler
des relations (Tables)
Utilise dans tout SGBD relationnel
Le rsultat de toute opration est une
nouvelle relation
S.Serrhini

SQL:
Algbre Relationnelle
55

OPERATEURS OPERATEURS
UNAIRES BINAIRES

Slection Union
Projection Diffrence
Produit cartsien
(intersection, jointure)
S.Serrhini

Algbre Relationnelle
56

Comprendre SQL laide de lalgbre relationnelle.

SQL:
Permet de manipuler et de retrouver des donnes
dune base de donnes.
Les requtes sont Diffrents dun langage de
programmation puisquil nest pas utilis pour faire
des traitements complexes.
S.Serrhini

Algbre Relationnelle
57

Avantages dSQL:

Facile dutilisation
Offre un accs facile et efficace aux donnes.
S.Serrhini

Algbre Relationnelle
58

Dfinition Requte :

Une requte sapplique sur une (des) Relation(s) et


renvoi comme rsultat une Relation (Table).

R1 R2 Q = Rsultat
Requte Q
De R1 et R2
S.Serrhini

SQL:
Algbre Relationnelle
59

MODELE RELATIONNEL:

REALISATEURS FILM ACTEURS

1,n 1,1 0,n 1,n

REALISER JOUER
S.Serrhini

SQL:
Algbre Relationnelle
60

MODELE RELATIONNEL:

REALISATEURS FILM Jouer ACTEURS


Ralisateur 1 NFilm 1 1 NActeur
Nom Titre Nom
#NFilm
Prnom #NumRalisateur Prnom
N N #NActeur
N
S.Serrhini

SQL:
Algbre Relationnelle
61

SELECTION :

La slection est une opration qui


sapplique une relation (R) et qui
extrait de cette relation les tuples
qui satisfont un critre de
slection (C).
Syntaxe : [C] (R)
S.Serrhini

SQL:
Algbre Relationnelle
62

SELECTION : critres de slection

anne de sortie en salles > 2003


acteurs de nationalit anglaise
titre du film dbutant par Le seigneur
numro de film compris entre 100 et 150
S.Serrhini

SQL:
Algbre Relationnelle
63

SELECTION : exemple 1
Rechercher les acteurs dont le prnom est Jean :

NActeur Nom Prnom NActeur Nom Prnom


1 Gabin Jean 1 Gabin Jean
2 Defrance Ccile 4 Reno Jean
3 Galabru Michel
4 Reno Jean
S.Serrhini

SQL:
64
Algbre Relationnelle

SELECTION : exemple 2
Rechercher les acteurs dont le numro est > ou = 3 :

NActeur Nom Prnom NActeur Nom Prnom


1 Gabin Jean 3 Galabru Michel
2 Defrance Ccile 4 Reno Jean
3 Galabru Michel
4 Reno Jean
S.Serrhini

SQL:
Algbre Relationnelle
65

PROJECTION : dfinition

La projection sapplique une relation


et ne garde que certains des
attributs.
Syntaxe : [attributs] (R)
S.Serrhini

SQL:
Algbre Relationnelle
66

PROJECTION : exemple 1
Afficher le nom de tous les acteurs :

NActeur Nom Prnom Nom


1 Gabin Jean Gabin
2 Defrance Ccile Defrance
3 Galabru Michel Galabru
4 Reno Jean Reno
S.Serrhini

SQL:
67
Algbre Relationnelle

SELECTION/PROJECTION :
Rechercher les titres et numros des films sortis en 2004:

NFilm Titre Anne


1 Gladiateur 2002
2 Le roi Arthur 2004
3 Podium 2004
S.Serrhini

SQL:
Algbre Relationnelle
68

Le rsultat dune opration = UNE RELATION

Sur cette relation, on peut appliquer une autre


opration de lalgbre relationnelle

oprations composes
!
S.Serrhini

SQL:
69
Algbre Relationnelle

UNION : dfinition

Lunion entre deux relations R1 et R2


est une relation contenant lensemble
des tuples appartenant R1 ou R2 ou
aux deux relations.
Syntaxe : R1 U R2
S.Serrhini

SQL:
Algbre Relationnelle
70

UNION : condition

Union-compatibilit des tables

Tables de mme schma :


R1 (A1Ak) et R2 (A1Ak)
R1 R2
S.Serrhini

SQL:
Algbre Relationnelle
71

UNION : exemple 1
NActeur Nom Prnom NRalisateur Nom Prnom
1 Gabin Jean 11 Moix Yann
2 Defrance Ccile 21 Chabat Alain
5 Poelvoorde Benot 31 Chatiliez Etienne

N Nom Prnom
1 Gabin Jean Acteurs
2 Defrance Ccile
U
5 Poelvoorde Benot
11 Moix Yann Ralisateurs
21 Chabat Alain
31 Chatiliez Etienne
S.Serrhini

SQL:
72
Algbre Relationnelle

UNION : exemple 2

NActeur Nom Prnom NRalisateur Nom Prnom


1 Gabin Jean 11 Moix Yann
2 Defrance Ccile 21 Chabat Alain
5 Poelvoorde Benot 5 Poelvoorde Benot

N Nom Prnom
1 Gabin Jean
2
5
11
Defrance
Poelvoorde
Moix
Ccile
Benot
Yann
!
21 Chabat Alain
5 Poelvoorde Benot
S.Serrhini

SQL:
73
Algbre Relationnelle

DIFFERENCE : dfinition

La diffrence entre deux relations R1 et R2 est une


relation comprenant tous les tuples de R1 qui ne se
trouvent pas dans R2.

Syntaxe : R1 - R2
S.Serrhini

SQL:
Algbre Relationnelle
74

DIFFERENCE : condition

R1 R2
Union-compatibilit des tables

Tables de mme schma :


R1 (A1Ak) et R2 (A1Ak)

R1 R2
S.Serrhini

SQL:
Algbre Relationnelle
75

DIFFERENCE : exemple 1
NActeur Nom Prnom NRalisateur Nom Prnom
1 Gabin Jean 11 Moix Yann
2 Defrance Ccile 21 Chabat Alain
5 Poelvoorde Benot 5 Poelvoorde Benot

N Nom Prnom
Acteurs
1 Gabin Jean

2 Defrance Ccile
Ralisateurs
S.Serrhini

SQL:
Algbre Relationnelle
76

INTERSECTION: dfinition

Lintersection entre deux relations R1 et R2 est une


relation contenant les tuples appartenant R1 et R2.

Syntaxe : R1 R2
S.Serrhini

SQL:
Algbre Relationnelle
77

INTERSECTION: remarques

idem diffrence et union

2 relations de mme schma !!


S.Serrhini

SQL:
78
Algbre Relationnelle

INTERSECTION: exemple 1
NActeur Nom Prnom NRalisateur Nom Prnom
1 Gabin Jean 11 Moix Yann
2 Defrance Ccile 21 Chabat Alain
5 Poelvoorde Benot 5 Poelvoorde Benot

N Nom Prnom
5 Poelvoorde Benot
S.Serrhini

SQL:
Algbre Relationnelle
79

PRODUIT CARTESIEN: dfinition

Le produit cartsien entre deux relations R1 et R2


cre une nouvelle relation o chaque ligne de R1 est
associe chaque ligne de R2.

Syntaxe : R1 X R2
S.Serrhini

SQL:
80
Algbre Relationnelle

PRODUIT CARTESIEN: exemple 1

FILMS REALISE
NFilm Titre Anne NFilm NRalisateur
1 Gladiateur 2002 2 15
2 Le roi Arthur 2004 5 18
3 Podium 2004 4 18
S.Serrhini

SQL:
81
Algbre Relationnelle
PRODUIT CARTESIEN: exemple1
NFilm Titre Anne NFilm NRalisateur

1 Gladiateur 2002 2 15

1 Gladiateur 2002 5 18

1 Gladiateur 2002 4 18

2 Le roi Arthur 2004 2 15

2 Le roi Arthur 2004 5 18

2 Le roi Arthur 2004 4 18

3 Podium 2004 2 15

3 Podium 2004 5 18

3 Podium 2004 4 18
S.Serrhini

SQL:
82
Algbre Relationnelle

PRODUIT CARTESIEN:

BUT : construire toutes les combinaisons


de tuples des 2 relations

RESULTAT : une relation de m x n lignes


(si R1 = n lignes et R2 = m lignes)

UTILITE ?
S.Serrhini

SQL:
83
Algbre Relationnelle

JOINTURE: dfinition

La jointure de deux relations R1 et R2 selon un critre


gnralis C est lensemble des tuples du produit
cartsien R1 X R2 qui satisfont ce critre C.
Syntaxe : R1 |X| R2
S.Serrhini

SQL:
84
Algbre Relationnelle
JOINTURE dite naturelle :

BUT : crer toutes les combinaisons


SIGNIFICATIVES entre tuples des 2
relations.
Qui ont la mme valeur pour
les attributs correspondants
(mme domaine).

CONDITION :les 2 relations ont au moins un


attribut de mme domaine
S.Serrhini

SQL:
85
Algbre Relationnelle
JOINTURE: exemple :FILMS |X| REALISE

FILMS REALISE
NFilm Titre Anne NFilm NRalisateur
1 Gladiateur 2002 2 15
2 Le roi Arthur 2004 5 18
3 Podium 2004 4 18
S.Serrhini

SQL:
86
Algbre Relationnelle

JOINTURE: exemple

1re tape : faire produit cartsien des 2


relations
2ime tape : appliquer un critre de slection

FILMS.NFilm = REALISE.NFilm
S.Serrhini
SQL:
87
Algbre Relationnelle
JOINTURE: exemple
NFilm Titre Anne NFilm NRalisateur

1 Gladiateur 2002 2 15

1 Gladiateur 2002 5 18

1 Gladiateur 2002 4 18

2 Le roi Arthur 2004 2 15

2 Le roi Arthur 2004 5 18

2 Le roi Arthur 2004 4 18

3 Podium 2004 2 15

3 Podium 2004 5 18

3 Podium 2004 4 18
S.Serrhini

SQL:
88
Algbre Relationnelle

JOINTURE: exemple

Table rsultat :

NFilm Titre Anne NRalisateur

2 Le roi Arthur 2004 15


89
S.Serrhini

SQL
90
Slection de base

La slection de base permet lextraction de donnes


partir dune seule table.

Elle permet les oprations de :

Projection

Slection

La combinaison des deux (slection/projection)


S.Serrhini

SQL
91
Slection de base

Projection

Num Nom Prnom Adresse CodePo Localit Tl GSM Fax

100 Dupont Alain 12, Rue des 1020 Bruxelles 02/2186675 0475/324455
Alouettes

110 Durand Eric 132, Av Louise 1050 Bruxelles 02/2165544 0477/876543 02/2167890

Recherche des noms et prnoms de tous les clients.


La projection permet de ne garder que les champs souhaits.
S.Serrhini

SQL
92
Slection de base

Slection
Num Nom Prnom Adresse CodePos Localit Tl GSM Fax

100 Dupont Alain 12, Rue des 1020 Bruxelles 02/2186675 0475/324455
Alouettes

110 Durand Eric 132, Av Louise 4000 Lige 02/2165544 0477/876543 02/2167890

Recherche des clients bruxellois.


La slection ne conserve que les enregistrements (tuples)
qui correspondent aux critres.
S.Serrhini

SQL
Slection de base
93

La combinaison Slection/Projection
Num Nom Prnom Adresse CodePost Localit Tl GSM Fax

100 Dupont Alain 12, Rue des 1020 Bruxelles 02/2186675 0475/324455
Alouettes

110 Durand Eric 132, Av Louise 4000 Lige 02/2165544 0477/876543 02/21678
90

Recherche des noms et prnoms des clients bruxellois.


La slection ne conserve que les enregistrements (tuples)
qui correspondent aux critres.
S.Serrhini

SQL
94
Slection de base

Syntaxe

SELECT Clause_de_slection
PROJECTION
FROM Nom_Table [AS Alias]
[WHERE [Condition] SELECTION
;

Fin de la requte
S.Serrhini

SQL
95
Slection de base

SELECT
Obligatoire
FROM
WHERE Facultatif

Le rsultat dune clause SELECT est un ensemble de lignes


de type RECORDSET.
Cest une TABLE (sous-ensemble de la ou les table(s)de dpart
Cette TABLE pourra servir de base
une autre requte
une autre clause SELECT de la mme requte (Imbriques).
S.Serrhini

SQL
Slection de base
96

Clause_de_slection Dfinit les colonnes (champs) sur lesquelles se fait


la slection.
Les lments de la liste sont spars par des virgules.
Nom_Table [AS Alias] Dfinit la ou les tables ou requtes sur laquelle se
FROM fait la recherche.
Lalias permet de simplifier lcriture.
Le terme AS est facultatif.
Condition Permet de dfinir un ou plusieurs critres de
WHERE slection.(condition)
Elle sert filtrer les lignes retournes par
la requte. ACCESS autorise 40 conditions
lies par des oprateurs AND et OU.
S.Serrhini

SQL
Slection de base
97

Exemple :
Obtenir les noms, prnoms et numros de tlphone
de tous les clients.

Opration PROJECTION

SQL: SELECT NomClient, PrenomClient, NumTel


FROM Client;
S.Serrhini

SQL
98
Slection de base
Rsultat :
NomClient PrenomClient NumTel

Dupont Alain 02/2186675

Durand Eric 02/2165544

Roberts Pierre 02/2214578

Nicolay Caroline

Gys Marianne 04/3365987

Leroy Louis 04/3305847

Lebon Nicolas

Gravelle Stephane

Cuypers Eric 085/845623

Boreman Dany 085/821230

Laclasse Toni

Pucette Camille

Legrand Jacques

Mossou Pierre
S.Serrhini

SQL
Slection de base
99

Exemple :
Obtenir les noms, prnoms et numros de tlphone
de tous les clients Bruxellois.

Opration SELECTION

SQL: SELECT NomClient, PrenomClient, NumTel


FROM Client CL
WHERE LocaliteClient = Bruxelles ;
S.Serrhini

SQL
100 Slection de base

Rsultat :
NomClient PrenomClient NumTel

Dupont Alain 02/2186675

Durand Eric 02/2165544

Roberts Pierre 02/2214578

Nicolay Caroline

Lebon Nicolas

Gravelle Stephane

Legrand Jacques

Les chanes de caractres doivent tre mises entre


guillemets.
Alias ( AS ) nest pas obligatoire (Client CL).
S.Serrhini

SQL
Slection de base
10
1

Obtenir le nom des villes o lentreprise a des clients.

LocaliteClient

SELECT LocaliteClient Bruxelles

Bruxelles

FROM Client ; Bruxelles

Bruxelles

Lige

Lige

Bruxelles

Bruxelles

Andenne
Il est inutile de voir apparatre plusieurs Andenne

fois la mme ville dans la liste. Andenne

Andenne

Bruxelles

Lige
S.Serrhini

SQL
102
Slection de base

SELECT LocaliteClient
FROM Client ;

La clause DISTINCT applique la clause de slection vite


les rptitions de lignes.

SELECT DISTINCT LocaliteClient


FROM Client ;
S.Serrhini

SQL
103
Slection de base

SELECT DISTINCT LocaliteClient


FROM Client ;

DISTINCT Les lignes dupliques sont limines du rsultat


Si SELECT comporte plusieurs colonnes, elles sont
toutes prises en compte pour liminer les doublons.
S.Serrhini

SQL
Slection de base
104

SELECT DISTINCT LocaliteClient


FROM Client ;

LocaliteClient

Andenne

Bruxelles

Lige
S.Serrhini

SQL
Slection de base
105

SELECT DISTINCT NumClient,LocaliteClient


FROM Client ;
NumClient LocaliteClient
100 Bruxelles
110 Bruxelles
120 Bruxelles
130 Bruxelles

NumClient 140
150
Lige
Lige

ET 160
170
Bruxelles
Bruxelles

LocaliteClient 180 Andenne


190 Andenne
200 Andenne

!!!! NumClient = Cl Primaire 210


220
Andenne
Bruxelles
230 Lige
S.Serrhini

SQL
106

Obtenir dans la catgorie mobilier, les numros de produits


dont le stock ne dpasse pas 10 units.

SELECT RefProduit
FROM Produit
WHERE Stock <= 10
AND catgorie = mobilier ;

RefProduit

32
S.Serrhini

SQL
107

SELECT RefProduit
FROM Produit
WHERE Stock <= 10
AND catgorie = mobilier ;

La clause WHERE dfinit les prdicats


Elle permet de filtrer les enregistrements retourns
Le prdicat est une expression logique compose
soit dune condition
soit de plusieurs conditions relies par les oprateurs OR et/ou AND
S.Serrhini
SQL
108

Lexpression logique peut tre

soit une comparaison une valeur =, <, >, >=, <=


une fourchette BETWEEN
une liste IN (..,)
un filtre LIKE

soit un test sur une valeur IS NULL


ANY (au moins un), SOME, ALL
EXISTS
UNIQUE
S.Serrhini

SQL
109

Les comparaisons peuvent tre

des constantes
la constante doit tre de type compatible avec le type
de lattribut considr.

des expressions
WHERE Prixvente > 2*Prixachat
S.Serrhini

SQL
110

Obtenir le nom des reprsentants visitant les rgions de


Bruxelles et Lige. NomRep LocaliteRep

EFFRIN Bruxelles

FANOUILLET Bruxelles

FRAULIRET Lige

Sans oprateur spcifique DEVREUX Lige

GARMON Bruxelles

SELECT NomRep HAMONT Lige

FROM Representant
LOYEN Bruxelles

BERNAR Bruxelles

WHERE LocaliteRep = Bruxelles DUVAL Lige

OR LocaliteRep = Lige ;
S.Serrhini

SQL
111

Obtenir le nom des reprsentants visitant


les rgions de Bruxelles et Lige. NomRep LocaliteRep

EFFRIN Bruxelles

Avec oprateur spcifique : FANOUILLET Bruxelles

FRAULIRET Lige

DEVREUX Lige

SELECT NomRep GARMON Bruxelles

FROM Representant HAMONT Lige

WHERE LocaliteRep IN
LOYEN Bruxelles

BERNAR Bruxelles

(Bruxelles,Lige); DUVAL Lige


S.Serrhini

SQL
112

Obtenir la liste des clients dont le nom commence par L

NomClient

Leroy

Lebon

SELECT NomClient Laclasse

Legrand

FROM Client
WHERE NomClient LIKE L%;
SQL
S.Serrhini

113

Obtenir la liste des clients dont le nom a un b en


troisime position.

SELECT NomClient
FROM Client NomClient

Roberts
WHERE NomClient LIKE __b*%;
Lebon
S.Serrhini

SQL
114

Obtenir la liste des clients dont le nom se termine par y

NomClient

Nicolay

SELECT NomClient Leroy

FROM Client
WHERE NomClient LIKE %y ;
S.Serrhini

SQL

Obtenir la liste des clients habitant Lige.


AUCUN
SELECT NomClient RESULTAT
FROM Client
WHERE LocaliteClient LIKE Liege

NomClient

SELECT NomClient Gys

Leroy

FROM Client Mossou

WHERE LocaliteClient LIKE Lige


115
S.Serrhini
SQL
116

Obtenir la liste des produits dont le stock se situe entre 10 et 60.


RefProduit NomProduit PrixProduit Stock Catgorie

10 Jupe 15,00 50 Textile

SELECT *
11 Manteau 76,00 30 Textile

14 Chaussures 70,00 50 Textile

FROM Produit 20

21
Imprimante

Ecran Plat
120,67

100,00
12

10
Informatique

Informatique

WHERE Stock 22 USB 256 45,89 50 Informatique

BETWEEN 10 AND 60
23 USB 128 34,89 60 Informatique

31 Table 123,00 40 mobilier

32 Bureau 400,00 10 mobilier

33 Salon 1.200,00 50 mobilier

35 Lit 1 Personne 300,00 23 mobilier

BETWEEN combine plusieurs conditions relies par loprateur AND.


S.Serrhini

SQL
117

Un attribut peut tre remplac par une expression.


RefProduit NomProduit PrixProduit Stock Catgorie

SELECT * 11 Manteau 76,00 30 Textile

FROM Produit 20 Imprimante 120,67 12 Informatique

WHERE (Stock*2) 21 Ecran Plat 100,00 10 Informatique

BETWEEN 10 AND 60 32 Bureau 400,00 10 mobilier

35 Lit 1 Personne 300,00 23 mobilier


S.Serrhini
SQL
118

Valeur NULL
Il existe des valeurs qui :
ne sont pas connues (fax de certains clients)
nexistent pas pour certains tuples
(un produit qui na jamais t command)
SQL associe un flag chaque attribut
Il spcifie si lattribut a ou non t initialis
(-1 absence de valeur 0 prsence dune valeur).
Un attribut qui na pas t initialis prend la valeur
NULL = valeur indtermine.
S.Serrhini
SQL
119

Obtenir la liste des produits dont le stock est suprieur 100.


RefProduit NomProduit PrixProduit Stock Catgorie
10 Jupe 15,00 50 Textile
11 Manteau 76,00 30 Textile
12 Pantalon 34,95 Textile
13 Pull 25,00 Textile
14 Chaussures 70,00 50 Textile
20 Imprimante 120,67 12 Informatique

NULL 21
22
Ecran Plat
USB 256
100,00
45,89
10
50
Informatique
Informatique
23 USB 128 34,89 60 Informatique
24 Souris 12,00 180 Informatique
25 Clavier 44,00 128 Informatique
30 Chaise 32,00 90 mobilier
31 Table 123,00 40 mobilier
32 Bureau 400,00 10 mobilier
33 Salon 1.200,00 50 mobilier
34 Meuble Cuisine 229,00 90 mobilier
35 Lit 1 Personne 300,00 23 mobilier
S.Serrhini
SQL
120

Obtenir la liste des produits dont le stock est suprieur 100.


SELECT * RefProduit NomProduit PrixProduit Stock Catgorie

FROM Produit 24 Souris 12,00 180 Informatique

WHERE Stock > 100; 25 Clavier 44,00 128 Informatique

Les produits 12 et 13 nont pas t slectionns.


Le champ Stock, pour ces tuples, a une valeur indtermine.
Oracle NULL= petite valeur. ACCESS NULL = Grande valeur
S.Serrhini

SQL
121
Jointure

Une requte permet lutilisation de tables en relation.


La puissance de SQL est aussi la capacit combiner des
informations issues de plusieurs tables ou requtes.

La jointure permet de raliser des requtes portant sur


plusieurs tables.

Elle suppose un lment commun dans les deux tables lies.


S.Serrhini

SQL
122
Jointure

Supposons les tables CLIENT , et COMMANDE

CLIENT COMMANDE

NumClient Nom Prenom NumComande Date NumClient

100 Dupont Alain C1 10/02/2004 100

200 Durand Jacques C2 15/06/2004 100

300 Duchmol Eric C3 24/08/2004 200


S.Serrhini
SQL
123
Jointure manuelle

Rechercher les numro, nom et prnom des clients qui ont pass
des commandes.

SELECT NumClient, NomClient, PrenomClient


FROM Client,Commande
WHERE Client.NumClient = Commande.NumClient;
S.Serrhini

SQL
124
Jointure

Premire tape
Le moteur SQL ralise le produit cartsien des tables
de la clause FROM.

SELECT ..
FROM Client, Commande;

Le rsultat de ce produit donne une table intermdiaire (X)


S.Serrhini

SQL
125
Jointure

Table X de N*M enregistrements

NumClient Nom Prenom

100 Dupon Alain


t NumComande Date NumClient

200 Duran Jacques


d C1 10/02/200 100
4
300 Duch Eric C2 15/06/200 100
mol 4
C3 24/08/200 200
4
S.Serrhini

SQL
126
Jointure

NumClient Nom Prenom NumComa Date NumClient


nde
100 Dupont Alain C1 10/02/2004 100
100 Dupont Alain C2 15/06/2004 100
100 Dupont Alain C3 24/08/2004 200
200 Durand Jacques C1 10/02/2004 100
200 Durand Jacques C2 15/06/2004 100
200 Durand Jacques C3 24/08/2004 200
300 Duchmol Eric C1 10/02/2004 100
300 Duchmol Eric C2 15/06/2004 100

300 Duchmol Eric C3 24/08/2004 200


S.Serrhini

SQL
127
Jointure
Deuxime tape :
SQL limine de cette table X les tuples qui ne
correspondent pas la clause WHERE.
SELECT
FROM X
WHERE Client.NumClient = Commande.NumClient;
Assure la jointure entre les deux tables
Sur le NumClient qui doit tre de part et dautre
de valeur gale
de type compatible (Le nom peut tre diffrent)
S.Serrhini

SQL
128
Jointure

Seuls les enregistrements points sont conservs.


NumClient Nom Prenom NumComa Date NumClient
nde

100 Dupont Alain C1 10/02/2004 100

100 Dupont Alain C2 15/06/2004 100

200 Durand Jacques C3 24/08/2004 200


S.Serrhini

SQL
129
----- Jointure
---

Troisime tape :

Sur cette slection, SQL applique la clause SELECT


NumClient Nom Prenom

100 Dupont Alain

100 Dupont Alain

200 Durand Jacques


S.Serrhini

SQL
130
Jointure Interne
Rechercher les numro, nom et prnom des clients qui ont pass
des commandes.

SELECT NumClient, NomClient, PrenomClient


FROM Client INNER JOIN Commande
ON (Client.NumClient = Commande.NumClient);

Cette dclaration SELECT retourne exactement les mmes


donnes que lexemple prcdent
S.Serrhini

SQL
Types de Jointures
131

Auto-jointure

Jointure Externe
S.Serrhini

SQL
132
Auto-Jointures

Rechercher les nom et localit des clients qui habitent la mme


localit que monsieur Dupont

SELECT NomClient, LocaliteClient


FROM Client
WHERE LocaliteClient =
(SELECT LocaliteClient
FROM Client
WHERE NomClient = Dupont);
S.Serrhini
SQL
133 Auto-Jointures

Rechercher les nom et localit des clients qui habitent la mme


Localit que monsieur Dupont

SELECT NomClient, LocaliteClient Utilise Bruxelles


Dans le WHERE
FROM Client
WHERE LocaliteClient =
(SELECT LocaliteClient
Retourne la localit
FROM Client Du client Dupont
WHERE NomClient = Dupont ); Bruxelles
S.Serrhini

SQL
134
Auto-Jointures

Rechercher les nom et localit des clients qui habitent la mme


localit que monsieur Dupont

SELECT C1.NomClient, C1LocaliteClient Permet de donner


FROM Client C1, Client C2 un autre nom
WHERE C1.LocaliteClient = C2.LocaliteClient
la table Client
AND C2.NomClient = Dupont );

Les tables exiges par cette requte sont les mmes.


Cest pourquoi la table Client apparat deux fois dans le FROM.
S.Serrhini

SQL
Auto-Jointures
135

Nomclient LocaliteClient

SELECT NomClient, LocaliteClient Dupont Bruxelles


Durand Bruxelles
FROM Client
Roberts Bruxelles
WHERE LocaliteClient = Nicolay Bruxelles
(SELECT LocaliteClient Lebon Bruxelles

FROM Client Gravelle Bruxelles

WHERE NomClient = Dupont ); Legrand Bruxelles

Nomclient LocaliteClient
Dupont Bruxelles
SELECT C1.NomClient, C1LocaliteClient Durand Bruxelles

FROM Client C1, Client C2 Roberts Bruxelles


Nicolay Bruxelles
WHERE C1.LocaliteClient = C2.LocaliteClient Lebon Bruxelles
AND C2.NomClient = Dupont ); Gravelle Bruxelles
Legrand Bruxelles
S.Serrhini

SQL
136
Auto-Jointures

Les Auto-jointures servent souvent


remplacer des dclarations employant des
sous-requtes qui extraient des donnes
depuis une mme table que la dclaration
externe.

Bien que le rsultat final soit identique,


de nombreux SGBD traitent les jointures
plus rapidement que les sous-requtes.
S.Serrhini
SQL
137
Jointures Externes

Lister tous les clients y compris ceux qui nont rien command.
Afficher les nom et date de commande . NomClient

Dupont
DateCommande

10/02/2003

Dupont 15/02/2003
SELECT Client.NomClient, Dupont 18/03/2003

Commande.DateCommande Dupont 21/06/2003

FROM Client INNER JOIN Commande Roberts 20/06/2003

Roberts 30/09/2003
ON (Client.NumClient = Commande.NumClient); Leroy 18/03/2003

Lebon 25/09/2003

Gravelle 14/06/2003

Extrait la liste de tous les clients Gravelle 18/07/2003

Gravelle 25/08/2003
et leurs commandes. Gravelle 30/09/2003
S.Serrhini

SQL
138
Jointures Externes
NomClient DateCommande
Dupont 10/02/2003

Dupont 15/02/2003

Dupont 18/03/2003

Dupont 21/06/2003

Roberts 20/06/2003

Roberts 30/09/2003

Leroy 18/03/2003

Lebon 25/09/2003

Gravelle 14/06/2003

Gravelle 18/07/2003

Gravelle 25/08/2003

Gravelle 30/09/2003
S.Serrhini
SQL
139
Jointures Externes
La syntaxe des jointures externes est identique celle des
jointures internes.
Pour extraire la liste des clients, y compris ceux qui nont rien
command, il faut utiliser la jointure externe.

SELECT Client.NomClient, Commande.DateCommande


FROM Client LEFT JOIN Commande
ON (Client.NumClient = Commande.NumClient);

Permet de prendre en compte


tous les tuples de la table Client
S.Serrhini

SQL
140
Jointures Externes
NomClient DateCommande
Dupont 10/02/2003
SELECT Client.NomClient, Dupont 15/02/2003
Dupont 18/03/2003
Commande.DateCommande Dupont 21/06/2003
Durand
FROM Client LEFT JOIN Commande Roberts 20/06/2003
Roberts 30/09/2003
ON (Client.NumClient = Commande.NumClient); Nicolay
Gys
Leroy 18/03/2003
Lebon 25/09/2003
Gravelle 14/06/2003
SELECT Client.NomClient, Gravelle 18/07/2003
Gravelle 25/08/2003
Commande.DateCommande Gravelle 30/09/2003
Cuypers
FROM Commande RIGHT JOIN Client Boreman

ON (Client.NumClient = Commande.NumClient); Laclasse


Pucette
Legrand
Mossou
S.Serrhini

SQL
Jointures Externes
141

Les jointures internes mettent en correspondance des ranges


de deux tables.

Les jointures externes incluent les ranges qui ne sont associes


aucune autre.

Les mots cls RIGHT ou LEFT indiquent si cest la table de


gauche ou la table de droite, dont on dsire inclure toutes les ranges.

La seule diffrence entre la jointure externe de gauche et celle de


droite est lordre des tables.
S.Serrhini
SQL
142
Oprateurs ensemblistes
La norme comporte des oprateurs ensemblistes

INTERSECTION UNION DIFFERENCE

Intersect Union Except


AND OR
S.Serrhini

SQL
Oprateurs ensemblistes
143

Tous les SGBD noffrent pas tous les oprateurs


ensemblistes, il convient donc de se documenter sur le
SGBD que lon utilise

Lutilisateur crit lui-mme les conditions pour produire


une union, intersection ou diffrence quand
ces oprateurs nexistent pas dans son SGBD.

Lutilisation de jointures permet de se passer des


oprateurs ensemblistes.
S.Serrhini

SQL
144
Oprateur UNION
Rechercher les nom et numro de tlphone des clients
Si ce dernier est inconnu, afficher **** .

SELECT NomClient, NumTel


FROM Client
WHERE NumTel IS NOT NULL
UNION
SELECT NomClient, ****
FROM Client
WHERE NumTel IS NULL;
SQL
S.Serrhini

145 Oprateur UNION

ATTENTION lunion-compatibilit
SELECT NomClient, NumTel
FROM Client
WHERE NumTel IS NOT NULL
UNION De mme
SELECT NomClient, **** type!!
FROM Client
WHERE NumTel IS NULL;
SQL
S.Serrhini

146 Oprateur UNION


Rsultat : NomClient NumTel
Boreman 085/821230
Cuypers 085/845623
Dupont 02/2186675
Durand 02/2165544
Gravelle ****
Gys 04/3365987
Laclasse ****
Lebon ****
Ensemble des clients Legrand ****

avec num. tl.


Leroy 04/3305847

Ensemble des clients


Mossou ****
Nicolay ****
sans num. tl. Pucette ****
Roberts 02/2214578
S.Serrhini

SQL
147
Oprateur UNION
UNION
Ralise lUNION des rsultats de deux requtes.

Chacune des requtes dune UNION doit contenir les mmes


colonnes, expressions ou fonctions dagrgation.

Les types de donnes dune colonne doivent tre compatibles.


(pas exactement le mme mais dun type que le SGBD doit
pouvoir convertir implicitement).
S.Serrhini

SQL
Oprateur EXCEPT
148

Rechercher toutes les commandes qui nont pas t ralises


par des reprsentants Bruxellois .
Avec Oprateur :
SELECT NomCommande, DateCommande
FROM Commande
EXCEPT
(SELECT NumRep
FROM Representant, Commande
WHERE Representant.NumRep = Commande.NumRep
AND Representant.LocaliteRep = Bruxelles );
S.Serrhini

SQL
Oprateur EXCEPT
149

Rechercher toutes les commandes qui nont pas t


ralises par des reprsentants bruxellois .
NumCommande DateCommande localiteRep
3 18/03/2003 Andenne
5 20/06/2003 Andenne
7 30/09/2003 Andenne
8 25/09/2003 Lige

Les reprsentants Bruxellois 9 14/06/2003 Lige


10 18/07/2003 Lige

Toutes les commandes 11 25/08/2003 Lige


12 30/09/2003 Lige
S.Serrhini

SQL
150
Oprateur EXCEPT

EXCEPT

Except ralise la diffrence des rsultats de deux


requtes.

A partir des tables rsultantes, il en cre une troisime


comportant les tuples de la premire qui napparaissent
pas dans la deuxime.
S.Serrhini

SQL
151
Oprateur EXCEPT

Rechercher toutes les commandes qui nont pas t ralises


par des reprsentants Bruxellois .
Sans Oprateur

SELECT NomCommande, DateCommande,


Representant.LocaliteRep
FROM Representant, Commande
WHERE Representant.NumRep = Commande.NumRep
AND Representant.LocaliteRep <> Bruxelles ;
S.Serrhini
SQL
152
Oprateur EXCEPT

Rsultat
NumCommande DateCommande localiteRep
3 18/03/2003 Andenne

5 20/06/2003 Andenne

7 30/09/2003 Andenne

8 25/09/2003 Lige

9 14/06/2003 Lige

10 18/07/2003 Lige

11 25/08/2003 Lige

12 30/09/2003 Lige
S.Serrhini

Oprateurs ensemblistes :
153
INTERSECT
Rechercher le nom et le prnom de tous les
reprsentants qui ont un tlphone et un GSM.
Avec Oprateur :
SELECT NomRep, PrnomRep
FROM Reprsentant
WHERE Representant.Tl IS NOT NULL
INTERSECT
SELECT NomRep, PrnomRep
FROM Representant
WHERE Representant.GSM IS NOT NULL;
S.Serrhini

Oprateurs ensemblistes :
INTERSECT
154

Rechercher le nom et le prnom de tous les


reprsentants qui ont un tlphone et un GSM.

Sans Oprateur :
SELECT NomRep, PrnomRep
FROM Reprsentant
WHERE Representant.Tl IS NOT NULL
AND Representant.GSM IS NOT NULL;
S.Serrhini

Les expressions SQL


155

Les expressions de la norme SQL portent sur diffrents types.


On peut ainsi faire des oprations sur des champs de type :

Numriques
Caractres
Temps et dates
Intervalles

Elles ne sont pas toutes disponibles dans tous les SGBD.


S.Serrhini

Les expressions numriques


156

Dans la clause de slection: NomProduit Expr1001


Jupe 750,00
Rechercher la valeur du stock au prix de vente. Manteau 2.280,00
Pantalon
Pull
Chaussures 3.500,00
Imprimante 1.448,04

SELECT NomProduit, (Stock*PrixProduit) Ecran Plat 1.000,00


USB 256 2.294,50
FROM Produit; USB 128 2.093,40
Souris 2.160,00
Clavier 5.632,00
Chaise 2.880,00
Table 4.920,00

Il est intressant daffecter un alias au rsultat Bureau


Salon
4.000,00
60.000,00
Meuble Cuisine 20.610,00
Lit 1 Personne 6.900,00
S.Serrhini

Les expressions numriques


157

Dans la clause de slection: NomProduit PrixVente

Jupe 750,00

Rechercher la valeur du stock au prix de vente. Manteau

Pantalon
2.280,00

Pull

Chaussures 3.500,00

Imprimante 1.448,04

SELECT NomProduit, Ecran Plat

USB 256
1.000,00

2.294,50

(Stock*PrixProduit) AS PrixVente USB 128 2.093,40

Souris 2.160,00
FROM Produit; Clavier 5.632,00

Chaise 2.880,00

Table 4.920,00

Bureau 4.000,00

Salon 60.000,00

Meuble Cuisine 20.610,00

Lit 1 Personne 6.900,00


S.Serrhini

Les expressions numriques


158

NomProduit
Dans la clause Where: Manteau

Chaussures
Rechercher les produits dont la valeur du stock
Imprimante
au prix de vente est suprieure 1000. USB 256

USB 128

Souris

SELECT NomProduit Clavier

FROM Produit Chaise

Table
WHERE (Stock*PrixVente) > 1000;
Bureau

Salon

Meuble Cuisine

Lit 1 Personne
Les expressions numriques
S.Serrhini

159

SQL offre des fonctions prdfinies

AVG() Moyenne
SUM() Somme
Min() Minimum
MAX() Maximum
COUNT() Compter

S.Serrhini

Les expressions numriques

Obtenir le stock moyen des produits de la catgorie mobilier .


stockMoyen

SELECT Avg(Stock) AS MoyenneStock 50,5

FROM Produit
WHERE catgorie = mobilier ;

160
S.Serrhini

Les expressions numriques


161

Afficher le nombre total de commandes NombreCommande

SELECT COUNT(*) AS NombreCommande 12

FROM Commande;

COUNT(*) Nombre de tuples de la table

COUNT(NumCommande) Nombre de tuples pour lesquels


un numro de commande est dfini

COUNT(DISTINCT Poids) Nombre de poids diffrents


S.Serrhini

Les expressions numriques


162

Compter le nombre de produits de la catgorie mobilier .


RefProduit NomProduit PrixProduit Stock Catgorie
15,00

SELECT Count(RefProduit)
10 Jupe 50 Textile
11 Manteau 76,00 30 Textile

FROM Produit
12 Pantalon 34,95 Textile
13 Pull 25,00 Textile

WHERE catgorie = mobilier ; 14


20
Chaussures
Imprimante
70,00
120,67
50
12
Textile
Informatique

Rsultat:
21 Ecran Plat 100,00 10 Informatique
22 USB 256 45,89 50 Informatique
23 USB 128 34,89 60 Informatique
24 Souris 12,00 180 Informatique
Expr1000
25 Clavier 44,00 128 Informatique
6 30 Chaise 32,00 90 mobilier
31 Table 123,00 40 mobilier
32 Bureau 400,00 10 mobilier
33 Salon 1.200,00 50 mobilier
34 Meuble Cuisine 229,00 90 mobilier
35 Lit 1 Personne 300,00 23 mobilier
S.Serrhini

Les expressions caractres


163

Chaque SGBD dispose de fonctions qui permettent la


manipulation des chanes de caractres. Les plus courantes sous
Oracle sont :

UPPER(chane) convertit une chane en majuscules

LOWER(chane) convertit une chane en minuscules

CHARACTER_LENGTH(chane) donne la taille dune chane


S.Serrhini

Les expressions caractres


164

Afficher en lettres majuscules le nom des clients.


Expr1000

DUPONT

DURAND
SELECT UPPER(NomClient) ROBERTS

FROM Client; NICOLAY

GYS

LEROY

LEBON

GRAVELLE

CUYPERS

BOREMAN

LACLASSE

PUCETTE

LEGRAND

MOSSOU
S.Serrhini

Les expressions caractres


165

Afficher en lettres minuscules le nom des clients.


Expr1000
dupont

SELECT LOWER(NomClient) durand

roberts
FROM Client; nicolay

gys

leroy

lebon

gravelle

cuypers

boreman

laclasse

pucette

legrand

mossou
S.Serrhini

Les expressions caractres


166

Longueur

Donner la longueur des noms des clients. 6


6
7
7
SELECT CHARACTER_LENGTH(NomClient) 3
5
AS Longueur 5
FROM Client; 8
7
7
8
7
7
6
S.Serrhini

Les expressions dates


167

Afficher les numro et date de commande passes entre


le 15/02/2002 et le 14/06/2003.

SELECT NumCommande, DateCommande


FROM Commande
WHERE DateCommande BETWEEN
10/02/02 AND 14/06/03;

Ne donne aucun rsultat.


S.Serrhini

Les expressions dates


168

Afficher les numro et date des commandes passes entre


le 15/02/2002 et le 14/06/2003. NumCommande datecommande
2 15/02/2002
3 18/03/2002
4 18/03/2003
9 14/06/2003

SELECT NumCommande, DateCommande


FROM Commande
WHERE DateCommande BETWEEN
CAST(10/02/2002AS DATE)AND CAST (14/06/2003AS DATE);

Permet de convertir une donne.


S.Serrhini

Les expressions dates


169

Afficher les numro de commande passes en 2002


SELECT NumCommande
FROM Commande
WHERE EXTRACT(YEAR FROM DateCommande) = 2002;
NumCommande

Spcifie la date commande 1

Spcifie la partie
dans la table commande 2

retourner
do est extraite la partie. 3

La fonction EXTRACT permet de retourner une partie de


la date.
S.Serrhini

Les expressions dates


170

Afficher les numro de commande et NumCommande


1
Expr1001
2002

lanne de la date de commande. 2 2002


3 2002

SELECT NumCommande, 4 2003


5 2003
Year(DateCommande) 6 2003

FROM Commande; 7
8
2003
2003
9 2003
10 2003
La fonction YEAR(), sous MySql, permet 11 2003

de retourner lanne dune date. 12 2003


S.Serrhini

Les expressions dates


171

Afficher les numros de commande et le mois NumCommande


1
Mois
2
de la date de commande. 2 2
3 3
4 3
5 6
SELECT NumCommande, 6 6
7 9
EXTRACT (month FROM DateCommande) Mois 8 9
FROM Commande; 9 6
10 7
11 8

La fonction EXTRACT(MONTH()) 12 9

permet de retourner le mois dune


date.
S.Serrhini

Les expressions dates


172

NumCommande Expr1001

Afficher le numro de commande, et 2


1 12/02/2002
17/02/2002
la date de commande plus 2 mois 3 20/03/2002
4 20/03/2003
5 22/06/2003
SELECT NumCommande, 6 23/06/2003
7 2/10/2003
ADD_MONTH(DateCommande,2)
8 27/09/2003
FROM Commande; 9 16/06/2003
10 20/07/2003
11 27/08/2003
12 2/10/2003

La fonction ADD_MONTH permet dajouter un


nombre de jours ou de mois une date.
S.Serrhini

Tri des rsultats


173

NomClient NumTel

Afficher une liste alphabtique des clients Boreman 085/821230


Cuypers 085/845623
en affichant leur numro de tlphone. Dupont 02/2186675
Durand 02/2165544
SELECT NomClient, Gravelle
NumTel Gys 04/3365987
Laclasse
FROM Client Lebon
ORDER BY NomClient; Legrand

ou Leroy 04/3305847
Mossou

SELECT Nicolay
Pucette
NomClient,NumTel Roberts 02/2214578
FROM Client
ORDER BY 1; Entier identifiant la position de lobjet
du tri dans la clause de slection.
Tri des rsultats S.Serrhini

174

Trier les clients par code postal et, pour CodePostalClient NomClient
1020 Dupont
chacun de ceux-ci, par ordre 1030 Lebon

alphabtique. 1030 Roberts


1050 Durand
1050 Legrand
1080 Gravelle
1080 Nicolay
SELECT CodePostalClient, 4000 Gys
NomClient 4000 Leroy
4000 Mossou
FROM Client 5300 Boreman
ORDER BY CodePostalClient, 5300 Cuypers
5300 Laclasse
NomClient; 5300 Pucette
S.Serrhini

Tri des rsultats


175

Trier les clients par ordre alphabtique dcroissant.


NomClient
Roberts
SELECT NomClient Pucette
Nicolay
FROM Client Mossou
Leroy
ORDER BY NomClient DESC; Legrand
Lebon
Laclasse
Gys
Gravelle
Durand
Dupont

Doit tre spcifi alors que ASC est par dfaut Cuypers
Boreman
S.Serrhini

Tri des rsultats


176

NomProduit Stock
Afficher les produits ainsi que le stock Pantalon
Pull
Trier le rsultat par stock. Bureau 10
Ecran Plat 10
Imprimante 12
SELECT NomProduit, Stock Lit 1 Personne 23
Manteau 30
FROM Produit Table 40

ORDER BY Stock; USB 256


Salon
50
50

Les valeurs NULL sont considres comme identiques. Chaussures 50


Jupe 50
Selon le SGBD, elles sont considres comme infrieures ou USB 128 60

suprieures aux valeurs dfinies. Chaise 90


Meuble Cuisine 90
Dans Access : comme les plus petites valeurs Clavier 128

Dans Oracle : comme les plus grandes valeurs Souris 180


S.Serrhini

Fonctions de groupements
177

Toutes les fonctions dagrgation du SQL que nous venons


dtudier portent sur lensemble des donnes qui correspondent
une clause WHERE spcifique.

Mais comment faire pour connatre le stock moyen des


produits par catgorie (mobilier, Textile, Informatique), ou
le nombre de commandes par clients ...?

Il faut crer un groupe logique denregistrements.


S.Serrhini

Fonctions de groupements
178

Groupe denregistrements. NumClient


100
NumCommande
6
100 4
100 2
SELECT Client.NumClient, 100 1
120 7
Commande.NumCommande 120 5
FROM Client, Commande 150 3
160 8
WHERE
170 12
Client.NumClient = Commande.NumClient 170 11
ORDER BY Client.NumClient; 170 10
170 9

Groupe par NumClient


S.Serrhini

Fonctions de groupements
179

Les fonctions de regroupement.


AVG() Moyenne
COUNT() Compter
SUM() Somme
MIN() Minimum
MAX() Maximum
FIRST Premier
LAST Dernier
S.Serrhini

Fonctions de groupements
180

Afficher le nombre total de produits.


NombreProduit

17

SELECT COUNT(*) AS NombreProduit


FROM Produit;

Cette requte assure des calculs sur lensemble dune ou


de plusieurs colonnes.
S.Serrhini

Fonctions de groupements
181

Afficher le nombre de produits par catgorie.

SELECT categorie,COUNT(*) AS NombreProduit


FROM Produit
GROUP BY Categorie;

Catgorie NombreProduit

Informatique 6

mobilier 6

Textile 5
S.Serrhini
Fonctions de groupements
182

RefProduit NomProduit PrixProduit Stock Catgorie


10 Jupe 15,00 50
11 Manteau 76,00 30 Textile
12 Pantalon 34,95 Textile
13 Pull 25,00 Textile
14 Chaussures 70,00 50 Textile
20 Imprimante 120,67 12 Informatique
21 Ecran Plat 100,00 10 Informatique
22 USB 256 45,89 50 Informatique
23 USB 128 34,89 60 Informatique
24 Souris 12,00 180 Informatique
25 Clavier 44,00 128 Informatique
Supposons un produit 30 Chaise 32,00 90 mobilier

sans catgorie 31
32
Table
Bureau
123,00
400,00
40
10
mobilier
mobilier
33 Salon 1.200,00 50 mobilier
34 Meuble Cuisine 229,00 90 mobilier
35 Lit 1 Personne 300,00 23 mobilier
S.Serrhini

Fonctions de groupements
183

Afficher le nombre de produits par catgorie.


SELECT categorie,COUNT(*) AS NombreProduit
FROM Produit
GROUP BY Categorie;
Catgorie NombreProduit

Informatique 6

mobilier 6

Textile 4

Pour les tuples dont lattribut de regroupement


est indtermin (NULL) : un groupe est constitu.
S.Serrhini

Fonctions de groupements
184

La clause GROUP BY

Rarrange la table rsultat du SELECT en groupes de lignes

Extrait pour chaque groupe, llment de la clause GROUP BY

Effectue pour le groupe, lopration demande


S.Serrhini

Fonctions de groupements
185

Les rgles de la clause GROUP BY :

A lexception des fonctions de calcul, la clause SELECT ne peut contenir


une colonne qui ne se trouve pas dans la clause GROUP BY.

10 lments possibles dans la clause GROUP BY.

Les lments de la clause GROUP BY sont dfinis de gauche droite et


sont classs dans lordre croissant, sans quoi il faut utiliser le prdicat
DESC pour dfinir un ordre dcroissant.
S.Serrhini

186
Fonctions de groupements

Pour chaque client de Bruxelles, afficher son nom et son


nombre de commandes.

SELECT NomClient, COUNT(NumCommande)


FROM Client INNER JOIN Commande
ON (Commande.NumClient = Client.NumClient)
WHERE LocaliteClient = Bruxelles
GROUP BY NomClient;
S.Serrhini
Fonctions de groupements
187

Table commande Table client de Bruxelles


NumClient Numcommande

100 1 NumClient NomClient

100 2 100 Dupont

150 3 110 Durand

100 4 120 Roberts

120 5 130 Nicolay

100 6 160 Lebon

120 7 170 Gravelle

160 8 220 Legrand

170 9

170 10

170 11

170 12
S.Serrhini

Fonctions de groupements
188

La jointure entre les deux tables


Client.NumClient NomClient NumCommande Commande.NumClient

100 Dupont 1 100

100 Dupont 2 100

100 Dupont 4 100

100 Dupont 6 100

120 Roberts 5 120

120 Roberts 7 120

160 Lebon 8 160

170 Gravelle 9 170

170 Gravelle 10 170

170 Gravelle 11 170

170 Gravelle 12 170


S.Serrhini

Fonctions de groupements
189

Le rsultat de la requte :

Trie la jointure par le champ du GROUP BY


Puis groupe les lignes.

NomClient Expr1001

Dupont 4

Gravelle 4

Lebon 1

Roberts 2
S.Serrhini

Fonctions de groupements
190

Afficher le stock moyen des diffrentes catgories.


Catgorie Expr1001

50

SELECT Catgorie, AVG(Stock) Informatique 73,3333333333333

FROM Produit mobilier 50,5

GROUP BY Catgorie; Textile 40


S.Serrhini

191 Fonctions de groupements


Afficher le stock moyen des diffrentes catgories, pour autant
que cette moyenne soit au moins de 50.
Catgorie Expr1001

Informatique 73,3333333333333

SELECT Catgorie, AVG(Stock) mobilier 50,5

FROM Produit
GROUP BY Catgorie
HAVING AVG(Stock) > =50;
S.Serrhini

Fonctions de groupements
192

La clause HAVING :
Permet de fixer une condition qui sera value pour chaque groupe
Ceux qui ne satisfont pas la condition sont exclus du rsultat.

Les colonnes se trouvant dans HAVING doivent se trouver


dans GROUP BY.

La clause HAVING peut sappliquer sans GROUP BY.


Elle filtre laffichage.
S.Serrhini

Fonctions de groupements
193

Afficher la somme des quantits commandes par les commandes


1, 2 et 3 pour autant que cette somme soit au moins de 10.

SELECT SUM(Quantit) Expr1000

FROM Concerne
23

WHERE NumCommande IN(1,2,3)


HAVING SUM(Quantit) > =10;

La clause HAVING peut sappliquer sans le GROUP BY .


Dans ce cas elle filtre laffichage.
S.Serrhini

Fonctions de groupements
194

Afficher la quantit moyenne par produit, en excluant


les commandes infrieures 5 units, et naffichant que les
produits ayant une moyenne suprieure 10.
RefProduit Moyenne

SELECT RefProduit,AVG(Quantit) AS Moyenne 12 10,5

FROM Concerne 23 12

WHERE Quantit >= 5


25 25

GROUP BY RefProduit Exclure les lignes rsultats qui ne doivent


HAVING AVG(Quantit) > 10; pas apparatre.
Le filtre se fait APRES les calculs

Exclure les tuples qui ne doivent pas intervenir dans le calcul.


Le filtre se fait AVANT le calcul
S.Serrhini

Requtes Imbriques
195

Afficher le numro des clients qui ont command le produit 12.

1. Extraire les numros de commande de toutes les commandes


comportant le produit 12 .

2. Extraire lidentificateur de client de tous les clients qui ont


pass des commandes, listes selon les numros de commande
retourns par ltape 1.
S.Serrhini

Requtes Imbriques
196

Afficher le numro des clients qui ont command le produit 12.

Le langage SQL permet de crer des sous-requtes incorpores


dans dautres requtes.

SELECT NumCommande
NumCommande

FROM Concerne 5

WHERE RefProduit = 12; 10


Requtes Imbriques
S.Serrhini

197

Afficher le numro des clients qui ont command le produit 12.

NumClient

100

SELECT NumClient 120

FROM Commande 170

WHERE NumCommande IN (4,5,10);


S.Serrhini

Requtes Imbriques
198

Afficher le numro des clients qui ont command le produit 12.


NumClient

SELECT NumClient
Requte Externe
100

FROM Commande
WHERE NumCommande
120

IN (SELECT NumCommande
170

FROM Concerne Requte Interne


WHERE RefProduit = 12);

Les sous-requtes sont toujours traites en commenant par la


dclaration SELECT la plus lintrieur.
S.Serrhini
Requtes Imbriques
199

Afficher le nom des clients qui ont command le produit 12.

1. Extraire les numros de commande de toutes les commandes


comportant le produit 12 .

2. Extraire lidentificateur de client de tous les clients qui ont


pass des commandes, listes selon les numros de commande
retourns ltape 1.

3. Extraire linformation de client partir de tous les identificateurs


de client retourns ltape 2.
S.Serrhini

Requtes Imbriques
200

Afficher le nom des clients qui ont command le produit 12.

Le langage SQL permet de crer des sous-requtes incorpores


dans dautres requtes.

SELECT NumCommande NumCommande

FROM Concerne 4

WHERE RefProduit = 12;


5

10
S.Serrhini

Requtes Imbriques
201

Afficher le nom des clients qui ont command le produit 12.

NumClient

SELECT NumClient 100

FROM Commande 120

WHERE NumCommande IN (4,5,10); 170


S.Serrhini

Requtes Imbriques
202

Afficher le nom des clients qui ont command le produit 12.

NomClient

Dupont

SELECT NomClient
FROM Client
Roberts

WHERE NumClient IN (100,120,170);


Gravelle
S.Serrhini

Requtes Imbriques
203

Afficher le nom des clients qui ont command le produit 12.

SELECT NomClient
FROM Client
NomClient

Dupont

WHERE NumClient
IN (SELECT NumClient
Roberts

FROM Commande
Gravelle

WHERE NumCommande
IN (SELECT NumCommande
FROM Concerne
WHERE RefProduit = 12));
Requtes Imbriques
S.Serrhini

204

Rechercher tous les produits dont le stock est suprieur la


moyenne des stocks.
NomProduit stock

SELECT NomProduit, Stock


USB 128 60

Souris 180

FROM Produit Clavier 128

WHERE Stock Chaise 90

>
Meuble Cuisine 90

(SELECT AVG(Stock)
FROM Produit);
S.Serrhini

Requtes Imbriques
205

Rechercher tous les produits dont le stock est suprieur la


moyenne des stocks.

SELECT AVG(Stock) Expr1000

FROM Produit; 58,2


S.Serrhini
Requtes Imbriques
206

Rechercher tous les produits dont le stock est suprieur la


moyenne des stocks.

SELECT NomProduit, Stock


FROM Produit
NomProduit stock
USB 128 60
Souris 180

WHERE Stock > 58,2 ; Clavier


Chaise
128
90
Meuble Cuisine 90

Rsultat de la requte interne


S.Serrhini

Requtes Imbriques
207

Rechercher tous les clients qui habitent la mme ville que


le client Dupont .
NomClient PrenomClient

SELECT NomClient, PrenomClient


Dupont Alain

Durand Eric

FROM Client Roberts Pierre

WHERE LocaliteClient Nicolay Caroline

= (SELECT LocaliteClient Lebon Nicolas

FROM Client Gravelle Stephane

WHERE NomClient = Dupont );


Legrand Jacques
S.Serrhini

Requtes Imbriques
208

Rechercher tous les clients qui habitent la mme ville que


le client Dupont .

(SELECT LocaliteClient LocaliteClient

FROM Client Bruxelles

WHERE NomClient = Dupont );


S.Serrhini

Requtes Imbriques
209

Rechercher tous les clients qui habitent la mme ville que


le client Dupont .

SELECT NomClient, PrenomClient NomClient PrenomClient

FROM Client
Dupont Alain
Durand Eric

WHERE LocaliteClient
Roberts Pierre
Nicolay Caroline

= ( Bruxelles ); Lebon
Gravelle
Nicolas
Stephane
Legrand Jacques

Rsultat de la requte interne


S.Serrhini

Requtes ACTION
210

Un SGBD permet dagir sur les donnes

AJOUT dun tuple INSERT INTO

MODIFICATION dune donne UPDATE SET

SUPPRESSION de tuples DELETE FROM


S.Serrhini

Requtes ACTION
211
INSERT
INSERT sert insrer des ranges dans une table de
base de donnes. Il peut sagir de :

linsertion dune seule range complte.

Linsertion dune seule range partielle.

Linsertion des rsultats dune requte.


S.Serrhini

Requtes ACTION
212
INSERT

linsertion dune seule range complte.


La syntaxe est INSERT INTO.
Il suffit pour cette syntaxe dindiquer le nom de la table ainsi
que les valeurs inclure dans la nouvelle range.

INSERT INTO NomTable


VALUES (Val1, Val2, .,Valn);

doit contenir les colonnes dans le mme


ordre o elles figurent dans la table.
S.Serrhini

Requtes ACTION
INSERT
213

Ajouter dans la table produit un nouveau produit cardigan de


100 euro et de catgorie textile et dont la rfrence est 50.
RefProduit NomProduit PrixProduit Stock Catgorie
10 Jupe 15,00 50
76,00
50 11
12
Manteau
Pantalon 34,95
30 Textile
Textile
13 Pull 25,00 Textile
Cardigan 14 Chaussures 70,00 50 Textile
20 Imprimante 120,67 12 Informatique
21 Ecran Plat 100,00 10 Informatique
22 USB 256 45,89 50 Informatique

100 23
24
USB 128
Souris
34,89
12,00
60
180
Informatique
Informatique
25 Clavier 44,00 128 Informatique
Indtermin 30 Chaise 32,00 90 mobilier
31 Table 123,00 40 mobilier
32 Bureau 400,00 10 mobilier
Textile 33 Salon 1.200,00 50 mobilier
34 Meuble Cuisine 229,00 90 mobilier
35 Lit 1 Personne 300,00 23 mobilier
S.Serrhini

Requtes ACTION
214
INSERT
RefProduit NomProduit PrixProduit Stock Catgorie

INSERT INTO 10 Jupe 15,00 50

Produit
11 Manteau 76,00 30 Textile
12 Pantalon 34,95 Textile

VALUES ( 50, 13 Pull 25,00 Textile

Cardigan,
14 Chaussures 70,00 50 Textile
20 Imprimante 120,67 12 Informatique

100, 21 Ecran Plat 100,00 10 Informatique

NULL,
22 USB 256 45,89 50 Informatique
23 USB 128 34,89 60 Informatique

Textile); 24 Souris 12,00 180 Informatique


25 Clavier 44,00 128 Informatique
30 Chaise 32,00 90 mobilier
31 Table 123,00 40 mobilier
32 Bureau 400,00 10 mobilier
33 Salon 1.200,00 50 mobilier
34 Meuble Cuisine 229,00 90 mobilier
35 Lit 1 Personne 300,00 23 mobilier
50 Cardigan 100,00 Textile
S.Serrhini

Requtes ACTION
215
INSERT
linsertion dune seule range partielle.
La syntaxe est INSERT INTO.
Il faut spcifier prcisment les noms des colonnes (on
peut omettre des colonnes) et des valeurs.

INSERT INTO NomTable (Champ1, Champ2,.,


Champn)
VALUES (Val1, Val2, .,Valn);

doit contenir les colonnes dans le mme


ordre o elles figurent aprs le INTO.
S.Serrhini

Requtes ACTION
INSERT
216

Ajouter dans la table produit un nouveau produit Disquette


de 10 euro dont la rfrence est 60.
RefProduit NomProduit PrixProduit Stock Catgorie
10 Jupe 15,00 50
11 Manteau 76,00 30 Textile
60 12 Pantalon 34,95 Textile
13 Pull 25,00 Textile
14 Chaussures 70,00 50 Textile
Disquette 20 Imprimante 120,67 12 Informatique
21 Ecran Plat 100,00 10 Informatique
22 USB 256 45,89 50 Informatique
23 USB 128 34,89 60 Informatique
10 24 Souris 12,00 180 Informatique
25 Clavier 44,00 128 Informatique
30 Chaise 32,00 90 mobilier
31 Table 123,00 40 mobilier
32 Bureau 400,00 10 mobilier
33 Salon 1.200,00 50 mobilier
34 Meuble Cuisine 229,00 90 mobilier
35 Lit 1 Personne 300,00 23 mobilier
50 Cardigan 100,00 Textile
S.Serrhini

Requtes ACTION
217
INSERT
RefProduit NomProduit PrixProduit Stock Catgorie
10 Jupe 15,00 50

INSERT INTO Produit 11 Manteau 76,00 30 Textile

(RefProduit,NomProduit,
12 Pantalon 34,95 Textile
13 Pull 25,00 Textile

PrixProduit) 14
20
Chaussures
Imprimante
70,00
120,67
50
12
Textile
Informatique

VALUES (60,Disquette,10); 21 Ecran Plat 100,00 10 Informatique


22 USB 256 45,89 50 Informatique
23 USB 128 34,89 60 Informatique
24 Souris 12,00 180 Informatique
25 Clavier 44,00 128 Informatique
30 Chaise 32,00 90 mobilier
31 Table 123,00 40 mobilier
32 Bureau 400,00 10 mobilier
33 Salon 1.200,00 50 mobilier
34 Meuble Cuisine 229,00 90 mobilier
35 Lit 1 Personne 300,00 23 mobilier
50 Cardigan 100,00 Textile
60 Disquette 10,00
S.Serrhini

Requtes ACTION
218
INSERT
linsertion du rsultat dune requte:

Le rsultat dune requte peut


aussi tre insr dans une table

Syntaxe :
INSERT INTO Table1 (champ1,champ2,)
SELECT (Val1, Val2,)
FROM Table2
WHERE [condition] ; facultatif
Requtes ACTION
S.Serrhini

219 UPDATE

Les valeurs des attributs peuvent tre


modifies :

MISE JOUR

Commande
UPDATE
S.Serrhini

Requtes ACTION
UPDATE
220

Syntaxe :
UPDATE NomTable
SET champ1 = Val1,
champ2=Val2,
WHERE < Condition> ;
S.Serrhini

Requtes ACTION
221
UPDATE
Exemple:
Augmenter de 5% le prix des produits de la
catgorie textile :

UPDATE Produit
SET prix=prix*1.05
WHERE catgorie= textile ;
S.Serrhini

Requtes ACTION
DELETE
222

Suppression de lignes dune table rpondant


un ou plusieurs critres :

Commande
DELETE

Syntaxe :
DELETE FROM NomTable
WHERE <Condition> ;
S.Serrhini

Requtes ACTION
223
DELETE

Exemple:
Supprimer les produits en rupture de stock.

DELETE FROM Produit


WHERE Stock = 0 ;
S.Serrhini

Requtes
ACTION
224

Dans certain SGBD, les oprations de


mises jour sont IRREVERSIBLES

Recommandation :

Crer une sauvegarde de la table


avant modification
S.Serrhini

225
Requtes ACTION

Comment garantir la fiabilit et la


qualit des donnes stockes ?
Exemples :

insrer dans la table produit un nouveau produit de


prix = -50 ,
ajouter une commande faite par le client N 300 (qui
nest pas dfini dans la table client),
supprimer Alain Dupont, client N100 qui a dj
pass des commandes,