Les vues : Une vue est une dfinition logique, sans stockage de donnes.
Seule la dfinition est stocke.
La cration de vue implante le concept de vue externe (VIEW) par
rapport au schma conceptuel (les TABLEs) :
Numriques:
Exacts:
INTEGER ou INT
SMALLINT
NUMERIC (p,s)
DECIMAL (p,s)
Non exacts
REAL
FLOAT (p)
Chanes de caractres: CHARACTER (x) ou CHAR(x)
CHARACTER VARYING (x) ou VARCHAR (x)
NATIONAL CHARACTERE ou NCHAR
(avec des caractres nationaux particuliers)
Chanes de bits:
BIT (X)
BIT VARYING (x)
Temporels:
DATE
TIME (x): x pour des chiffres aprs virgule pour les corrections
TIMESTAMP (x)
5
TIMESTAMP WITH TIME ZONE (cart UCT)
Forme simple : Slection de tous les attributs de tous les tuples de la table
SELECT * FROM table
Ex.
Les jointures
Cas particulier simple: le produit cartsien
SELECT * FROM table1, table2,...
Rq.: Il peut y avoir plus de 2 tables.
Jointure avec qualification: restriction du produit cartsien
SELECT * FROM table1, table2
WHERE table1.atti = table2.attj
Ex: SELECT * FROM VOITURE V, CLIENT C WHERE V.NV = C.NV
Rque: Loprateur utilis est = , cest une quijointure.
Si les 2 attributs portent le mme nom, on est oblig de le prfixer par
le nom de la table, pour lever l'ambigut.
NV
1
2
2
3
Nom
Ali
Wafae
Reda
Zineb
NV
1
2
2
3
Marque
Renault
Ford
Ford
Peugeot
Nom
Ali
Wafae
Reda
Zineb
Med
Nom
Ali
Wafae
Reda
Zineb
Med
Marque
Renault
Ford
Peugeot
Toyota
NV
1
2
2
3
Marque
Renault
Ford
Ford
Peugeot
NV
1
2
2
3
Nom
Ali
Wafae
Reda
Zineb
NV
1
2
2
3
5
NV
1
2
2
3
4
Marque
Renault
Ford
Ford
Peugeot
9
Toyota
NEmp
1
2
3
4
5
Emploi
PDG
Directeur
Directeur
Ingnieur
Commercial
La sous interrogation :
NResp
1
1
3
3
NEmp
2
3
4
5
Resp
1
1
3
3
La partie droite dun prdicat peut tre remplace par le rsultat dun ordre
SELECT, condition que le rsultat du sous-SELECT soit compatible en
nombre et en type avec loprateur utilis.
10
13
R1: Donner les noms des personnes qui ne sont pas propritaires.
R2: Donner le nom et la profession des propritaires d'immeubles o il y a des
appartements vides.
R3: Donner les noms des matres qui habitent dans le mme immeuble qu'au
moins un de leurs lves (les enfants vivent sous le mme toit que leur parrain).
R4: Donner l'adresse de l'immeuble, la date de construction, le type
d'appartement et l'tage o habitent chacun des matres des enfants de DUPONT
R5: Donner le nom et l'ge des matres qui habitent dans un immeuble dont le
propritaire est responsable d'un de leurs lves.
R6: Donner le nom et l'ge des personnes qui sont propritaires mais qui ne sont
ni matre ni directeur d'cole.
R7: Ajouter un enfant de nom np, de prnom e,
15
Jointures :
R5 : Faire le produit cartsien entre EMP et DEPT.
R6 : Donner les noms des employs et les noms de leur dpartement.
R7 : Donner les numros des employs travaillant BOSTON.
R8 : Donner les noms des directeurs des dpartements 1 et 3.
Attention : directeur n'est pas une profession!
R9 : Donner les noms des employs travaillant dans un dpartement avec au
moins un ingnieur.
R10 : Donner le salaire et le nom des employs gagnant plus qu'un (au moins
un) ingnieur.
R11 : Donner le salaire et le nom des employs gagnant plus que tous les
ingnieurs.
R12 : Donner les noms des employs et les noms de leurs directeurs.
R13 : Trouver les noms des employs ayant le mme directeur que JIM.
Attention : un employ peut tre directeur de plusieurs dpartements.
R14 : Donner le nom et la date d'embauche des employs embauchs avant leur
17
directeur; donner galement le nom et la date d'embauche de leur directeur.
SQL3
PROCEDURES SQL
extensions procdurales de SQL => notion de procdures
stockes
FONCTIONNALITES DEDUCTIVES
oprateur de fermeture transitive
FONCTIONNALITES "ACTIVES"
support de rgles dclenches par des vnements BD =>
mcanisme de "trigger"
19
Les index
Une solution offerte par tous les SGBD est la cration d'index, qui permettra de
satisfaire aux requtes les plus frquentes avec des temps de rponse acceptables.
Choix des index, en priorit:
- les cls primaires.
- les colonnes servant de critre de jointure.
- les colonnes servant de critre de recherche.
Ne pas indexer: colonnes contenant peu de valeurs distinctes (index peu efficace)
colonnes frquemment modifies
Crer un index: Un index peut tre cr par la commande suivante :
CREATE [UNIQUE] INDEX nom_index
ON nom_table (nom_col1 , nom_col2, ...)
Option UNIQUE : interdiction que 2 lignes aient la mme valeur dans la
colonne indexe.
Les requtes SQL sont transparentes au fait qu'il existe un index ou non.
Effacement d'un index : DROP INDEX Nom_de_lindex
20
Dclencheur (Trigger)
Action sur la BD dclenche suite l'apparition d'un vnement particulier.
Forme : {BEFORE | AFTER} <vnement> THEN <action>
Un vnement peut tre : . une opration sur une table (dbut ou fin)
. un vnement externe (heure, appel,etc.)
Une action peut tre :
. une requte BD (mise jour)
. un abort de transaction (annulation)
. l'appel une procdure catalogue
Syntaxe: CREATE TRIGGER nom <vnement> ON <nom de la table>
WHEN (condition)
instruction FOR EACH ROW | STATEMENT
21
22
Contrleur
Optimiseur
Excuteur
BD
23
LAnalyseur
Syntaxique : - Prsence des attributs, etc.
Smantique : - Dtermination de la validit des questions,
- Recherche de questions quivalentes
Le contrleur
Vrification des contraintes dintgrit, rcriture de la requte.
Vrification des autorisations
Loptimiseur
Gnration d'un plan d'excution optimis, ordonnancement par
restructurations algbriques :
choix d'ordonnancement entre les jointures,
choix entre diffrentes techniques
Lexcuteur
Utilisation des mthodes d'accs,
Slections - Projections - limination des doubles et jointures
24
Gestion des accs concurrents.