Vous êtes sur la page 1sur 66

Le langage SQL

Histoire
langages pour les BD relationnelless incluant toutes
les possibilits de l'algbre relationnelle : QUEL,
SEQUEL, SQL (79, sur Oracle)
Normalisation en 87 par ANSI de SQL
plus d'une centaine de produits supportant SQL
aujourd'hui
SQL n'est pas un langage de programmation
2 douzaines d'instructions environ
peut trouver sa place dans un langage de
programmation
1 Maria Berger - Matrise d'AES 2
Caractristiques
SQL assure l'indpendance des donnes
SQL est un langage dclaratif (par opposition
procdural)
Mode interactif ou programm
interactif : instruction SQL tape directement, instantanment
traite
l'intrieur d'un pgm : appel de SQL dans un pgm en C, ...
instruction SQL = requte
rsultat d'une requte = table

2 Maria Berger - Matrise d'AES 2


Caractristiques
SQL est un langage dimension triple :
le DDL (Data Definition Language) : commandes de
SQL permettant de crer, modifier ou effacer la
dfinition (schma) d'une BD ou d'une table.
le DML (Data Manipulation Language) : interrogation
et modification de l'information contenue dans les
tables
le DCL (Data Control Language) : scurit et
confidentialit de la BD.

3 Maria Berger - Matrise d'AES 2


SQL1 - 86
LANGAGE DE DEFINITIONS DE DONNEES
CREATE TABLE
CREATE VIEW
LANGAGE DE MANIPULATION DE DONNEES
SELECT OPEN
INSERT FETCH
UPDATE CLOSE
DELETE
LANGAGE DE CONTROLE DE DONNEES
GRANT et REVOKE
BEGIN et END TRANSACTION
COMMIT et ROLLBACK
4 Maria Berger - Matrise d'AES 2
Le Language de Manipulation des
Donnes : la consultation de donnes
Instruction SELECT : 3 parties principales :
clause (obligatoire) Select : prcise les valeurs qui constituent
chaque ligne du rsultat
clause (obligatoire) from : indique les tables desquelles le
rsultat tire ses valeurs
clause where : donne la condition de slection que doivent
satisfaire les lignes qui fournissent le rsultat
SELECT schma
FROM table
WHERE condition ;

5 Maria Berger - Matrise d'AES 2


Interrogation en SQL
SELECT <liste de colonnes>
FROM <liste de tables>
[WHERE <critre de jointure> AND <critre de slection>]
[GROUP BY <attributs de partitionnement>]
[HAVING <citre de restriction>]
Exemple :
SELECT NomCoureur
FROM Coureurs
WHERE CodePays = SUI;

6 Maria Berger - Matrise d'AES 2


Interrogation dune seule table

CRU(Nom_Cru,Commune,Rgion,Coul)
VINS(Rgion,Coul,Millsime,Qualit)
CEPAGE_REGION(Cepage,R_PROD,Coul)
OU
EMP(Num,Nom,Fonction,N_Sup,Embauche,
Salaire,Comm,N_Dep)
DEPT(N_Dept,Nom,Lieu)

7 Maria Berger - Matrise d'AES 2


PROJECTION
Extractionsimple : afficher une table
entirement
SELECT *
FROM Nom_table;
Exemple :
Tous les crus ?
Expression algbrique : cru
SQL : SELECT *
FROM CRU;

8 Maria Berger - Matrise d'AES 2


PROJECTION

SELECT Nom_Col1, ..., Nom_ColN


FROM Nom_table;
Exemple :
Requte : Liste des noms de crus
Algbre : Nom_Cru (CRU)
SQL : SELECT Nom_Cru
FROM CRU
La clause DISTINCT permet d'liminer les doublons.

9 Maria Berger - Matrise d'AES 2


SELECTION

SELECT Nom_Colonne
FROM Nom_Table
WHERE critre ;
Exemple :
Requte : La liste des noms de crus rouges
Algbre : Nom_Cru ( Coul = rouge(CRU))
SQL : SELECT Nom_Cru
FROM CRU
WHERE Coul=Rouge

10 Maria Berger - Matrise d'AES 2


