Beruflich Dokumente
Kultur Dokumente
Le
Le langage
langage
de
de requêtes
requêtes
SQL
SQL
Plan
1. Introduction
2. Définition des données
3. Manipulation des données
4. Recherches
5. Mises à jour
6. Programmation
7. Normalisation et extensions
1
Bases de données relationnelles Le langage SQL
Introduction
Normalisation et extensions
2
Bases de données relationnelles Le langage SQL
Organisation du langage
Possibilités du langage
3
Bases de données relationnelles Le langage SQL
Commandes de SQL1 - 86
4
Bases de données relationnelles Le langage SQL
Raccourcis syntaxiques
Partie optionnelle notée [ ]
• Définition : A [ B ] ::= A B | A
<il pleut> ::= "Il pleut" [ "beaucoup" ]
Groupement noté { } ou [ ]
• Définition : A { B | C } ::= A B | A C
<il pleut> ::= "Il" { "pleut" | "flotte" } [ "un peu"
| "beaucoup" ]
Répétition notée { }…
• Définition : A … ::= · | A | A A | A A A | …
<il pleut> ::= "Il pleut" { "Il pleut" }…
10
5
Bases de données relationnelles Le langage SQL
Dérivation
11
Création du schéma
CREATE
CREATE SCHEMA
SCHEMA <clause
<claused'autorisation>
d'autorisation>
[[{{<élément de schéma> }… ]
<élément de schéma> }… ]
12
6
Bases de données relationnelles Le langage SQL
CREATE
CREATE TABLE
TABLE <nom
<nomde derelation>
relation>
((<élément
<élément de relation> [ { , <élémentde
de relation> [ { , <élément derelation>
relation>}…
}…]]))
SQL-86 :
<élément de relation> ::=
<définition d'attribut> | <définition de contrainte>
<définition d'attribut> ::=
<nom d'attribut> <type de donnée> [ NOT NULL [ UNIQUE ] ]
<définition de contrainte> ::=
UNIQUE ( <nom d'attribut> [ { , <nom d'attribut> }… ] )
13
Vins Viticulteurs
Commandes
Buveurs
14
7
Bases de données relationnelles Le langage SQL
15
Manipulation ensembliste
• Utilisation d'une expression logique spécifiant
l'ensemble des tuples à insérer, rechercher,
modifier ou détruire.
Manipulation tuple à tuple
• Insertion directe d'une valeur de tuple dans une
relation.
• Déclaration et utilisation d'un curseur - un
pointeur courant - sur un ensemble pour
rechercher, modifier, détruire le tuple courant.
16
8
Bases de données relationnelles Le langage SQL
Manipulation ensembliste
17
Recherche
18
9
Bases de données relationnelles Le langage SQL
SELECT
SELECT [[DISTINCT
DISTINCT | | ALL
ALL]] <liste
<listerésultat>
résultat>
FROM
FROM <liste
<listede
deréférences
référencesde
derelation>
relation>
[[WHERE
WHERE <expression
<expressionde
derecherche>
recherche>]]
19
SELECT *
FROM VINS
WHERE CRU = 'Beaujolais'
Simplicité
Simplicitéet
etproductivité
productivitéde
deSQL
SQL
20
10
Bases de données relationnelles Le langage SQL
Sélection d'attributs
21
22
11
Bases de données relationnelles Le langage SQL
23
Interprétation algébrique
SELECT
SELECT <liste
<listedes
desattributs
attributsprojetés
projetésAi>
Ai>
FROM <liste des relations touchées Rj>
FROM <liste des relations touchées Rj>
WHERE
WHERE <expression
<expressionde
derecherche
rechercheE>
E>
24
12
Bases de données relationnelles Le langage SQL
Expression de recherche
25
SELECT NUMV
FROM VINS
WHERE PRIX > 20.00
AND ( ( DEGRE BETWEEN 11.0 AND 12.4
AND ANNEE IN (1980, 1982, 1983)
AND CRU LIKE '%Beaujolais%'
)
OR NUMVT IS NOT NULL
)
26
13
Bases de données relationnelles Le langage SQL
27
Utilisation de variables
obligatoire
optionnel
28
14
Bases de données relationnelles Le langage SQL
29
Requêtes imbriquées
Q8 : Donner le nom des viticulteurs qui produisent du
Juliénas.
SELECT NOM, PRENOM
FROM VITICULTEURS
WHERE NUMVT IN (
SELECT NUMVT
Bloc imbriqué
FROM VINS
constant
WHERE CRU = 'Juliénas' )
Forme
Formeintuitive
intuitivepour
pourrequête
requêtesimple
simple
Limitée
Limitéeààlalapuissance
puissanced’une
d’unesemi-jointure
semi-jointure
30
15
Bases de données relationnelles Le langage SQL
Attention
Attentionaux
auxdoubles
doubles!!
31
Interprétation logique
SELECT
SELECT <<liste
listedes
desattributs
attributsprojetés
projetés V1.A1,
V1.A1,…,Vp.Ap
…,Vp.Ap>>
FROM
FROM < liste des relations touchées V1 Œ R1, …,Vn
< liste des relations touchées V1 Œ R1, …, VnŒŒRn
Rn>>
WHERE
WHERE <<expression
expressionde
derecherche
recherche Ei
Ei(V1,
(V1,…,
…,Vn)
Vn)>>
32
16
Bases de données relationnelles Le langage SQL
Quantificateur existentiel
SQL
SQLcomprend
comprendune uneexpression
expressionde de
quantification
quantificationexistentielle
existentielleexplicite
explicite
33
34
17
Bases de données relationnelles Le langage SQL
•• Dans
DansQ7',
Q7',lalavariable
variableCCnenefigure
figurepas
pasdans
danslelerésultat
résultat
fi
fi Elle
Elleest
estimplicitement
implicitementpréfixée
préfixéepar
parun
un
quantificateur
quantificateur$$. .
•• Un
UnSELECT
SELECTDISTINCT
DISTINCTestestéquivalent
équivalentààune
uneexpression
expressiondu
du
calcul de tuple.
calcul de tuple.
{{V.CRU
V.CRU | | VVŒŒVINS,
VINS, $$CCŒŒCOMMANDES,
COMMANDES,(C.NUMV
(C.NUMV==V.NUMV)
V.NUMV) }}
35
36
18
Bases de données relationnelles Le langage SQL
Quantificateur universel
37
Fonctions d'agrégation
Q13 :
Donner la moyenne des degrés des
Juliénas.
38
19
Bases de données relationnelles Le langage SQL
SELECT
SELECT [[DISTINCT
DISTINCT | | ALL
ALL]] <liste
<listerésultat>
résultat>
FROM <liste de références de relation>
FROM <liste de références de relation>
[[WHERE
WHERE <expression
<expressionde derecherche>
recherche>]]
[[GROUP
GROUPBY
BY <réf.
<réf.d'attribut>
d'attribut> [[{{, ,<réf.
<réf.d'attribut>
d'attribut>}…
}…]!]!
[[HAVING
HAVING <expression
<expressionde
derecherche>
recherche>]]
[[ORDER
ORDERBY
BY<ref
<refcolonne>
colonne>[[{{, ,<ref
<refcolonne>
colonne>}…
}…]]
39
40
20
Bases de données relationnelles Le langage SQL
Sélection de groupe
•• Clause
Clause WHERE
WHERE -->
--> sélection
sélectiondes
destuples
tuples
•• Clause
Clause HAVING --> sélection des groupesentiers
HAVING --> sélection des groupes entiers
41
Expression de valeurs
• Références d'attributs
• Calculs arithmétiques
+ - * /
• Fonctions agrégats
Compte, somme, moyenne, min et max
• Manipulation de chaînes de caractères
Expressions régulières
42
21
Bases de données relationnelles Le langage SQL
SELECT NOM
FROM BUVEURS
WHERE NUMB IN (
SELECT NUMB
FROM COMMANDES, VINS
WHERE DATE LIKE '%88'
AND COMMANDES.NUMV = VINS.NUMV
GROUP BY NUMB
HAVING SUM (QTE * DEGRE / 100) > 10 )
43
Mises à jour
44
22
Bases de données relationnelles Le langage SQL
Insertion
INSERT
INSERT INTO
INTO <nom
<nomde derelation>
relation> [[((<liste
<listed'attributs
d'attributscibles>
cibles>))]]
{{VALUES
VALUES ((<liste
<listede
devaleurs
valeursààinsérer>
insérer>)) | |!<spécif.
!<spécif.de
derecherche>
recherche>}}
45
Exemples d'insertion
46
23
Bases de données relationnelles Le langage SQL
Modification
UPDATE
UPDATE <nom
<nomdederelation>
relation>
SET
SET <affectation> [{{, ,<affectation>
<affectation> [ <affectation>}…
}…]]
[[WHERE
WHERE<expression
<expressionde
derecherche>
recherche>]]
<affectation> ::=
<nom d'attribut> = NULL | <expression de valeur>
47
Exemples de modification
Les Juliénas 1994 font 12 degré.
UPDATE VINS
SET DEGRE = 12
WHERE CRU = 'Juliénas'
AND ANNEE = 1994
24
Bases de données relationnelles Le langage SQL
Suppression
DELETE
DELETEFROM
FROM <nom
<nomde
derelation>
relation>
[[WHERE
WHERE<expression
<expressionde
derecherche>
recherche>]]
49
Exemple de suppression
50
25
Bases de données relationnelles Le langage SQL
Programmation
• Les langages relationnels manipulent les données
par ensembles
• Les langages de programmations manipulent les
données par boucle de programme
• Il y a incompatibilité d'humeur
• Solution SQL Æ les curseurs
Un
Uncurseur
curseurdécrit
décritune
uneposition
positioncourante
courantedans
dansun
un
ensemble
ensemblede
detuples
tuplesdécrit
décritpar
parune
uneexpression
expressionde
de
recherche
rechercheSQL
SQL
51
Curseurs
Un curseur est manipulé par des commandes spécifiques
• DECLARE <nom de curseur>
CURSOR FOR <expression de recherche
• OPEN <nom de curseur>
• CLOSE <nom de curseur>
52
26
Bases de données relationnelles Le langage SQL
53
Normalisation et extensions
54
27
Bases de données relationnelles Le langage SQL
SQL2 (SQL-92)
55
SQL2 intermédiaire
56
28
Bases de données relationnelles Le langage SQL
SQL2 complet
57
SQL3
Fonctionnalités objets
• Procédures externes
• Types de données abstraits
• Sous-tables et généralisation
Fonctionnalités déductives
• Union récursive
• Déclencheurs
• Parallélisme
• Requêtes asynchrones au programme
58
29
Bases de données relationnelles Le langage SQL
Conclusion
Un standard de plus en plus complet et de plus en plus suivi
• Attention aux approximations et imitations fausses
• Tout existe dans les propositions SQL2/3
• Une référence pour implémenter / utiliser chaque aspect
des BD
Le langage de communication inter-système
• SQL - CLI (protocole client / serveur)
• RDA (remote data access, protocole BD distante)
• TP (transaction processing, exécution répartie)
Le
Lelangage
langageuniversel
universelsur
surlequel
lequels'appuient
s'appuientles
lesprogiciels
progiciels
59
30