Professional Documents
Culture Documents
Structured Query
Langage
(Suite)
de tuples: INSERT
mise jour des tuples: UPDATE
suppression de tuples: DELETE
2
Exemple de requte
SELECT * FROM country
->
table country
table Country
country
capital
population
area
Ireland
Dublin
70
Austria
Vienna
83
Utd Kingdom
London
56
244
Switzerland
Berne
41
5
SQL / Algbre
SQL/Algbre
En algbre :
Id(R)
En SQL :
SELECT *
FROM R
En algbre :
[condition] R
En SQL :
SELECT *
FROM R
WHERE condition
SELECT
FROM
WHERE
*
Pays
population < 20 ;
PAYS
nom
capitale
population
surface
Irlande
Dublin
70
Autriche
Vienne
83
Royaume-Uni
Londres
36
244
Suisse
Berne
41
USA
Washington
189
441
En algbre :
En SQL :
SELECT A1,A2,An
FROM R
11
nom, capitale
Pays;
PAYS
nom
capitale
population
surface
Irlande
Dublin
70
Autriche
Vienne
83
Royaume-Uni
Londres
36
244
Suisse
Berne
41
USA
Washington
189
441
nom
capitale
population
surface
Irlande
Dublin
70
Autriche
Vienne
83
Royaume-Uni
Londres
36
244
Suisse
Berne
41
USA
Washington
189
441
rsultat
nom
capitale
population
Irlande
Dublin
Autriche
Vienne
Suisse
Berne
algbre:
13
[nom, capitale, population] ( [population < 20] Pays)
En algbre :
En SQL : Impossible de
renommer des attributs. Il
faut faire des copies
logiques des relations.
SELECT *
FROM R, R R2
WHERE R.A = R2.A .
En algbre :
RS
En SQL :
SELECT *
FROM R, S
15
En algbre :
R
En SQL :
SELECT *
FROM R, S
WHERE R.A1 = S.A1
AND R.A2 = S.A2
Jointure de 2 relations
SELECT anne, lieu, pays,
capitale
JO
anne
lieu
pays
1896
Athnes
Grce
1900
Paris
France
1904
St.Louis
USA
1908
Londres
Royaume-Uni
PAYS
nom
capitale
population
surface
Irlande
Dublin
70
Autriche
Vienne
83
Royaume-Uni
Londres
36
244
Suisse
Berne
41
USA
Washington
189
441
17
JO
anne
lieu
pays
nom
1896
1900
Athnes
Paris
St.Louis
Londres
Grce
France
USA
Irlande
Autriche
1904
1908
Royaume-Uni
Royaume-Uni
Suisse
USA
Washington
3
8
36
7
189
70
83
244
41
441
Rsultat
anne
lieu
pays
capitale
1904
St.Louis
USA
Washington
1908
Londres
Royaume-Uni
Londres
18
capitale
population
surface
Irlande
Dublin
70
Autriche
Vienne
83
Royaume-Uni
Londres
36
244
Suisse
Berne
41
USA
Washington
189
441
PAYS
nom
capitale
population
surface
Irlande
Dublin
70
Autriche
Vienne
83
Royaume-Uni
Londres
36
244
Suisse
Berne
41
USA
Washington
189
20
441
PAYS-P1
nom
Irlande
Autriche
RU
Suisse
USA
PAYS-P2
nom
Irlande
Autriche
RU
Suisse
USA
capitale
Dublin
Vienne
Londres
Berne
population
3
8
36
7
Washington
189
capitale
Dublin
Vienne
Londres
Berne
population
3
8
36
7
Washington
189
surface
70
83
244
41
441
surface
70
83
244
41
441
rsultat
nom-P1
pop-P1
nom-P2
pop-P2
Autriche
Irlande
Autriche
Suisse
RU
36
Irlande
RU
36
Autriche
RU
36
Suisse
7
21
Jointure externe
SELECT
SELECT
From A, B
On A.x = B.y
A : table dominante
Jointure externe
SELECT
From A, B
On A.x = B.y
Jointure externe
JO
anne
1896
1900
1904
1908
lieu
nom
pays
Athnes
Paris
St.Louis
Londres
PAYS
capitale population surface
Irlande
Autriche
Grce
France
USA
Dublin
Vienne
Londres
Berne
Royaume-Uni
Royaume-Uni
Suisse
USA
Washington
3
8
36
7
189
70
83
244
41
441
Rsultat
Table
dominante
anne
lieu
pays
capitale
1896
Grce
NULL
1900
Athnes
Paris
France
NULL
1904
St Louis
USA
Washington
1908
Londres
Royaume-Uni
Londres
24
En algbre :
RS
En SQL :
BlocR UNION BlocS
SELECT *
FROM R
UNION
SELECT *
FROM S
25
En algbre :
RS
En SQL :
BlocR INTERSECT BlocS
SELECT *
FROM R
INTERSECT
SELECT *
FROM S
26
En algbre :
RS
En SQL :
BlocR MINUS BlocS
SELECT *
FROM R
MINUS
SELECT *
FROM S
27
Diffrences
En SQL :
28
Remarques
S).
: select A, R.B, C
from R, S
29
Ecriture des
conditions
Oprateurs de comparaison
= gal
<> diffrent
31
Oprateurs logiques
Un des prdicats : OR
SELECT
P1.nom, P2.nom, P1.capitale
FROM
PAYS P1, PAYS P2
WHERE
P1.capitale = P2.capitale
AND NOT P1.nom = P2.nom ;
32
Expressions logiques
Combinaisons:
WHERE ( ensoleillement > 80% AND pluviosit < 200 )
OR temprature > 30
WHERE ensoleillement > 80% AND
( pluviosit < 200 OR temprature > 30 )
33
Appartenance un ensemble: IN
WHERE
monnaie = Pound
monnaie = Schilling
monnaie = Franc
quivalent :
OR
OR
quivalent :
SELECT * FROM Employee
WHERE salary >= ALL ( 1400, 3000);
35
AND
quivalent :
WHERE population BETWEEN 50 AND 60
NOT BETWEEN
36
_ : exactement un caractre
NOT LIKE
37
Valeurs calcules
PAYS
PAYS
Valeurs numriques: + - * /
Chaines de caractres:
38
PAYS
39
( population > 0 ) ?
z
( population = NULL ) ?
z
La
Fonctions
z
Rsum
If A is:
10
10
10
10
NULL
NULL
NULL
NULL
NULL
NULL
Condition
a
a
a
a
a
a
a
a
a
a
IS NULL
IS NOT NULL
= NULL
!= NULL
IS NULL
IS NOT NULL
= NULL
!= NULL
= 10
!= 10
Evaluates to:
FALSE
TRUE
UNKNOWN
UNKNOWN
TRUE
FALSE
UNKNOWN
UNKNOWN
UNKNOWN
UNKNOWN
42
BD Exemple : Livraisons
P ( np , nomp , couleur , poids , prix ) les produits
U ( nu , nomu , ville , pays )
F ( nf , nomf , type , ville , pays )
PUF ( np, nu, nf , quantit )
les usines
les fournisseurs
les livraisons
44
2. Nom et
couleur des
produits du
fournisseur 1
1. Ensemble
des produits
livrs par le
fournisseur 1
45
nu FROM U
WHERE (ville, pays) IN (SELECT ville, pays FROM F)
46
Composition de conditions
Nom des fournisseurs qui approvisionnent une usine de
Londres ou de Paris en un produit rouge
SELECT nomf FROM F
WHERE nf IN
(SELECT nf FROM PUF
WHERE np IN
(SELECT np FROM P
SELECT nomf
FROM PUF, P, F, U
WHERE couleur = 'rouge'
AND PUF.np = P.np
AND PUF.nf = F.nf
AND PUF.nu = U.nu
48
Quantificateurs : ALL
Numros des fournisseurs qui ne fournissent que des
produits rouges
ALL: tous les lments de l'ensemble
doivent vrifier la condition
SELECT nf
FROM F
WHERE 'rouge' = ALL
( SELECT couleur
FROM P
WHERE np IN
( SELECT np
FROM PUF
WHERE PUF.nf = F.nf ) ) ;
49
SELECT nomf
FROM F
ce fournisseur
WHERE EXISTS
( SELECT *
FROM
PUF, P
WHERE PUF.nf = F.nf
AND PUF.np = P.np
Produit fourni
AND P.couleur = 'rouge' )50;
est rouge
EXISTS requte
51
Traitement des
rsultats
Attributs calculs
Ex:
Oprateur
agrgation
MIN:
minimum
MAX:
maximum
COUNT: nombre de tuples slectionns
53
PAYS
nom
capitale population surface continent
Irlande
Dublin
3
70
Europe
Autriche
Vienne
8
83
Europe
R-Uni
Londres
36
244
Europe
Suisse
Berne
7
41
Europe
USA
Washington
189
441
Amerique
Retourne un tuple avec:
SELECT MIN(population),
MAX(population),
AVG(population),
SUM(surface),
COUNT(*)
FROM PAYS
WHERE continent = Europe
DISTINCT
PAYS
nom
capitale
population surface
Irlande
Dublin
Autriche
Vienne
R-Uni
Londres
Suisse
Berne
USA
Washington
3
8
36
7
189
70
83
244
41
441
continent
Europe
Europe
Europe
Europe
Amerique
Europe
Amerique
55
PAYS
ORDER BY
Tri des
nom
Irlande
Dublin
70
Europe
Autriche
Vienne
83
Europe
R-Uni
Londres
36
244
Europe
Suisse
Berne
41
Europe
USA
Washington
189
441
Amerique
tuples du
rsultat
rsultat
continent population
FROM PAYS
WHERE surface > 60
ORDER BY continent, nom DESC
ASC/DESC
nom
Europe
36
Royaume-Uni
Europe
Irlande
Europe
Autriche
Amerique
189
USA
56
PAYS
nom
capitale
Irlande
Dublin
70
Europe
Autriche
Vienne
83
Europe
Royaume-Uni
Londres
36
244
Europe
Suisse
Berne
41
Europe
USA
Washington
189
441
Amerique
GROUP BY
population surface
continent
un tuple par
continent
AVG(pop) SUM(surf)
Europe
36
13,5
438
Amerique
189
189
189
441
COUNT
4
57
Condition HAVING
un tuple par
continent
continent SUM(pop)
Europe
54
Amerique
189
58
Attention
SELECT surface, MIN(population)
FROM Pays
WHERE continent = Europe;
Requte incorrecte !
Rgle: chaque attribut dans clause SELECT est inclus dans
oprateur dagrgation ou inclus dans clause GROUP BY
59
AS sum_surface,
COUNT(*)
AS count
FROM PAYS
WHERE continent = Europe ;
60
Langage de
Manipulation de
donnes
INSERT INTO
1996
Atlanta
U.S.A.
1996
Atlanta
null
63
INSERT
64
UPDATE
UPDATE country
SET capital = Londres
WHERE country = Ireland
UPDATE country
SET drive = L, rainfall = rainfall/2
WHERE country <> France AND drive = R
65
UPDATE
UPDATE {nom_table nom_vue}
SET { (nom_col)* = (sous-requte)
nom_col = { valeur (sous-requte)} }*
WHERE condition;
66
DELETE FROM
DELETE
68