Oprateurs de comparaison
=,>,<,>=,<=,<> (ou != ou ^=)
In et not in
Requte : quels sont les bons millsimes de Bordeaux ?
SQL : SELECT Millsime
FROM VINS
WHERE Rgion = Bordeaux AND Qualit
=Bonne OR Qualit =Trs Bonne OR
Qualit =Excellente
OU
SELECT Millsime
FROM VINS
WHERE Rgion = Bordeaux AND Qualit IN
(Bonne, Trs bonne, Excellente )
11 Maria Berger - Matrise d'AES 2
Oprateurs de comparaison
LIKE : appartenance une chane de caractres
_ remplace n'importe quel caractre
% remplace n'importe quelle chane de caractres
Exemple :
Requte : Quels sont les noms de cru qui commencent par Ch ?
SQL : SELECT Nom_Cru
FROM CRU
WHERE Nom_Cru like Ch%
Requte : Quels sont les noms de cru possdant un a en
seconde position ?
SQL : SELECT Nom_Cru
FROM CRU
12 WHERE Nom_Cru like _a%
Maria Berger - Matrise d'AES 2
Oprateurs de comparaison
BETWEEN : appartenance un intervalle
Exemple :
Requte : Quels sont les salaris gagnant entre
20000 et 25000 ?
SQL : SELECT Nom, Salaire
FROM EMP
WHERE Salaire BETWEEN 20000 AND
25000

13 Maria Berger - Matrise d'AES 2


Nom de colonne
Les
colonnes constituant le rsultat dun
SELECT peuvent tre renommes dans le
SELECT
Requte : salaire de chaque employ
SQL : SELECT Nom,Salaire SALAIRE MENSUEL
FROM EMP;

14 Maria Berger - Matrise d'AES 2


Oprateurs de comparaison
IS NULL et IS NOT NULL
Exemple :
Requte : le nom des crus dont la commune na pas
t renseigne
SQL : SELECT Nom_Cru
FROM CRU
WHERE Commune IS NULL

15 Maria Berger - Matrise d'AES 2


Tri des rsultats
ORDER BY
SELECT attribut1, attribut2, ...
FROM Nom_table
ORDER BY attribut1 [ASC], attribut2 [DESC],
... ;
Exemple :
Requte : Les bordeaux classs par millsimes et par couleur
SQL : SELECT *
FROM VINS
WHERE Rgion = Bordeaux
ORDER BY Millsime, Coul
16 Maria Berger - Matrise d'AES 2
Fonctions
La relation rsultat
ne comportera qu'une ligne
ou pourra simplement tre considre comme un nombre
Fonctions numriques :
AVG : moyenne
Exemple : Age moyen des professeurs
SQL : SELECT 2001-10-10-AVG(Date_Naissance)
FROM PROFESSEUR;
SUM : somme
Exemple : CA gnr par les vendeurs de PACA:
SQL : SELECT SUM(CA)
FROM Vendeur
WHERE Region = 'PACA';
17 Maria Berger - Matrise d'AES 2
Fonctions
COUNT : nombre d'lments slectionns
Requte : Nombre de cpages bordelais ?
SQL : SELECT COUNT ( *)
FROM CEPAGE_REGION
WHERE R_Prod = Bordeaux;
MIN, MAX, ...
Expressions et Fonctions sur les chanes de caractres
|| : seul oprateur sur les chanes de caractres : la
concatnation.
Rsultat : chane de caractres obtenue en crivant d'abord la
chane gauche de || puis celle droite de ||.
LOWER(chane) : Renvoie chane en ayant mis toutes ses
lettres en minuscules.
18 ... Maria Berger - Matrise d'AES 2
Fonctions
Expressions et fonctions sur les dates
Oprateurs sur les dates : + et -
date +/- nombre : le resultat est une date obtenue en

ajoutant le nombre de jours nombre la date date.


date2 - date1 : le resultat est le nombre de jours entre les

deux dates.

19 Maria Berger - Matrise d'AES 2


Regroupements
Il
est possible de subdiviser la table en groupes
Permet dappliquer les fonctions daggrgation
des sous-groupes
Requte : Combien de crus rouges et de crus blancs
sont produits dans chaque commune ?
SQL : SELECT Commune, Count(*)
FROM CRU
GROUP BY Commune, Coul;

