Академический Документы
Профессиональный Документы
Культура Документы
Prsentation de SQL
SQL (Structured Query Language) Langage assertionnel permettant :
interrogation des donnes (requtes) manipulation des donnes (insertion, suppression, mise jour) dfinition des donnes et des contraintes sur celles-ci dfinition des vues et dindex
ISI 4
Contrainte dattribut
Concerne un seul attribut
valeur NULL impossible : NOT NULL Attribut cl : PRIMARY KEY Unicit de l attribut : UNIQUE Valeur par dfaut : DEFAULT <valeur> Contrainte rfrentielle : REFERENCES <relation rfrence> [ (<attribut rfrenc>) ]
ISI 4
Contrainte de relation
Concerne plusieurs attributs
Cl compose :
PRIMARY KEY (nom_attribut [, nom_attribut]* )
Contrainte rfrentielle :
FOREIGN KEY (nom_attribut [, nom_attribut]* ) REFERENCES nom de relation [(nom_attribut [, nom_attribut]* ) ]
ISI 4
) ;
ISI 4 7
Exemple:
Avant: Client (numcli, nom, prenom, adresse) Alter table client Add (telephone char(10), Nbemprunt smallint); Aprs: Client (Aprs: numcli, nom, prenom, adresse, telephone, nbemprunt)
ISI 4 8
<expression de valeur> peut tre : NULL, une constante ou une expression arithmtique contenant des attributs de la table modifier
ISI 4 12
Update Pice Set Prix = (Select Prix From Pice where NumP =52) Where NumP = 23;
ISI 4
13
Algbre relationnelle
C'est un langage de manipulation de donnes Permet de dfinir comment interroger une Base de Donnes Facile traduire en SQL (langage standard des Bases de Donnes) Objets manipuls : Les relations Six oprateurs de base
oprateurs ensemblistes oprateurs spcifiques
ISI 4 17
Oprateurs binaires (
Produit Cartsien Jointure Union Diffrence Division Intersection
ISI 4 18
Oprateurs complmentaires
Jointure Division Intersection
ISI 4 19
Toute requte (interrogation) une base de donnes relationnelle se traduit par une suite de transformations de tables de la base (ou des tables intermdiaires) rsultant de lapplication des oprateurs de lalgbre.
ISI 4
20
Projection
Opration portant sur une relation R1 et sur un ensemble dattributs A1, A2, , Ak de R1 qui produit une relation R2 rduite aux attributs mentionns en oprande. Le schma de R2 est inclus dans le schma de R1. Les tuples en double sont supprims
ISI 4
21
Projection (notation)
Notation algbrique:
R2 = PA1,..., Ak(R1)
R2
Notation graphique:
Notation fonctionnelle:
R2 = Project(R1/A1,,Ak)
A 1, ..., A k
R1
Projection
ISI 4
22
Projection (exemple)
EMPLOYE NoEmp 1045 2067 0456 0278 0789 Nom Dupond Dupont Martin Martin Blanc Anne 1978 1965 1981 1987 1981 NoDep 03 06 03 05 06
ISI 4
Restriction
opration portant sur une relation R1 produisant une relation R2 de mme schma ayant pour tuples ceux de R1 vrifiant la condition (prdicat) prcise en oprande. Prdicat:
Les conditions de base sont de la forme <attribut> <oprateur> <valeur> avec oprateur { =,, <, , >, } Il est possible de composer plusieurs conditions de base laide des oprateurs boolens de disjonction (, OU), conjonction (, ET), ngation (, NON).
ISI 4 24
Restriction (notation)
Notation algbrique: R2 = prdicat(R1) Notation fonctionnelle:
R2 = RESTRICT (R1/prdicat)
R1
Notation graphique:
R2
prdicat
Slection
ISI 4
25
Restriction (exemple)
Liste des employs du dpartement 03 embauchs avant l'anne 1980 ANCIEN = Anne<1980 NoDep = 03 (EMPLOYE)
EMPLOYE NoEmp 1045 2067 0456 0278 0789 Nom Dupond Dupont Martin Martin Blanc Anne 1978 1965 1981 1987 1981 NoDep 03 06 03 05 06
Nom Dupond
Anne 1978
NoDep 03
26
Union
opration portant sur deux relations R1 et R2 de mme schma consistant construire une relation de mme schma R3 ayant pour tuples ceux appartenant R1 ou R2 ou aux deux. Oprateur commutatif
R1 R2 = R2 R1
ISI 4
27
Union (notation)
Notation algbrique:
R3 = R1 R2
R3
Notation graphique:
Notation fonctionnelle:
R3 = Union (R1, R2)
R1
R2
Union
ISI 4
28
Union (exemple)
EMPLOYE1 (NoEmp, 1045 2067 0456 EMPLOYE2 (NoEmp, 1045 0278 0789 Nom, Dupond Dupont Martin Anne, 1978 1965 1981 NoDep) 03 06 03
NoDep) 03 05 06
EMPLOYE = EMPLOYE1 EMPLOYE2 EMPLOYE (NoEmp, 1045 2067 0456 0278 0789 ISI 4 Nom, Dupond Dupont Martin Martin Blanc Anne, 1978 1965 1981 1987 1981 NoDep) 03 06 03 05 06 29
Diffrence
opration portant sur deux relations R1 et R2 de mme schma consistant construire une relation de mme schma R3 ayant pour tuples ceux appartenant R1 et nappartenant pas R2. Oprateur non commutatif
R1 - R2 R2 - R1
ISI 4
30
Diffrence (notation)
Notation algbrique:
R3 = R1 - R2
R3
Notation graphique:
Notation fonctionnelle:
R3 = Diff (R1, R2)
R1
R2
Diffrence
ISI 4
31
Diffrence (exemple)
EMPLOYE1 (NoEmp, 1045 2067 0456 EMPLOYE2 (NoEmp, 1045 0278 0789 Nom, Dupond Dupont Martin Anne, 1978 1965 1981 NoDep) 03 06 03
NoDep) 03 05 06
NoDep 06 03
32
Intersection
opration portant sur deux relations R1 et R2 de mme schma, consistant construire une relation de mme schma R3 ayant pour tuples ceux appartenant la fois R1 et R2. Oprateur commutatif
R1 R2 = R2 R1
ISI 4
33
Intersection (notation)
Notation algbrique:
R3 = R1 R2
R3
Notation graphique:
Notation fonctionnelle:
R3 = INTER (R1, R2)
R1
R2
Intersection
ISI 4
34
Intersection (exemple)
EMPLOYE1 (NoEmp, 1045 2067 0456 EMPLOYE2 (NoEmp, 1045 0278 0789 Nom, Dupond Dupont Martin Anne, 1978 1965 1981 NoDep) 03 06 03
NoDep) 03 05 06
Nom Dupond
Anne 1978
NoDep 03
35
Produit cartsien
opration portant sur deux relations R1 et R2 consistant construire une relation R3 ayant pour schma la concatnation de celui de R1 avec celui de R2 et pour tuples toutes les combinaisons des tuples de R1 et R2. Oprateur commutatif
R1 R2 = R2 R1
ISI 4
36
Notation graphique:
Notation fonctionnelle:
R3 = PRODUCT (R1, R2)
a b c x y a a b b c c x y x y x y
X
R1 R2
R2
R1
Produit Cartsien
ISI 4
37
Taille) 6 10
NoDep 06 06 03 03
NoDep 03 06 03 06
Taille) 6 10 6 10
38
Jointure
opration portant sur deux relations R1 et R2 consistant construire une relation R3 ayant pour schma la concatnation de celui de R1 et de R2 et pour tuples les tuples du produit cartsien de R1 par R2 vrifiant le prdicat de jointure. Oprateur commutatif
R1 >< prdicat R2 = R2 >< prdicat R1
Prdicat :
ISI 4
<attribut1> <oprateur> <attribut2> o attribut1 R1 et attribut2 R2 avec oprateur { =,, <, , >, } Il est possible de composer plusieurs conditions de base laide des oprateurs boolens de disjonction (, OU), conjonction (, ET), ngation (, NON).
39
Jointure (notation)
Notation algbrique:
R3 = R1 >< prdicat R2
R3
Notation graphique:
Notation fonctionnelle:
R3 = Join (R1,R2/prdicat)
R1
a a1 a2 a3 a3 b b c c1 c2 c3 a b c b1 b1 b1 b2 b2 JN b3 b4 a1 b1 c1 a2 b1 c1 a3 b2 c2
prdicat R2
R1
R2
Jointure naturelle
ISI 4
40
(nchef_e = nchef)
ISI 4
41
un
Taille 6 10 3
Division
Le quotient de la relation R1(A1,A2,,An) par la sous-relation R2 de schma R2(Ap+1,Ap+2,An) est la relation R3(A1,A2,,Ap) forme de tous les tuples qui concatns chacun des nuplets de R2 donne toujours un tuple de R1.
Division (notation)
Notation algbrique:
R3 = R1 R2
R3
Notation graphique:
Notation fonctionnelle:
R3 = DIVISION (R1,R2)
R1
R2
ISI 4
45
5.2 SQL
SQL
Structure de base Conditions dans le Where Expression des jointures Fonctions ensemblistes Fonctions quantifies Oprateurs ensemblistes Fonctions de calcul Partionnement Tri du rsultat
limination des tuples en double dans le rsultat : mot-cl DISTINCT Liste de toutes les villes des fournisseurs
SELECT DISTINCT VilleF FROM Fournisseur;
Le symbole * permet de slectionner tous les attributs de la relation SELECT * FROM Fournisseur;
ISI 4 49
test dintervalle BETWEEN permettant de vrifier si la valeur dun attribut est comprise entre deux constantes
SELECT NomE FROM Employ WHERE Anne BETWEEN 22-Jun-2003 AND 25-sep-2003;
ISI 4
50
ISI 4
52
Utilisation de variables :
SELECT F.NomF, L.DateLiv FROM Fournisseur F, Livraison L WHERE F.NomF = L.NomF ;
ISI 4 53
Fonctions ensemblistes
Le rsultat dune requte SELECT est un ensemble de tuples. On peut utiliser ce rsultat, avec des fonctions ensemblistes, dans un prdicat de la clause WHERE nom_attribut [NOT] IN ( < sous-requte > ) valu VRAI si nom_attribut appartient l ensemble des rsultats de <sous-requte> Ex: Lister les pices qui nont pas t livres
SELECT NomP FROM Pice P WHERE NomP NOT IN (SELECT NomP FROM Livraison);
ISI 4 54
Fonctions ensemblistes
Liste des fournisseurs qui ont livr la pice XXA2
SELECT NomF FROM Fournisseur WHERE NomF IN ( SELECT NomF FROM Livraison WHERE NomP = XXA2 );
quivaut
SELECT DISTINCT F. NomF FROM Fournisseur F, Livraison L WHERE ( F. NomF = L. NomF ) AND ( L. NomP = XXA2 );
ISI 4 55
Fonctions ensemblistes
Lister les couleurs de pice livres par les fournisseurs habitant Paris
SELECT DISTINCT Couleur FROM Pice WHERE NomP IN (SELECT NomP FROM Livraison WHERE NomF IN (SELECT NomF FROM Fournisseur WHERE VilleF = Paris ));
quivaut
SELECT DISTINCT Couleur FROM Pice P, Livraison L, Fournisseur F WHERE P. NomP = L. NomP AND L. NomF =F. NomF AND VilleF = Paris ;
ISI 4
56
Fonctions quantifies
nom_attribut = | <= | < | > | >= ANY ( < sous-requte > ) valu VRAI sil existe au moins un lment de <sousrequte> qui vrifie la comparaison Donner les noms de fournisseurs ayant livr la pice AAX2
SELECT NomF FROM Fournisseur WHERE NomF = ANY (SELECT NomF FROM Livraison WHERE NomP =AAX2);
ISI 4
57
Fonctions quantifies
nom_attribut = | <= | < | > | >= ALL ( < sous-requte > ) valu VRAI si pour tout lment de < sous- requte >, loprateur de comparaison retourne VRAI
ISI 4
58
Fonctions quantifies
[NOT] EXISTS ( < sous-requte > ) valu VRAI si <sous-requte> retourne au moins un lment
Oprateurs ensemblistes
< requte > UNION < requte > < requte > INTERSECT < requte > < requte > EXCEPT < requte > Numro des fournisseurs qui livrent la pice SSZ4 mais pas la pice A2
(SELECT NomF quivaut FROM Livraison WHERE NomP = SSZ4) EXCEPT (SELECT NomF FROM Livraison WHERE NomP = A2); SELECT NomF FROM Livraison WHERE NomP = SSZ4 AND NomF NOT IN SELECT NomF FROM Livraison WHERE NomP = A2);
ISI 4
60
Fonctions de calcul
Une fonction de calcul est une fonction qui sapplique sur un ensemble de tuples et qui renvoie une valeur unique Calcul sur les valeurs prises par un attribut
AVG ( DISTINCT | ALL nom_attribut ) = moyenne valeurs prises par nom_attribut (entier ou rel) SUM ( DISTINCT | ALL nom_attribut ) = somme valeurs prises par nom_attribut (entier ou rel) MAX ( nom_attribut ) = maximum des valeurs prises nom_attribut (entier, rel, caractres ou date) MIN ( nom_attribut ) = minimum des valeurs prises nom_attribut (entier, rel, caractres ou date) des des par par
ISI 4
61
Fonctions de calcul
La quantit livre des Pentium III
SELECT SUM (ALL Quantit) FROM Livraison WHERE NomP = Pentium III ;
ISI 4
62
Fonctions de calcul
Comptage du nombre de tuples
COUNT( * | [ ALL | DISTINCT nom_attribut ]) = nombre de valeurs de lensemble rsultat
dans le cas de * : y compris les valeurs nulles avec DISTINCT : sans les doublons avec ALL : avec les doublons
Expression arithmtique
SELECT NumLiv, NomP, Quantit * Prix FROM Livraison, Pice WHERE L.nump=P.nump
ISI 4
63
Fonctions de calcul
Nombre de livraisons de la pice de nom xxa1
SELECT COUNT(*) FROM Livraison WHERE NomP = xxa1
ISI 4
64
Fonctions de calcul
Les fonctions de calcul peuvent tre utilises dans la clause WHERE, elles portent alors sur un SELECT Donner les noms de pice ayant fait l objet d au moins 10 livraisons
SELECT P.NomP FROM Piece P WHERE (SELECT Count (*) FROM Livraison L WHERE P.NomP = L.NomP) >= 10
ISI 4 65
Partitionnement
GROUP BY < attribut1, , attributn > permet de partitionner la relation en sous-relations ayant les mmes valeurs sur les attributs prciss : on peut alors appliquer des fonctions (dclares derrire SELECT) aux attributs NomP NomF Quantit de chaque sous-relation.
a sous-relation a b sous-relation sous-relation b b c x y x t u y 5 1 1 5 1 4
Partitionnement
Les fonctions AVG, SUM, MIN, MAX, COUNT, places dans la clause SELECT sappliquent chacune des sous-relations cre par le GROUP BY
SELECT NomP, COUNT(*), SUM(Quantit) FROM Livraison NomP COUNT(*) GROUP BY NomP
a c 2 3 1 b SUM(Quantit) 6 7 4
Les attributs prsents aprs SELECT sont forcment prsents dans la clause GROUP BY.
ISI 4 67
Partitionnement
La clause HAVING permet de poser une condition portant sur chacune des sous-relations gnres par le GROUP BY. Les sous-relations ne vrifiant pas la condition sont cartes du rsultat.
Liste des fournisseurs qui ont effectu plus de 3 livraisons.
SELECT NomF FROM Livraison GROUP BY NomF HAVING COUNT(*) >= 3
ISI 4
68
Tri du rsultat
La clause ORDER BY permet de trier le rsultat de la requte, en fournissant la liste des attributs (ou de ns de colonnes) sur lesquels effectuer le tri et en spcifiant le sens du tri (ascendant ou descendant).
Liste des employs trie par ordre alphabtique sur le nom
SELECT * FROM Employe ORDER BY NomE ASC
Liste des employs trie sur le salaire et sur le nom par ordre dcroissant
SELECT * FROM Employe ORDER BY Salaire, NomE DESC
ISI 4 69