Vous êtes sur la page 1sur 72

 Introduction

 L’algèbre relationnelle
◦ Opérations de base
◦ Opérations additionnelles
◦ Composition d’opérateurs
 Le langage SQL
◦ Généralités
◦ SQL langage de description de données (LDD)
◦ SQL pour les mises à jour (LMD)
◦ SQL langage de manipulation de données (LMD)

Langages de manipulation de données relationnelles 2


 La notion de relation correspond à un certain état de la BD
 Pour passer d’un état à l’autre, on utilise des opérations agissant sur les
relations
 Ces opérations constituent le langage de manipulation de données
(LMD)
 Le succès du modèle relationnel a motivé le développement de
multiples langages d’interrogation
 On distingue deux grandes classes de langages :
o Les langages algébriques
o Les langages prédicatifs

Langages de manipulation de données relationnelles 3


Les langages algébriques
 basé sur l’algèbre relationnelle de CODD
 Il s’agit d’un ensemble d’opérateurs qui s’appliquent aux relations
 Résultat: une nouvelle relation qui peut à son tour être manipulée
Exemple :
le langage Sequel (Structured English QUEry Language)
commercialisé sous le nom SQL

Langages de manipulation de données relationnelles 4


Les langages prédicatifs

 basé sur l’utilisation de prédicats pour sélectionner l(ensemble de tuples


souhaités
On distingue:
 Le calcul relationnel de tuples,
◦ issus de la logique des prédicats
Exemple : le langage QUEL (QUEry Language) du système INGRES
 Le calcul relationnel de domaines,
◦ construit également à partir de la logique des prédicats, mais en
faisant varier les variables sur les domaines des relations.
Exemple : le langage QBE (Query By Example)

Langages de manipulation de données relationnelles 5


Langages de manipulation de données relationnelles 6
 L’algèbre relationnelle a été proposée par CODD comme une collection
d’opérations formelles sur les relations

 Opérations de base
◦ Opérations binaires ensemblistes opérant sur deux relations
◦ Opérations unaires spécifiques

 Opérations additionnelles
◦ Ces opérations se déduisent des opérations de base

Langages de manipulation de données relationnelles 7


Opérations ensemblistes
 Ce sont des opérations binaires
 À partir de deux relations, on génère une troisième relation
 Ce sont:
◦ l’union,
◦ la différence
◦ et le produit cartésien

Langages de manipulation de données relationnelles 8


Opérations ensemblistes

Union: L’union de deux relations de même schéma est une relation T


de même schéma contenant l’ensemble des tuples appartenant à R
ou S ou aux deux relations

Notation
· T = R U S T
· T = UNION (R,S) U
· Notation graphique
R S
Langages de manipulation de données relationnelles 9
Exemple
R Num Nom Adr S Num Nom Adr
2140 Ahmed Batna 2510 Omar Batna
1123 Ali Biskra 2140 Ahmed Batna
342 Leila Annaba 2450 Lynda Skikda
5
T = RUS Num Nom Adr
2140 Ahmed Batna
1123 Ali Biskra
342 Leila Annaba
5
2510 Omar Batna
2450 Lynda Skikda

Langages de manipulation de données relationnelles 10


Opérations ensemblistes

Différence: La différence de deux relations de même schéma (dans


l’ordre R – S) est une relation T de même schéma contenant les
tuples appartenant à R et n’appartenant pas à S

Notation
T
· T = RS
· T = MINUS (R,S) 
· Notation graphique R S
Langages de manipulation de données
relationnelles 11
Exemple
R Num Nom Adr S Num Nom Adr
2140 Ahmed Batna 2510 Omar Batna
1123 Ali Biskra 2140 Ahmed Batna
342 Leila Annaba 2450 Lynda Skikda
5
T=RS Num Nom Adr
1123 Ali Biskra
342 Leila Annaba
5

Langages de manipulation de données relationnelles 12


Opérations ensemblistes
Produit cartésien: Le produit cartésien de deux relations de schéma quelconque
R et S, est une relation T ayant pour attributs la concaténation de ceux de R et S
et dont les tuples sont toutes les concaténations d’un tuple de R à un tuple de S
T
Notation
· T = R S 
· T = PRODUCT (R,S)
R S
· Notation graphique

Langages de manipulation de données relationnelles 13


Exemple
R NumProd Dési
S NomFour Adr
Amir Batna
1 Brosse
Ahmed Biskra
2 Stylo
Lynda Skikda

NumProd Dési NomFour Adr


T=RS
1 Brosse Amir Batna
2 Stylo Amir Batna
1 Brosse Ahmed Biskra
2 Stylo Ahmed Biskra
1 Brosse Lynda Skikda
2 Stylo Lynda Skikda

Langages de manipulation de données relationnelles 14


Opérations unaires

Projection: la projection d’une relation R de schéma R ( A1 , A2 , … , An ) sur les


attributs Ai1 , Ai2 , …… , Aip ( avec ij  ik et p < n) est une relation R’ de
schéma R’( Ai1 , Ai2 , …… , Aip ) dont les tuples sont obtenus par élimination des
valeurs des attributs de R n’appartenant pas à R’ et par suppression des tuples
en double
R’
Notation
Ai1 , Ai2 , …… , Aip
· R’ =  Ai1 , Ai2 , …… , Aip (R)
· R’ = PROJECT ( R / Ai1 , Ai2 , …… , Aip )
R
· Notation graphique
Langages de manipulation de données relationnelles 15
Exemple R NumProd Dési NomFour Adr
1 Brosse Amir Batna
2 Stylo Amir Batna
1 Brosse Ahmed Biskra
2 Stylo Ahmed Biskra
1 Brosse Lynda Skikda
2 Stylo Lynda Skikda

R’ =  NomFour , Adr (R) NomFour Adr


Amir Batna
Ahmed Biskra
Lynda Skikda

Langages de manipulation de données relationnelles 16


Opérations unaires

Critère de sélection: est une formule de qualification conjonctive avec la


conjonction (ET noté ) de formules de qualification atomiques

Ai  Cte où Ai : est un attribut


Cte : est une constante,
 ∈ { = ,  , < , > ,  , }

Une formule de qualification conjonctive Q est du type :


Ai1  C1  Ai2  C2  ……..  Ain  Cn

Langages de manipulation de données relationnelles 17


Opérations unaires
Restriction: La restriction de la relation R par une qualification Q est
une relation R’ de même schéma dont les tuples sont ceux de R
R’
satisfaisant la qualification Q

Notation Q

· R’ = Q (R)
R
· R’ = RESTRICT ( R / Q)
· Notation graphique
Langages de manipulation de données relationnelles 18
Exemple R Dési NomFour Adr
Brosse Amir Batna
Stylo Amir Batna
Bureau Ahmed Batna
Chaise Khaled Biskra
Cahier Lynda Skikda

R’ = Adr = ‘Batna’ (R)


Dési NomFour Adr
Brosse Amir Batna
Stylo Amir Batna
Bureau Ahmed Batna

Langages de manipulation de données relationnelles 19


La jointure : La jointure de deux relations R et S selon une
qualification multi-attributs Q est l’ensemble des tuples du produit
cartésien R  S satisfaisant la qualification Q
T
Notation :
·T = R S
Q R S

·T = JOIN (R, S / Q)
·T = R  S [Q] /* restriction du produit cartésien
· Notation graphique
Langages de manipulation de données relationnelles 20
Exemple Adr fonction
R Num Nom Adr S Batna Enseignant
2140 Ahmed Batna Batna Médecin
1123 Ali Biskra Annaba Commerçant
3425 Leila Annaba Biskra Mécanicien

Num Nom Adr fonction


T=R S
2140 Ahmed Batna Enseignant
2140 Ahmed Batna Médecin
1123 Ali Biskra Mécanicien
3425 Leila Annaba Commerçant

Langages de manipulation de données relationnelles 21


Intersection: L’intersection de deux relations R et S de même schéma est une
relation T de même schéma contenant les tuples appartenant à la fois à R et S

Notation :
·T = R ∩ S
T
·T = INTERSECT ( R , S )
· Notation graphique

Remarque : R S
R ∩ S = R  (R  S)
R ∩ S = S  (S  R)

Langages de manipulation de données relationnelles 22


Exemple
R Num Nom Adr S Num Nom Adr
2140 Ahmed Batna 2510 Omar Batna
1123 Ali Biskra 2140 Ahmed Batna
3425 Leila Annaba 3425 Leila Annaba

T=R ∩ S Num Nom Adr


2140 Ahmed Batna
3425 Leila Annaba

Langages de manipulation de données relationnelles 23


Division : permet de rechercher l’ensemble de tous les sous tuples satisfaisant
une sous relation dans une relation
Définition : Le quotient de la relation R de schéma R( A1, A2, …, Ap) par la sous-
relation S de schéma S( Ap+1 , ……. , An) est la relation Q de schéma Q(A1 , A2 ,
……. , Ap) formée de tous les tuples qui concaténés à chacun des tuples de S
donne toujours un tuple de R
Q = { (a1 , a2 , …. , ap ) /  ( ap+1 , …… , an ) ∈ S , (a1 , a2 , ….. , ap , ap+1 , ….. , an ) ∈
R} Q

Notation :
÷
·Q = R ÷ S R S

· Q = DIVISION ( R , S )
· Notation graphique
Langages de manipulation de données relationnelles 24
Exemple : Schéma de la Base de Données Relationnelle:
PROD (NP, NOP, COUL, QTES)
ACHAT (NP, NCLI, QTEA)
CLIENT (NCLI, NOM, ADR)

Requête : «Couleur et nom des produits achetés par le client


‘Ahmed’ ?»
Expression de la requête en langage algébrique
R1 = RESTRICT ( CLIENT / NOM = ‘Ahmed’)
R2 = JOIN (R1, ACHAT / R1. NCLI = ACHAT . NCLI )
R3 = JOIN (R2 , PROD / R2 . NP = PROD . NP )
Res = PROJECT ( R3 / NOP , COUL )
ΠNOP,COUL( PROD (ACHAT (σNOM =‘Ahmed CLIENT))) Langages de manipulation de données relationnelles 25
Langages de manipulation de données relationnelles 26
 SQL est une évolution commercialisée par IBM du langage SEQUEL
(Sequel: Structured Query Language)
 La syntaxe de base du langage SQL se trouve sur la plupart des
SGBD relationnels
 SQL est à la fois:
◦ Un langage de définition des données (ordres CREATE, ALTER,
DROP)
◦ Un langage de manipulation de données (ordres UPDATE, INSERT,
DELETE)
◦ Un langage d’interrogation (ordre SELECT)

Langages de manipulation de données relationnelles 27


 Organisation des données sous forme:
◦ de tables [tables],
◦ de colonnes [columns],
◦ de clés primaires [primary keys]
◦ et de clés étrangères [foreign keys]
 Gestion des données pour :
◦ ajouter et retirer des lignes d'une table
◦ ajouter une colonne dans une table
◦ modifier les valeurs d'une colonne dans certaines lignes d'une
table
◦ ajouter et de supprimer une table dans une BD

Langages de manipulation de données relationnelles 28


Accès aux données:
 permet de définir les propriétés d'ensemble de données
 Une requête SQL produit une table, à partir d'extraits d'une ou
plusieurs tables de la BD
 Les données peuvent être déduites ou calculées
 le résultat d'une requête est stocké ensuite dans la BD

Langages de manipulation de données relationnelles 29


Création d’une table
 Cette opération crée une table (vide). Entre parenthèses le nom de
chaque colonne et son domaine
 Le création de tables se fait à l'aide du couple de mots-clés CREATE
TABLE
 La syntaxe de définition simplifiée d'une table est la suivante :

CREATE TABLE Nom_de_la_table (Nom_de_colonne1 Type_de_donnée,


Nom_de_colonne2 Type_de_donnée,
. . . );

Langages de manipulation de données


relationnelles 30
Types de données

Type de donnée Syntaxe Description


Type alphanumérique CHAR(n) Chaine de caractères de
longueur fixe n
Type numérique NUMBER(n,[d]) Nombre de n chiffres
[optionnellement d après la
virgule]
Type numérique INTEGER Entier signé de 32 bits
Type numérique SMALLINT Entier signé de 16 bits
Type numérique FLOAT Nombre à virgule flottante
Type horaire DATE Date sous forme 13/04/13
Type horaire TIME Heure sous forme 12:30:23

Langages de manipulation de données relationnelles 31


Création d’une table
Exemple : CLIENT(NCLI, NOM, ADR, TEL)

CREATE TABLE CLIENT (NCLI CHAR (4),


NOM CHAR (12),
ADR CHAR (30),
TEL NUMERIC) ;

Langages de manipulation de données relationnelles 32


Définition de clés
Une clé primaire est spécifiée par les mots réservés PRIMARY KEY

CREATE TABLE CLIENT (NCLI CHAR (4), NOM CHAR (12),


ADR CHAR (30), PRIMARY KEY (NCLI));

Une clé secondaire est spécifiée par le mot réservé UNIQUE

CREATE TABLE CLIENT (NCLI CHAR (4), NOM CHAR (12),


ADR CHAR (30), PRIMARY KEY (NCLI),
UNIQUE (NOM, ADR));

Langages de manipulation de données relationnelles 33


Contrainte de référence
Une référence à une clé étrangère est spécifiée par le mot réservé FOREIGN KEY
(clé) REFERENCES (table.attribut)

Exemple : ACHAT(NP, NCLI, QTEA)

CREATE TABLE ACHAT (NP INTEGER, NCLI CHAR (4), QTEA FLOAT,
FOREIGN KEY (NP) REFERENCES (PRODUIT.NP),
FOREIGN KEY (NCLI) REFERENCES (CLIENT.NCLI)) ;

Langages de manipulation de données relationnelles 34


Caractère facultatif / obligatoire d’une colonne
 Par défaut toute colonne est facultative
 Le caractère obligatoire d’une colonne se déclarera par la clause NOT NULL
Exemple : PRODUIT (NP, LIB, COUL, QTES)

CREATE TABLE PRODUIT (NP INTEGER NOT NULL,


LIB CHAR(10) NOT NULL,
COUL CHAR(6),
QTES INTEGER NOT NULL,
PRIMARY KEY (NP) )

Langages de manipulation de données relationnelles 35


Modification de table
 Il est possible de supprimer une table grâce à la clause
DROP
 Il existe aussi des commandes moins extrêmes permettant
◦ L'ajout de colonnes
◦ La modification de colonnes
◦ La suppression de colonnes

Langages de manipulation de données relationnelles 36


Suppression d’une table
 La suppression d'une table se fait via la syntaxe suivante :

DROP TABLE Nom_de_la_table

Exemple :
DROP TABLE CLIENT

Langages de manipulation de données relationnelles 37


Ajout d’une colonne
 La clause ALTER permet la modification des colonnes d'une table
 Associée avec la clause ADD, la clause ALTER permet l'ajout de colonnes à
une table
 La syntaxe est la suivante :
ALTER TABLE Nom_de_la_table ADD Nom_de_la_colonne Type_de_donnees

Exemple: La commande suivante ajoute la colonne PRIX à la table PRODUIT :


ALTER TABLE PRODUIT ADD PRIX INTEGER

Langages de manipulation de données relationnelles 38


Suppression d’une colonne
 La clause ALTER permet la modification des colonnes d'une table
 Associée avec la clause DROP COLUMN, elle permet de supprimer
des colonnes
 La syntaxe est la suivante :
ALTER TABLE Nom_de_la_table DROP COLUMN Nom_de_la_colonne

Exemple: la commande suivante supprime l’attribut (colonne) PRIX de


la table PRODUIT:
ALTER TABLE PRODUIT DROP PRIX Langages de manipulation de données relationnelles 39
 La manipulation du contenu des tables (les tuples) s'effectue au
moyen de requêtes SQL
 Chaque requête est la traduction d'une expression de l'algèbre
relationnelle

Exemple: schéma d’une base de données Produit-Achat-Client


PRODUIT (NP, LIB, COUL, QTES )
ACHAT(NP, NCLI, QTEA)
CLIENT(NCLI, NOM, ADR)

Langages de manipulation de données relationnelles 40


 La principale commande du langage d’interrogation est la
commande SELECT

Projection
 L’expression de cette opération se fait par la syntaxe suivante:
SELECT liste_attributs
FROM nom_relation

Exemple: liste des libellés et des Quantités par Produit


SELECT LIB, QTES
FROM PRODUIT ;
Langages de manipulation de données relationnelles 41
PRODUIT NP LIB COUL QTES
Projection 212 Stylo rouge 88
443 Crayon noir 56
243 Cartouche noir 87
226 cahier bleu 50
543 Stylo bleu 88

Exemple: liste des libellés et des Quantités par Produit


SELECT LIB, QTES LIB QTES
Stylo 88
FROM PRODUIT ;
Crayon 56
Cartouche 87
cahier 50
Stylo 88

Langages de manipulation de données relationnelles 42


Projection
 Pour éliminer les doubles il faut rajouter le mot clé DISTINCT
LIB QTES
SELECT DISTINCT LIB, QTES Stylo 88
Crayon 56
FROM PRODUIT ;
Cartouche 87
cahier 50

Langages de manipulation de données relationnelles 43


Restriction
 Cette opération permet de sélectionner les tuples d’une relation vérifiant une certaine
condition
 Elle a pour syntaxe:
SELECT 
FROM nom_relation
WHERE qualification
La qualification peut faire appel aux opérateurs suivants:
 Opérateurs logiques: AND, OR, NOT

 Comparateurs de chaînes: IN, BETWEEN, LIKE

 Opérateurs arithmétiques: +, -, /, %

 Comparateurs arithmétiques: =, ,<, >, ,  Langages de manipulation de données relationnelles 44


Restriction
Exemple: Liste des Produits de Couleur ‘bleu' dont la Quantité est
supérieure à 10
SELECT 
NP LIB COUL QTES
FROM PRODUIT 226 cahier bleu 50

WHERE COUL = ‘bleu’ AND QTES > 10 ; 543 Stylo bleu 88

Langages de manipulation de données relationnelles 45


Restriction sur une comparaison de chaînes
 Le comparateur de chaîne BETWEEN et IN vérifient
◦ Qu’une valeur se trouve dans un intervalle
◦ Qu’une valeur appartient à une liste de valeurs
NP LIB COUL QTES
EXEMPLE:
212 Stylo rouge 88
SELECT  243 Cartouche noir 87
FROM PRODUIT 543 Stylo bleu 88

WHERE QTES BETWEEN 80 AND 100


NP LIB COUL QTES
SELECT  212 Stylo rouge 88
226 cahier bleu 50
FROM PRODUIT
543 Stylo bleu 88
WHERE COUL IN (‘rouge’ , ‘bleu’)
Langages de manipulation de données relationnelles 46
Restriction sur une comparaison de chaînes
 Le comparateur de chaîne LIKE permet de faire des restrictions sur
des chaînes grâce au caractère %
 % remplace une séquence (éventuellement vide) de caractères
EXEMPLE: liste des produits dont le libellé commence par ‘ca’
SELECT 
FROM PRODUIT NP LIB COUL QTES
WHERE LIB LIKE ‘ca%’ ; 243 Cartouche noir 87
226 Cahier bleu 50

Langages de manipulation de données relationnelles 47


Sélection
 Une sélection est une restriction suivie d’une projection
Exemple: liste des numéros et libellés des produits de couleurs noir ou
dont la quantité est supérieure à 80

NP LIB
SELECT NP, LIB 212 Stylo
FROM PRODUIT 443 Crayon
WHERE COUL = ‘noir’ 243 Cartouche
543 Stylo
OR QTES > 80 ;

Langages de manipulation de données


relationnelles 48
Tri
 Il est possible de trier les résultats suivant l’ordre ascendant ou
descendant d’un ou plusieurs attributs en ajoutant la clause:
ORDER BY . . DESC ou ORDER BY . . ASC

Exemple: NP LIB
SELECT NP, LIB 212 Stylo
FROM PRODUIT 243 Cartouche
WHERE COUL = ‘noir’ 443 Crayon
OR QTES > 80 543 Stylo
ORDER BY NP DESC;
Langages de manipulation de données relationnelles 49
Produit cartésien
SELECT 
FROM relation1 , relation2 ;

Exemple:
SELECT 
FROM PRODUIT , ACHAT ;

Langages de manipulation de données relationnelles 50


Jointure
 La jointure est un produit cartésien avec une qualification
 La qualification est une égalité entre deux colonnes
 On doit donc préciser le nom des colonnes des tables sur lesquelles on fait la
jointure
SELECT 
FROM relation1 , relation2
WHERE qualification ;

Exemple:
SELECT 
FROM PRODUIT , ACHAT
WHERE PRODUIT. NP = ACHAT. NP; Langages de manipulation de données relationnelles 51
Jointure
 Il est possible d’exprimer la jointure par des requêtes imbriquées
avec l’opérateur IN
SELECT LIB
FROM PRODUIT
WHERE NP IN
(SELECT NP
FROM ACHAT);

Langages de manipulation de données relationnelles 52


Combinaison d’opérateurs
 Exemple : «Nom des clients ayant passé une commande supérieure ou égale à
1000 cartouches, par ordre alphabétique».
SELECT DISTINCT NOM
FROM PRODUIT, ACHAT, CLIENT
WHERE ACHAT.NCLI = CLIENT.NCLI
AND ACHAT.NP = PRODUIT.NP
AND PRODUIT.LIB = ‘cartouche’
AND ACHAT.QTEA >= 1000
ORDER BY NOM ASC ;

Langages de manipulation de données relationnelles 53


Combinaison d’opérateurs
 Expression à l’aide des requêtes imbriquées

SELECT DISTINCT NOM


FROM CLIENT
WHERE NCLI IN
(SELECT NCLI
FROM ACHAT
WHERE QTEA >= 1000
AND NP IN
(SELECT NP
FROM PRODUIT
WHERE LIB = ‘cartouche’) )
ORDER BY NOM ASC ; Langages de manipulation de données relationnelles 54
L’union
 Cet opérateur permet d'effectuer une UNION des tuples sélectionnés par deux
clauses SELECT
SELECT . . FROM . . WHERE . .
UNION
SELECT . . FROM . . WHERE . .
Exemple: Numéros des produits dont la quantité est supérieure à 50 ou dont la
quantité achetée est inférieure à 10
SELECT NP FROM PRODUIT WHERE QTES > 50
UNION
SELECT NP FROM ACHAT WHERE QTEA < 10;
NB: Par défaut les doublons sont automatiquement éliminés
Langages de manipulation de données relationnelles 55
L’intersection
 Cet opérateur permet d'effectuer une INTERSECTION des tuples sélectionnés par
deux clauses SELECT
SELECT . . FROM . . WHERE . .
INTERSECT
SELECT . . FROM . . WHERE . .

Exemple:
SELECT NP FROM PRODUIT
INTERSECT
SELECT NP FROM ACHAT;
NB: L'opérateur INTERSECT n'étant pas implémenté dans tous les SGBD,
Langages de manipulation de données relationnelles 56
La différence:
 Opérateur EXCEPT ou MINUS
 Cet opérateur permet d'effectuer une DIFFERENCE entre les tuples
sélectionnés par deux clauses SELECT,
 Sélectionner les tuples de la première table n'appartenant pas à la
seconde (les deux tables devant avoir le même schéma)
SELECT . . FROM . . WHERE . .
EXCEPT
SELECT . . FROM . . WHERE . .

NB: L'opérateur EXCEPT n'étant pas implémenté dans tous les SGBD
Langages de manipulation de données relationnelles 57
Fonctions SQL standards
SUM : Permet de calculer la somme des valeurs d’une colonne

Exemple: affichage du total des salaires versés


SELECT SUM (salaire) FROM employé;

AVG: Permet de calculer la moyenne de toutes les valeurs d’une colonne

Exemple: affichage de la rémunération moyenne (salaire + commission) des


employés
SELECT AVG (salaire + comm) FROM employé;
Langages de manipulation de données relationnelles 58
Fonctions SQL standards
COUNT : Permet de compter le nombre de lignes d’une table

Exemple: affichage du nombre total des salariés


SELECT COUNT () FROM employé;

MAX / MIN: Renvoie la valeur maximum ou minimum d’une colonne

Langages de manipulation de données


relationnelles 59
Clause GROUP BY
 Il est possible de subdiviser la table en groupes
 Chaque groupe étant l’ensemble des lignes ayant une valeur commune

 Groupe toutes les lignes pour lesquelles exp1, exp2, . . . ont la même valeur
GROUP BY exp1, exp2, . . .

groupe 1
groupe 2

groupe 3

groupe 4
Langages de manipulation de données relationnelles 60
Clause GROUP BY
 Cette clause se place juste après la clause WHERE, ou après la clause FROM si
la clause WHERE n’existe pas
EXEMPLES:
1. Afficher le salaire moyen de chaque catégorie d’employés
SELECT categ, AVG(salaire)
FROM employé
GROUP BY categ

2. Afficher le nombre de commandes passées par chaque client


SELECT numclient, nomclient, COUNT(numcde)
FROM Client, Commande
WHERE Client.numclient = Commande.numclient
GROUP BY numclient
Langages de manipulation de données relationnelles 61
Clause HAVING

GROUP BY . . . HAVING qualification

 Cette clause sert à préciser des critères de sélection sur les groupes
de valeurs
 Elle se place après la clause GROUP BY
 La qualification ne porte que sur des caractéristiques de groupe:
fonction ou expression figurant dans la clause GROUP BY

Langages de manipulation de données relationnelles 62


Clause HAVING

Exemple:
Donner le nombre de commandes passées par client uniquement dans le cas où il
y a plus de 10 commandes.

SELECT numclient, nomclient, COUNT(numcde)


FROM Client, Commande
WHERE Client.numclient = Commande.numclient
GROUP BY numclient HAVING COUNT (numcde) > 10

Langages de manipulation de données relationnelles 63


Expression des sous requêtes
 Effectuer une sous-requête consiste à effectuer une requête à
l’intérieur d’une autre requête
 Une sous-requête doit être placée à la suite d’une clause WHERE ou
HAVING
 Elle doit remplacer une constante ou un groupe de constantes

WHERE exp op (SELECT . . . )

Où op  { = ,  , < , > , <= , >= }


exp est toute expression légale
Langages de manipulation de données relationnelles 64
Expression des sous requêtes
 Cas où la sous requête donne qu’une seule constante.

Exemple: donner les noms des étudiants ayant le même âge que ‘Atef’

SELECT nom
FROM Etudiant
WHERE âge = (SELECT âge
FROM Etudiant
WHERE nom = ‘Atef’)

Langages de manipulation de données relationnelles 65


Expression des sous requêtes
 Cas où la sous requête peut ramener plusieurs constantes
 Dans ce cas l’opérateur de comparaison admet à sa droite un
ensemble de valeurs
WHERE exp op ANY (SELECT . . . )
WHERE exp op ALL (SELECT . . . )
Exemple: liste des employés gagnant plus que tous les employés du département
30
SELECT nom, sal
FROM Employé
WHERE sal > ALL (SELECT sal
FROM Employé
WHERE dept = 30)
Langages de manipulation de données relationnelles 66
 Le LMD est le langage permettant de modifier les informations
contenues dans la BD
 Trois types de modification des données:
◦ INSERT ajout de lignes
◦ UPDATE mise à jour de lignes
◦ DELETE suppression de lignes

Langages de manipulation de données relationnelles 67


Insertion d’un tuple:
 L’ajout d’une ligne dans une table suit la syntaxe suivante
INSERT INTO table (col1, . . . , coln)
VALUES (val1, . . . , valn)

 table est le nom de la table sur laquelle porte l’insertion


 col1, . . . , coln est la liste des noms des colonnes pour lesquelles on donne une
valeur
Exemple: la commande suivante ajoute une ligne dans la table PRODUIT
INSERT INTO PRODUIT (NP, LIB, COUL, QTES, PRIX )
VALUES (200, ‘Pince’, ‘Rouge’, 200, 25.50)
Langages de manipulation de données relationnelles 68
Insertion de plusieurs tuples:
 L’ajout de plusieurs lignes dans une table suit la syntaxe suivante
INSERT INTO table(col1, ... , coln)
SELECT col1, ... , coln
FROM Nom_de_la_table2
WHERE qualification

 table est le nom de la table sur laquelle porte l’insertion


 Insertion de l’ensemble des valeurs découlant de la sélection
 Les données sont affectées aux colonnes (col1, . . . , coln) dans l'ordre dans
lequel elles ont été déclarées dans la clause INTO

Langages de manipulation de données relationnelles 69


Suppression d’un tuple:
 L’ordre DELETE permet de supprimer des lignes d’une table
DELETE FROM table
WHERE qualification

 La clause WHERE indique quelles lignes doivent être supprimées

 La qualification peut contenir des sous-interrogations

Exemple: supprimer tous les produits achetés par Ahmed


DELETE FROM PRODUIT
WHERE ‘Ahmed’ IN
(SELECT NOM
FROM ACHAT, CLIENT, PRODUIT
WHERE PRODUIT.NP = ACHAT.NP
AND ACHAT. NCl = CLIENT. NCl Langages de manipulation de données relationnelles 70
Modification d’un tuple:
 La commande UPDATE permet de modifier les valeurs d’un ou
plusieurs champs, dans une ou plusieurs lignes existantes d’une
table UPDATE table UPDATE table
OU
SET col1 = exp1 , col2 = exp2 , . . . SET (col1, col2, . . . ) = (SELECT . . . )
WHERE qualification WHERE qualification

table est le nom de la table mise à jour;


col1, col2, . . . Sont les noms des colonnes qui seront modifiées;
exp1, exp2, . . . Sont des expressions
La clause WHERE indique quelles lignes doivent être supprimées
Langages de manipulation de données relationnelles 71
Modification d’un tuple:
Exemple: Mettre la quantité à 0 pour tous les clients habitant à
Batna
UPDATE ACHAT
SET QTEA = 0
WHERE ‘Batna’ IN
(SELECT ADR
FROM CLIENT, ACHAT
WHERE ACHAT.NCLI = CLIENT.NCLI)

Langages de manipulation de données relationnelles 72

Vous aimerez peut-être aussi