20 Maria Berger - Matrise d'AES 2


Rsultat
Commune Coul Count(*)
Aloxe-Corton Rouge 1
Barsac Blanc 1
Margaux Rouge 2
Meursault Blanc 3
Meursault Rouge 1
Pauillac Rouge 2

21 Maria Berger - Matrise d'AES 2


Selection des groupes
HAVING : conditions imposes aux groupes (de lignes)
slectionner
pour viter la confusion avec la clause WHERE (qui

ne s'applique qu' des lignes seules)


Exemple :
Requte : Donner les communes o au moins 2 crus
rouges ou crus blancs sont produits?
SQL : SELECT Commune, Count(*)
FROM CRU
GROUP BY Commune, Coul
HAVING Count(*) >2;
22 Maria Berger - Matrise d'AES 2
Quantificateurs
ALL + oprateur de comparaison : teste si une
expression est vrifie dans tous les cas de figure
Requte : Tous les salaris ont-ils t recruts avant le 1er
janvier 2001 ?
SQL : 2001-01-01 > ALL (SELECT Embauche
FROM EMP)
SOME ou ANY : expression vraie si la comparaison est
vrifie pour au moins une valeur
Requte : vrifiez si au moins un salari a t recrut depuis un
an
SQL : 2000-10-01 > ANY (SELECT Embauche
FROM EMP)
23 Maria Berger - Matrise d'AES 2
Quantificateurs
EXISTS, NOT EXISTS

24 Maria Berger - Matrise d'AES 2


Comment interprter une requte
complexe monotable ?
on considre la table spcifie dans la clause FROM
on slectionne les lignes sur la base de la clause
WHERE
on classe ces lignes en groupes comme spcifi dans la
clause GROUP BY
on ne retient que les groupes qui vrifient la clause
HAVING
de chacun de ces groupes, on extrait les valeurs
demandes dans la clause SELECT
les valeurs demandes sont ordonnes selon la clause
ORDER BY ventuelle.

25 Maria Berger - Matrise d'AES 2


Interrogations sur plusieurs tables :
SQL permet la liaison de plusieurs tables via 3
possibilits :
Les oprations de jointure entre 2 tables en se
basant sur l'galit entre l'un des attributs de chaque
table
Le principe des requtes imbriques qui repose sur
le fait que le rsultat d'une requte est une table
L'utilisation d'oprations ensemblistes pour
combiner le rsultat de plusieurs requtes.

26 Maria Berger - Matrise d'AES 2


Jointures
SELECT ...
FROM nom_table1, nom_table2...
WHERE critre;
pas de condition de slection : rsultat obtenu =

produit cartsien des tables prsentes derrire le


FROM.
Requte : partir de quel cpage principal est produit
le Meursault ?
SQL : SELECT Cpage
Si lattribut Rgion avait le
FROM CEPAGE_REGION, CRU
mme nom dans CRU que dans
CEPAGE_REGION WHERE rgion = R_Prod AND
on aurait Commune =
Meursault
crit : CRU.Rgion =
27CEPAGE_REGION.Rgion Maria Berger - Matrise d'AES 2
Auto-jointure :
Requte : Donner pour chaque employ le nom
de son suprieur hirarchique.
SQL : SELECT EMP.Nom, chef.Mom
FROM EMP, EMP chef
WHERE EMP.N_sup= chef.Num;

28 Maria Berger - Matrise d'AES 2


Autres jointures
Le critre d'galit est le critre de jointure le
plus naturel. Mais on peut utiliser d'autres types
de comparaisons comme critres de jointures.
Requte : Quels sont les employs gagnant plus
que SIMON ?
SQL : SELECT EMP.nom, EMP.salaire,
EMP.fonction
FROM EMP, EMP empbis
WHERE EMP.salaire > empbis.salaire
AND empbis.nom = 'SIMON';

29 Maria Berger - Matrise d'AES 2


Requtes imbriques
uneclause WHERE est elle-mme le rsultat
d'un SELECT
renvoient une ou plusieurs valeurs

