Escolar Documentos
Profissional Documentos
Cultura Documentos
fr/donsez/cours
Didier DONSEZ
Universit Joseph Fourier
PolyTechGrenoble LIG/ADELE
Didier.Donsez@imag.fr,
Didier.Donsez@ieee.org
18/09/2008
18/09/2008
Concepts de Base
Modle Relationnel
SQL
Concept de Base
Relation
Table
Tuple
Ligne
Attribut
Colonne
Manipulation
Oprateurs Relationnels
, -, , , , , ,
Composition d Oprateurs
Ordres
SELECT
FROM
18/09/2008
Exemples de Requtes
Mono-Relation
18/09/2008
La Restriction et la Projection
Buv
NB
100
101
102
103
Nom
Ben
Ben
Charlie
David
NB
102
103
Nom
Charlie
David
Ville
Paris
Paris
Ville
Nice
Lille
Paris
Paris
(Buveurs/Ville)
Proj
Ville
Nice
Lille
Paris
4
18/09/2008
Exemples de Requtes
Multi-Relations
/Nom)
5
18/09/2008
L union et l intersection
Buv1
NB
100
101
Nom
Ben
Ben
Ville
Nice
Lille
Buveurs1 Buveurs2
Union
NB
100
101
102
103
Nom
Ben
Ben
Charlie
David
Ville
Nice
Lille
Paris
Paris
Buv2
NB
101
102
103
Nom
Ben
Charlie
David
Ville
Lille
Paris
Paris
Buveurs1 Buveurs2
Inter
NB
101
Nom
Ben
Ville
Lille
18/09/2008
La Jointure ><
Buv
NB
100
101
102
103
Conso NB
100
100
100
101
101
102
Nom
Al
Ben
Charlie
David
Qte
50
25
75
100
50
25
NB
100
100
100
101
101
102
Nom
Al
Al
Al
Ben
Ben
Charlie
NB
100
100
100
101
101
102
Qte
50
25
75
100
50
25
18/09/2008
( Vins/Couleur= Rouge ),
/Conso.NV=Vins.NV)
/Nom)
( ><( Buveurs
><(( Vins/Couleur= Rouge ),Conso/ Vins.NV=Conso.NV)
/Conso.NB=Buveurs.NB)
/Nom)
8
18/09/2008
( ( ><(
Buveurs
><(Vins,Conso/ Vins.NV=Conso.NV)
/Conso.NB=Buveurs.NB)
/Couleur= Rouge )
/Nom)
18/09/2008
Reprsentation
en Arbre Algbrique
Partition
+Agrgat
(Qte)
(Qte)
NB,Nom,Qte
NB,Nom,Qte
NV=NV
NB=NB
NB=NB
Mill=1994
Vins
Conso
NV=NV
Ville=Paris
Mill=1994
Buveurs
Vins
Ville=Paris
Conso
Buveurs
10
18/09/2008
La Notion de Cl
Cl d un relation
18/09/2008
);
CREATE TABLE VINS(
);
CREATE TABLE CONSO(
NB
DECIMAL(5),
NOM
CHAR(20),
VILLE
CHAR(15),
PRIMARY KEY(NB)
-- cl primaire
NV
CHAR(5),
CRU
CHAR(20),
MILL
INTEGER,
REGION CHAR(10),
COULEUR CHAR(10)
PRIMARY KEY(NV)
-- cl primaire
NB
DECIMAL(5),
NV
CHAR(5),
QTE
DECIMAL(5)
PRIMARY KEY(NB,NV),
-- cl primaire
FOREIGN KEY (NB) REFERENCES BUVEURS, -- cl trangre
FOREIGN KEY (NV) REFERENCES VINS,
-- cl trangre
);
12
18/09/2008
SELECT
FROM
WHERE
GROUP BY
HAVING
ORDER BY
Requtes Mono-Tables
Colonnes Projeter
Tables Sources
Conditions sur les Lignes
Colonnes de Groupage
Condition sur les groupes
Colonnes du tri
Requtes Multi-Tables
N tables sources
Condition teste sur chaque ligne
issu de leur produit cartesien
13
18/09/2008
Exemples de Requtes
Mono-Table
Multi-Tables
14
18/09/2008
Buv
Conso NB
100
100
100
101
101
102
Nom
Al
Ben
Charlie
David
Qte
50
25
75
100
50
25
NB
100
100
100
101
101
102
Nom
Al
Al
Al
Ben
Ben
Charlie
NB
100
100
100
101
101
102
Qte
50
25
75
100
50
25
15
18/09/2008
BUVEURS.NOM
BUVEURS, CONSO, VINS
BUVEURS.VILLE=Paris AND VINS.COULEUR=Rouge
BUVEURS.NB = CONSO.NB AND CONSO.NV = VINS.NV;
Et
SELECT BUVEURS.NOM
FROM (BUVEURS JOIN CONSO ON BUVEURS.NB = CONSO.NB)
JOIN VINS ON CONSO.NV = VINS.NV
WHERE BUVEURS.VILLE=Paris AND VINS.COULEUR=Rouge;
Et
SELECT BUVEURS.NOM
FROM (BUVEURS JOIN CONSO USING(NB)) JOIN VINS USING(NV)
WHERE BUVEURS.VILLE=Paris AND VINS.COULEUR=Rouge;
Et
16
18/09/2008
SELECT
FROM
WHERE
AND
BUVEURS.NOM
BUVEURS
BUVEURS.VILLE=Paris
BUVEURS.NB IN (
SELECT
FROM
WHERE
CONSO.NB
CONSO
CONSO.NV IN (
SELECT
FROM
WHERE
VINS.NV
VINS
VINS.COULEUR=Rouge )
);
SELECT
FROM
WHERE
AND
BUVEURS.NOM
BUVEURS
BUVEURS.VILLE=Paris
EXISTS( SELECT *
FROM
CONSO
WHERE CONSO.NB = BUVEURS.NB
AND
EXISTS( SELECT *
FROM
VINS
WHERE VINS.NV=CONSO.NV
AND
VINS.COULEUR=Rouge
);
)
17
Rponses avec
NOT IN et NOT EXISTS
18/09/2008
BUVEURS.NOM
BUVEURS
BUVEURS.NB NOT IN (
SELECT
FROM
CONSO.NB
CONSO
);
SELECT
FROM
WHERE
BUVEURS.NOM
BUVEURS
NOT EXISTS(
SELECT *
FROM CONSO
WHERE CONSO.NB = BUVEURS.NB
);
18
18/09/2008
Fonctions d agrgat
Agrgat Simple
18/09/2008
Buv
NB
100
101
102
Conso NB
100
100
100
101
101
102
Nom
Al
Ben
Charlie
Qte
50
25
75
100
50
25
NB
100
100
100
101
101
102
Nom
Al
Al
Al
Ben
Ben
Charlie
NB
100
100
100
101
101
102
Qte
50
25
75
100
50
25
54,166
Nom
Al
Ben
Charlie
Qte
150
150
25
108,33
20
Moyenne de la quantit totale de vins consomme par chaque buveur
18/09/2008
18/09/2008
Remarque
BUVEURS.NOM, SUM(CONSO.QTE)
BUVEUR JOIN CONSO ON BUVEURS.NB = CONSO.NB)
NOM, 0
BUVEURS
NB NOT IN (SELECT NB FROM CONSO));
22
18/09/2008
Dfinition
Jointure
Les lignes qui ne satisfont jamais la condition de
jointure, sont complts (padded) avec des nulls. Le
"padding" peut tre complet (FULL), droite (RIGHT) ou
gauche (LEFT)
La rponse
SELECT
FROM
GROUP BY
23
18/09/2008
Buv
Conso NB
100
100
100
101
101
102
Nom
Al
Ben
Charlie
David
Qte
50
25
75
100
50
25
NB
100
100
100
101
101
102
103
Nom
Al
Al
Al
Ben
Ben
Charlie
David
NB
100
100
100
101
101
102
Null
Qte
50
25
75
100
50
25
Null
Nom
Al
Ben
Charlie
David
Qte
150
150
25
0
24
18/09/2008
Buv
Conso NB
100
100
100
101
101
102
104
Nom
Al
Ben
Charlie
David
Qte
50
25
75
100
50
25
125
NB
100
100
100
101
101
102
103
Null
Nom
Al
Al
Al
Ben
Ben
Charlie
David
Null
NB
100
100
100
101
101
102
Null
104
Qte
50
25
75
100
50
25
Null
125
25
18/09/2008
Syntaxe Oracle
SELECT
FROM
WHERE
GROUP BY
Syntaxe Sybase
SELECT
FROM
WHERE
GROUP BY
18/09/2008
On veut ce tableau
name1
name2
name3
name4
=================================
Al
Ben
Charlie
David
Ed
Frank
Greg
Howard
Ida
Joe
Ken
Larry
Mike
NULL
NULL
NULL
27
18/09/2008
Elment de rponse
28
18/09/2008
La rponse
SELECT N1.name,
MIN(N2.name) AS name2,
MIN(N3.name) AS name3,
MIN(N4.name) AS name4,
MIN(N5.name) AS name5
FROM (Names AS N1
LEFT OUTER JOIN
Names AS N2
ON N1.name < N2.name)
LEFT OUTER JOIN
Names AS N3
ON N1.name < N2.name
AND N2.name < N3.name
LEFT OUTER JOIN
Names AS N4
ON N1.name < N2.name
AND N2.name < N3.name
AND N3.name < N4.name
29
18/09/2008
COUNT(Qte)
Conso Nom
Alice
Bob
Cary
Daniel
Eric
Frank
Gilles
Couleur
Rouge
Rouge
Rouge
Rouge
Rouge
Rouge
Rouge
Qte
1000
900
800
800
700
600
600
Rang
1
2
3
3
4
5
5
Rang
1
2
4
4
5
7
7
30
18/09/2008
La rponse
SELECT C0.Couleur, C0.Nom, C0.Qte,
(SELECT COUNT(DISTINCT Qte) FROM Conso AS C1
WHERE (C1.Qte >=C0.Qte) AND (C1.Couleur=C0.Couleur))
AS RANG
FROM Conso AS C0
WHERE RANG<= :n; -- n est ajustable (5 pour un Top5)
31
18/09/2008
Schma Externe
Exemple
18/09/2008
Les Modifications
Insertion
Modification de tuples
Suppression de tuples
18/09/2008
Programmation Procdurale
Rcursion
Orientation-Objet
18/09/2008
2 approches complmentaires
Thorie de la Normalisation
Cours
Suivre
code
titre heures
35
18/09/2008
Bibliographie
36