30 Maria Berger - Matrise d'AES 2


Requtes imbriques
Sous-interrogation ramenant une seule valeur
Requte : Quels sont les vins qui sont produits dans
la mme commune que La Grappe dOr ?
SQL : SELECT Nom_Cru
FROM VINS
WHERE Commune = (SELECT Commune
FROM VINS
WHERE Nom_Cru =
La Grappe dOr)
Remarque : auto-jointure possible pour rpondre
cette question
31 Maria Berger - Matrise d'AES 2
Requtes imbriques
une sous-interrogation qui ne ramne aucune
ligne se termine avec un code d'erreur.
une sous-interrogation ramenant plusieurs
lignes provoquera aussi, dans ce cas, une
erreur

32 Maria Berger - Matrise d'AES 2


Requtes imbriques
Sous-interrogation ramenant plusieurs
lignes
Avec des oprateurs de comparaison admettant
leur droite un ensemble de valeurs comme :
l'oprateur IN
les oprateurs obtenus en ajoutant ANY ou ALL la
suite d'un oprateur de comparaison classique (=,
<>, >, >=, <, <=)

33 Maria Berger - Matrise d'AES 2


Requtes imbriques
Requte : Quels sont les employs gagnant plus que
tous les employs du dpartement 30 ?
SQL : SELECT Nom, Salaire
FROM Emp
WHERE salaire > ALL(SELECT Salaire
FROM Emp
WHERE N_Dep=30);

34 Maria Berger - Matrise d'AES 2


Requtes imbriques
Sous-interrogation ramenant plusieurs colonnes
Exemple : Quels sont les employs ayant la mme
fonction et le mme suprieur que CODD ?
SQL : SELECT Nom, Fonction, N_Sup
FROM Emp
WHERE (Fonction,N_Sup) = (SELECT Fonction,N_Sup
FROM Emp
WHERE Nom = 'CODD');

35 Maria Berger - Matrise d'AES 2


Requtes imbriques
Sous-interrogation ramenant au moins une ligne
L'oprateur EXISTS permet de construire un prdicat
vrai si la sous-interrogation qui suit ramne au moins
une ligne.
Requte : Quels sont les employs travaillant dans un
dpartement qui a procd des embauches depuis le dbut de
l'anne 2001 ?
SQL : SELECT *
FROM Emp Empbis
WHERE EXISTS (SELECT *
FROM EMP
WHERE Embauche >= '01-jan-01'
36 AND N_Dept =Maria Berger - Matrise d'AES 2
Empbis.N_Dept);
Les oprateurs ensemblistes
permettent de "joindre" des tables verticalement c'est--
dire de combiner dans un rsultat unique des lignes
provenant de deux interrogations. Les oprateurs
ensemblistes sont les suivants :
l'union : UNION
l'intersection : INTERSECT
la diffrence relationnelle : MINUS
La syntaxe d'utilisation est la mme pour ces trois
oprateurs :
SELECT ... {UNION | INTERSECT | MINUS }
SELECT ...

37 Maria Berger - Matrise d'AES 2


Les oprateurs ensemblistes
Dans une requte utilisant des oprateurs ensemblistes :
Tous les SELECT doivent avoir le mme nombre de colonnes
slectionnes, et leur types doivent tre un un identiques.
Les doubles sont limins (DISTINCT implicite).
Les noms de colonnes sont ceux du premier SELECT.
On peut combiner le rsultat de plus de deux SELECT au
moyen des oprateurs UNION, INTERSECT, MINUS.
SELECT ... UNION SELECT ... MINUS SELECT ...
Expresion value de gauche droite. Modification de l'ordre
d'valuation par des parenthses.
SELECT ...
UNION (SELECT ...
MINUS
38 SELECT ...) Maria Berger - Matrise d'AES 2
Les oprateurs ensemblistes
Exemple
: Lister tous les enseignants
SELECT Nom, Prnom
FROM MdC
UNION
SELECT Nom, Prnom
FROM Professeur ;

39 Maria Berger - Matrise d'AES 2


Coment interprter une requte complexe
multitable ?
on considre les tables spcifies dans la clause FROM
on effectue la jointure de ces tables selon le critre de
jointure de la clause WHERE
on slectionne les lignes de la jointure sur la base des
autres conditions de la clause WHERE
on classe ces lignes en groupes comme spcifi dans la
clause GROUP BY
on ne retient que les groupes qui vrifient la clause
HAVING
de chacun de ces groupes, on extrait les valeurs
demandes dans la clause SELECT
les valeurs demandes sont ordonnes selon la clause
40 ORDER BY ventuelle. Maria Berger - Matrise d'AES 2
Coment interprter une requte complexe
multitable ?

Exemple:
SELECT NClient, COUNT(*), SUM(QtCom)
FROM Commande C, LigneCom L
WHERE C.NCom = L.NCom
AND NPro = PA 60
GROUP BY NClient
HAVING COUNT(*) >= 2
ORDER BY NClient

41 Maria Berger - Matrise d'AES 2


Le Language de Manipulation des
Donnes : la modification de
donnes
Insertion de nouveaux n-uplets
INSERT INTO nom_table(nom_col1, nom_col2,...)
VALUES (val1, val2...)
Exemple :

INSERT INTO Etudiant (nEt, Nom, Prnom)


VALUES(96035, Diego, Berger)

42 Maria Berger - Matrise d'AES 2


La modification de donnes
Il est possible d'insrer dans une table des lignes
provenant d'une autre table. La syntaxe est la suivante :
INSERT INTO nom_table(nom_col1, nom_col2, ...)
SELECT ...
Exemple : Insrer dans la table Bonus les noms et
salaires des directeurs.
INSERT INTO bonus
SELECT nom, salaire
FROM emp
WHERE fonction = 'directeur';
43 Maria Berger - Matrise d'AES 2
La modification de donnes
Modification de lignes
La commande UPDATE permet de modifier les valeurs d'une
ou plusieurs colonnes, dans une ou plusieurs lignes existantes
d'une table. La syntaxe est la suivante :
UPDATE nom_table
SET nom_col1 = {expression1 | ( SELECT ...) },
nom_col2 = {expression2 | ( SELECT ...) }
[WHERE critre];
Exemple : Augmenter de 10% les salaires [des
ingnieurs].
UPDATE emp
SET salaire = salaire * 1.1
[WHERE fonction = 'ingenieur' ];
44 Maria Berger - Matrise d'AES 2
La modification de donnes
Suppression de lignes
La commande DELETE permet de supprimer des lignes d'une
table. La syntaxe est la suivante :
DELETE FROM nom_table
WHERE critre;
Toutes les lignes pour lesquelles le critre est valu vrai sont
supprimes. En l'absence de clause WHERE, toutes les lignes
de la table sont supprimes.
Exemple :
DELETE FROM emp
WHERE fonction = retrait;

45 Maria Berger - Matrise d'AES 2


Le language de dfinition de
donnes
Cration d'une table
CREATE TABLE nom_table
(nom_col1 TYPE1,[NOTNULL/
PRIMARY KEY/FOREIGN KEY]
nom_col2 TYPE2,[.../.../...]
...);
Types accepts :
CHAR(longueur), VARCHAR(longueur)
SMALLINT, INTEGER, DECIMAL(m,n), FLOAT, SERIAL(n)
DATE

46 Maria Berger - Matrise d'AES 2


Cration d'une table
CREATE TABLE Departement
(NDep SERIAL(20),NOTNULL,PRIMARY KEY,
NomDep CHAR(20),
Directeur CHAR(20),
Budget DECIMAL(6,0));
CREATE TABLE Etudiant
(NEtud SERIAL(20),NOTNULL,PRIMARY KEY,
Nom CHAR(20),
Prnom CHAR(20),
DateNaissance DATE,
Rue CHAR(80),
CodePostal DECIMAL(5,0),
Ville CHAR(20),DEFAULT PARIS,
47 NDep SERIAL(20),NOTNULL,FOREIGN KEY);d'AES 2
Maria Berger - Matrise
Suppresion et modification d'une table
DROP TABLE nom_table ;
Exemple : DROP TABLE Etudiant ;
Modification d'une table
Ajot d'une ou plusieurs colonnes :
ALTER TABLE nom_table
ADD(nom_col1 TYPE1, nom_col2 TYPE2, ...);
option : [BEFORE nom_col_before]
Exemple : On aimerait connatre le tlphone des tudiants

ALTER TABLE Etudiant


ADD(Tlphone DECIMAL(10,0)
BEFORE NDep);
48 Maria Berger - Matrise d'AES 2
Modification d'une table
Suppression d'une colonne :
ALTER TABLE nom_table
DROP nom_col;
Attention aux problmes d'intgrit !
Modification dune table :
ALTER TABLE nom_table
MODIFY(nom_col1 TYPE1,nom_col2 TYPE2,...);
Exemple : Un nom peut dpasser 20 caractres
ALTER TABLE Etudiant
MODIFY(Nom Char(25));

49 Maria Berger - Matrise d'AES 2


Modification d'une table
Changement de nom de tables ou de colonnes :
RENAME TABLE ancien_nom TO nouveau_nom ;
RENAME COLUMN
nom_relation.ancien_nom_col TO
nouveau_nom_col ;
Exemple :
RENAME COLUMN Etudiant.DateNaissance
TO BirthDay;

50 Maria Berger - Matrise d'AES 2


Les vues
Les vues permettent d'assurer l'objectif d'indpendance
logique. Grace elles, chaque utilisateur pourra avoir sa
vision propre des donnes.
Crer une vue
La commande CREATE VIEW permet de crer une vue en
spcifiant le SELECT constituant la dfinition de la vue :
CREATE VIEW nom_vue [(nom_col1,...)]
AS SELECT ...
WITH CHECK OPTION ;

51 Maria Berger - Matrise d'AES 2


Les vues
Exemple : Cration d'une vue constituant une
restriction de la table emp aux employs du
departement 10.
CREATE VIEW emp10 AS
SELECT *
FROM emp
WHERE n_dept = 10 ;
Le CHECK OPTION permet de vrifier que la mise
jour ou l'insertion faite travers la vue ne produisent
que des lignes qui font partie de la slection de la vue.
Supprimer une vue

DROP VIEW nom_vue;


52 Maria Berger - Matrise d'AES 2
Les index
Considrons le SELECT suivant :
SELECT *
FROM Etudiant
WHERE nom = 'MARTIN'
moyen de recherche des lignes avec nom = 'MARTIN' :
balayer toute la table
prohibitif ds que nb lignes > qq centaines
Solution offerte par tous les SGBD : cration d'index
Les index sont des structures permettant de retrouver
une ligne dans une table partir de la valeur d'une
colonne ou d'un ensemble de colonnes.
53 Maria Berger - Matrise d'AES 2
Choix des index
Indexer en priorit :
les cls primaires
les colonnes servant de critre de jointure
les colonnes servant souvent de critre de recherche
Ne pas indexer :
les colonnes contenant peu de valeurs distinctes
(index alors peu efficace)
les colonnes frquemment modifies

54 Maria Berger - Matrise d'AES 2


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 deux 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

55 Maria Berger - Matrise d'AES 2


Les contraintes d'intgrit
Sur les colonnes :
NOT NULL : force la saisie de la colonne
DEFAULT : prcise une valeur par dfaut
UNIQUE : vrifie que toutes les valeurs sont diffrentes
CHECK : vrifie la condition prcise
CONSTRAINT : permet de nommer une contrainte
Sur la table globalement :
CONSTRAINT
PRIMARY KEY : cl primaire
FOREIGN KEY (liste_col1) REFERENCES table(liste_col2): cl
trangre => intgrit rfrentielle

56 Maria Berger - Matrise d'AES 2


Les contraintes d'intgrit
Cl trangre :
Attribut ou groupe dattribut dans une table T1 dont les valeurs
doivent exister comme valets de la cl candidate dans la table
T2.
T1 : table qui rfrence : table secondaire du lien (contient la cl
trangre)
T2 : table rfrence : table primaire du lien
Du point de vue de la table qui rfrence (T1) :
FOREIGN KEY (T1) REFERENCES table(T2): cl trangre =>
intgrit rfrentielle
Du point de vue de la table rfrence (T2) :
Modification de la cl primaire => effets sur les autres tables
utilisant cette cl comme cl trangre ?
REFERENCES complte par ON UPDATE ou ON DELETE
57 Maria Berger - Matrise d'AES 2
Les contraintes d'intgrit
RESTRICT : chec de la modification ou
suppression de la cl primaire
CASCADE : modification ou suppression des
lignes correspondantes en cascade
SET NULL : mettre NULL
SET DEFAULT : mettre la valeur par dfaut

58 Maria Berger - Matrise d'AES 2


Gestion des transactions
Plusieurs utilisateurs peuvent accder la base de
donnes de faon concurrente, "en mme temps".
Exemple : un mme systme de rservations de billets d'avions
est utilis en concurrence par des centaines d'employs
d'agences de voyage.
Ce concept pose des problmes quant la cohrence
et l'intgrit de la base de donnes.
Le SGBD devra donc grer les utilisations concurrentes
sur les donnes avec le plus d'efficacit possible.

59 Maria Berger - Matrise d'AES 2


Gestion des transactions
Une transaction est un ensemble de requtes
lmentaires sur les donnes d'une base.
Exemple : vente de produit un client = 2 parties
mise jour de l'inventaire en soustrayant la quantit vendue du
produit, et
mise jour de la table des encaissements raliser pour facturer
le client.
Fin de transaction :
COMMIT : Validation.
ROLLBACK : suite un echec, le SGBD doit revenir l'tat
prcdant le dbut de laction. Ceci est fait automatiquement
par la commande ROLLBACK.

60 Maria Berger - Matrise d'AES 2


Administration d'une Base de
Donnes
GESTION DES DROITS
protger les donnes de la base contre les accs non autoriss
enregistrer et authentifier les utilisateurs
dfinir des autorisations de manipulation des objets de la base par
les utilisateurs (relation, vue, contrainte d'intgrit, index)
LES DIFFERENTS UTILISATEURS
ADMINISTRATEUR BD
possde tous les droits
UTILISATEURS PRIVILEGIES
peuvent crer des relations
UTILISATEURS FINAUX
peuvent manipuler des relations

61 Maria Berger - Matrise d'AES 2


Les diffrents droits sur une relation
DROIT D'INTERROGATION
DROIT DE MISE A JOUR (insertion,
modification, suppression de tuples)
DROIT D'ADMINISTRATION (dclaration de
cls, dfinition d'index, modif. / suppression du
schma, transmission des droits)
DROIT DE CREATION (cration schma
relation)

62 Maria Berger - Matrise d'AES 2


Droits sur une relation
EXPRESSION DES DROITS EN SQL
DROITS GERES PAR SQL
-> droits de manipulation des relations de base et des
vues
ATTRIBUTION DE DROITS
grant <droits> on <relation> to <usagers>
grant SELECT on VINS to Grobuveur

REVOCATION DES DROITS (SQL2)


revoke <droits > on < relation > to <usagers>
revoke SELECT on VINS to grobuveur

63 Maria Berger - Matrise d'AES 2


Le mode Client-Serveur
Serveur : serveur de ressources communes
Client : logiciel qui accde au serveur

MachineA MachineB

Logiciel requte Logiciel


Utilisateur
Client Serveur
rponse
Besoin de permettre la connexion de nimporte quel type de
client avec nimporte quel type de serveur
Naissance de protocoles comme ODBC (Open DataBase
Connectivity) ou JDBC (Java DataBase Connectivity)
64 Maria Berger - Matrise d'AES 2
Le mode Client-Serveur
permettent de traduire les requtes du logiciel
client en ordres exploitables par le serveur puis
traduire le format des donnes renvoyes par
le serveur en donnes manipulables par le
client
Problme : le choix du bon constructeur. Que
mettre dans le client et que mettre sans le
serveur ?

65 Maria Berger - Matrise d'AES 2


Le mode Client-
Serveur
ODBC : accs aux bases de donnes dans le monde
de Microsoft

66 Maria Berger - Matrise d'AES 2

Vous aimerez peut-être aussi