sql et bases de données relationnelles langage sql c’est un langage fourni avec tout sgbd...

45
SQL et Bases de donn´ ees relationnelles November 26, 2013 SQL et Bases de donn´ ees relationnelles

Upload: buihanh

Post on 26-Jun-2018

228 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: SQL et Bases de données relationnelles langage SQL C’est un langage fourni avec tout SGBD relationnel commercialis e. C’est un standard reconnu par l’ISO depuis 87 (standard)portabilit

SQL et Bases de donnees relationnelles

November 26, 2013

SQL et Bases de donnees relationnelles

Page 2: SQL et Bases de données relationnelles langage SQL C’est un langage fourni avec tout SGBD relationnel commercialis e. C’est un standard reconnu par l’ISO depuis 87 (standard)portabilit

SQL :

En tant que langage d’interrogation

En tant que langage de mise a jour

En tant que langage de definition de donnees

SQL et Bases de donnees relationnelles

Page 3: SQL et Bases de données relationnelles langage SQL C’est un langage fourni avec tout SGBD relationnel commercialis e. C’est un standard reconnu par l’ISO depuis 87 (standard)portabilit

Langages de requete

Langages qui permettent d’interroger la BD(i) Langages relationnels “purs”

Algebre relationnelle

Calcul relationnel par n-uplet

Calcul relationnel par domaine

(ii) Langages pratiques

SQL (Structured Query Language)

QUEL (Query Language)

SEQUEL (Structured English as a Query Language)

QBE (Query By Example)

SQL et Bases de donnees relationnelles

Page 4: SQL et Bases de données relationnelles langage SQL C’est un langage fourni avec tout SGBD relationnel commercialis e. C’est un standard reconnu par l’ISO depuis 87 (standard)portabilit

Le langage SQL

C’est un langage fourni avec tout SGBD relationnelcommercialise.

C’est un standard reconnu par l’ISO depuis 87(standard⇒ portabilite)

On en est a la version 2 (SQL92) et la version 3 est annonceepour bientot

SQL est un LDD et un LMD. Il est aussi utilise pour definirdes vues, les droits d’acces, manipulation de schema physique. . .

SQL et Bases de donnees relationnelles

Page 5: SQL et Bases de données relationnelles langage SQL C’est un langage fourni avec tout SGBD relationnel commercialis e. C’est un standard reconnu par l’ISO depuis 87 (standard)portabilit

Structure de base

Une requete SQL typique est de la forme :

SELECT A1, . . . ,An

FROM r1, . . . , rmWHERE P

Les Ai sont des attributs, les rj sont des noms de relations et P estun predicat.Cette requete est equivalente a

πA1,...,An

(σP(r1 × · · · × rm)

)

SQL et Bases de donnees relationnelles

Page 6: SQL et Bases de données relationnelles langage SQL C’est un langage fourni avec tout SGBD relationnel commercialis e. C’est un standard reconnu par l’ISO depuis 87 (standard)portabilit

La clause SELECT

La clause SELECT correspond a la projection de l’algebre.Les titres des films :

SELECT TitreFROM film

L’utilisation de l’asterisque permet de selectionner tous les attributs

SELECT *FROM film

SQL et Bases de donnees relationnelles

Page 7: SQL et Bases de données relationnelles langage SQL C’est un langage fourni avec tout SGBD relationnel commercialis e. C’est un standard reconnu par l’ISO depuis 87 (standard)portabilit

La clause SELECT (suite)

SQL autorise par defaut les doublons. Pour le forcer a les eliminer,on utilise la clause DISTINCT

SELECT DISTINCT TitreFROM film

La clause SELECT peut contenir des expressions arithmetiquesainsi que le renommage d’attributs

SELECT Prix HT * 1.206 AS Prix TTCFROM produit

SQL et Bases de donnees relationnelles

Page 8: SQL et Bases de données relationnelles langage SQL C’est un langage fourni avec tout SGBD relationnel commercialis e. C’est un standard reconnu par l’ISO depuis 87 (standard)portabilit

La clause WHERE

Correspond au predicat de selection dans l’algebre.La condition porte sur des attributs des relations qui apparaissentdans la clause FROM

SELECT DISTINCT TitreFROM filmWHERE Realisateur = “Bergman” AND

Acteur =“Stewart”SQL utilise les connecteurs AND, OR et NOTPour simplifier la clause WHERE, on peut utiliser la clauseBETWEEN

SELECT NumFROM compteWHERE Solde BETWEEN 0 AND 10000

SQL et Bases de donnees relationnelles

Page 9: SQL et Bases de données relationnelles langage SQL C’est un langage fourni avec tout SGBD relationnel commercialis e. C’est un standard reconnu par l’ISO depuis 87 (standard)portabilit

La clause FROM

Elle correspond au produit cartesien de l’algebre.Le titre et le realisateur des films programmes a l’UGC deBordeaux.

SELECT Titre, RealisateurFROM film f, programme pWHERE f.titre=p.titre AND

p.NomCine=“UGC”Noter l’utilisation des variables p et f pour designer les relationsprogramme et film.

SQL et Bases de donnees relationnelles

Page 10: SQL et Bases de données relationnelles langage SQL C’est un langage fourni avec tout SGBD relationnel commercialis e. C’est un standard reconnu par l’ISO depuis 87 (standard)portabilit

Les variables n-uplets

Elles sont definies dans la clause FROM SoitEmp(Id,Nom,Id chef). Donner la liste des noms des employes ainsique les noms de leurs chefs.

SELECT e1.Nom, e2.Nom AS Nom ChefFROM emp e1, emp e2WHERE e1.Id chef = e2.Id

On ne peut pas exprimer sans recours a des variables n-uplets.

SQL et Bases de donnees relationnelles

Page 11: SQL et Bases de données relationnelles langage SQL C’est un langage fourni avec tout SGBD relationnel commercialis e. C’est un standard reconnu par l’ISO depuis 87 (standard)portabilit

La clause ORDER BY

SQL permet de trier les resultats de requete

SELECT *FROM programmeWHERE NomCine=“UGC”ORDER BY Horaire ASC, Titre DESC

SQL et Bases de donnees relationnelles

Page 12: SQL et Bases de données relationnelles langage SQL C’est un langage fourni avec tout SGBD relationnel commercialis e. C’est un standard reconnu par l’ISO depuis 87 (standard)portabilit

Jointure et Jointure externe

On considere les deux tables

Personne(NSS, Nom) et

Voiture(Matricule, modele, Proprio).

Si on fait Personne on Voiture, on n’obtient aura que lespersonnes qui ont une (des) voiture(s).

Soit la reque suivante :SELECT *FROM Personne P Left Outer Join Voiture V

ON P.NSS = V.Proprio

Cette requete retourne aussi les personnes n’ayant pas devoiture.Ces tuples auront des valeurs nulles pour les champsprovennant de Voiture.

Si on met juste Outer Join alors on aura les personnes sansvoitures et les voitures sans Proprietaire.

La jointure est exprimee par : T1 Inner Join T2 On Condition

SQL et Bases de donnees relationnelles

Page 13: SQL et Bases de données relationnelles langage SQL C’est un langage fourni avec tout SGBD relationnel commercialis e. C’est un standard reconnu par l’ISO depuis 87 (standard)portabilit

Operateurs ensemblistes

SELECT . . .. . .UNION/ INTERSECT/ EXCEPTSELECT . . .

Attention : Ces operations eliminent les doublons, pour pouvoir lesgarder, utiliser a la place INTERSECT ALL . . .Si t apparaıt m fois dans r et n fois dans s alors il apparaıt

m + n fois dans r UNION ALL s

min(m, n) fois dans r INTERSECT ALL s

max(0,m − n) fois dans r EXCEPT ALL s

SQL et Bases de donnees relationnelles

Page 14: SQL et Bases de données relationnelles langage SQL C’est un langage fourni avec tout SGBD relationnel commercialis e. C’est un standard reconnu par l’ISO depuis 87 (standard)portabilit

Les fonctions d’aggregats

Ce sont des fonctions qui agissent sur des ensembles(multi-ensembles) de valeurs :

AVG : la valeur moyenne de l’ensembleMIN : la valeur minimaleMAX : la valeur maximaleSUM : le total des valeurs de l’ensembleCOUNT : le nombre de valeur dans l’ensemble

SQL et Bases de donnees relationnelles

Page 15: SQL et Bases de données relationnelles langage SQL C’est un langage fourni avec tout SGBD relationnel commercialis e. C’est un standard reconnu par l’ISO depuis 87 (standard)portabilit

Les fonctions d’aggregats (suite)

SELECT COUNT(Titre)FROM Programme

Cette requete retourne le nombre de films programmes a Bordeaux.Attention : Un meme titre peut etre compte plusieurs fois s’il estprogramme a des heures differentes et dans des salles differentes.

SELECT COUNT( DISTINCT Titre)FROM Programme

SQL et Bases de donnees relationnelles

Page 16: SQL et Bases de données relationnelles langage SQL C’est un langage fourni avec tout SGBD relationnel commercialis e. C’est un standard reconnu par l’ISO depuis 87 (standard)portabilit

Aggregats et GROUP BY

Le nombre de films programmes dans chaque salle

SELECT NomCine, COUNT(DISTINCT Titre)FROM ProgrammeGROUP BY NomCine

Les attributs apparaissant dans la clause SELECT en dehors desaggregats doivent etre associes a la clause GROUP BY

SQL et Bases de donnees relationnelles

Page 17: SQL et Bases de données relationnelles langage SQL C’est un langage fourni avec tout SGBD relationnel commercialis e. C’est un standard reconnu par l’ISO depuis 87 (standard)portabilit

Aggregats et la clause HAVING

Les salles ou sont programmes plus de 3 films

SELECT NomCine, COUNT(DISTINCT Titre)FROM ProgrammeGROUP BY NomCineHAVING COUNT(DISTINCT Titre) > 3

Le predicat associe a la clause HAVING est teste apres laformation des groupes definis dans la clause GROUP BY

SQL et Bases de donnees relationnelles

Page 18: SQL et Bases de données relationnelles langage SQL C’est un langage fourni avec tout SGBD relationnel commercialis e. C’est un standard reconnu par l’ISO depuis 87 (standard)portabilit

Requetes imbriquees

SQL fournit un mecanisme qui permet d’imbriquer les requetes.Une sous requete est une requete SQL (SELECT-FROM-WHERE)qui est incluse dans une autre requete. Elle apparaıt au niveau dela clause WHERE de la premiere requete.Les films programmes a l’UGC non programmes au TriaonSELECT TitreFROM ProgrammeWHERE NomCine=“UGC” and Titre NOT IN (

SELECT TitreFROM ProgrammeWHERE NomCine=“Trianon”)

SQL et Bases de donnees relationnelles

Page 19: SQL et Bases de données relationnelles langage SQL C’est un langage fourni avec tout SGBD relationnel commercialis e. C’est un standard reconnu par l’ISO depuis 87 (standard)portabilit

Requetes imbriquees (suite)

Compte(Num, Solde, NomTit)Trouver les comptes dont les soldes sont superieurs aux soldes descomptes de Durand

SELECT *FROM CompteWHERE Solde > ALL (

SELECT SoldeFROM CompteWHERE NomTit=“Durand”)

En remplacant ALL par SOME, on obtient les comptes dont lessoldes son sup. au solde d’au moins un compte de Durand.

SQL et Bases de donnees relationnelles

Page 20: SQL et Bases de données relationnelles langage SQL C’est un langage fourni avec tout SGBD relationnel commercialis e. C’est un standard reconnu par l’ISO depuis 87 (standard)portabilit

Requetes imbriquees (suite)

Les cinemas qui passent tous les films programmes a l’UGCSELECT NomCineFROM programme p1

WHERE NOT EXISTS(

(SELECT DISTINCT TitreFROM programmeWHERE NomCine=“UGC”)EXCEPT(SELECT DISTINCT TitreFROM programme p2

WHERE p1.NomCine=p2.NomCine))

SQL et Bases de donnees relationnelles

Page 21: SQL et Bases de données relationnelles langage SQL C’est un langage fourni avec tout SGBD relationnel commercialis e. C’est un standard reconnu par l’ISO depuis 87 (standard)portabilit

Test d’absence de doublons

La clause UNIQUE permet de tester si une sous requete contientdes doublons.Les titres de films programmes dans une seule salle et un seulhoraireSELECT p.TitreFROM programme p

WHERE UNIQUE(

(SELECT p1.TitreFROM programme p1

WHERE p.Titre=p1.Titre)

SQL et Bases de donnees relationnelles

Page 22: SQL et Bases de données relationnelles langage SQL C’est un langage fourni avec tout SGBD relationnel commercialis e. C’est un standard reconnu par l’ISO depuis 87 (standard)portabilit

Les relations derivees

Titulaire(Nom, Adresse)Compte(Num, Solde, NomTit)Donner le solde moyen des comptes de chaque personne ayant unsolde moyen superieur a 1000SELECT NomTit, SoldeMoyen

FROM(

SELECT NomTit, AVG(Solde)FROM Compte

GROUP BY NomTit)

AS Result(NomTit, SoldeMoyen)WHERE SoldeMoyen > 1000

Noter qu’on aurait pu exprimer cette requete en utilisant la clauseHAVING

SQL et Bases de donnees relationnelles

Page 23: SQL et Bases de données relationnelles langage SQL C’est un langage fourni avec tout SGBD relationnel commercialis e. C’est un standard reconnu par l’ISO depuis 87 (standard)portabilit

Les vues

Permettent de definir des relations virtuelles dans le but de (i)cacher certaines informations a des utilisateurs, (ii) faciliterl’expression de certaines requetes (iii) ameliorer la presentation decertaines donnees.Une vue est definie par une expression de la forme :

CREATE VIEW V AS requete

requete : est une expression quelconque de requeteV : est le nom de la vue

SQL et Bases de donnees relationnelles

Page 24: SQL et Bases de données relationnelles langage SQL C’est un langage fourni avec tout SGBD relationnel commercialis e. C’est un standard reconnu par l’ISO depuis 87 (standard)portabilit

Les vues (suite)

Soit la relation : Emp(NumE, Salaire, Dept, Adresse)

CREATE VIEW EmpGen AS(

SELECT NumE, Dept, Adresse

FROM Emp)

Toutes les informations concernant les employes dudepartement 5.SELECT *FROM EmpGenWHERE Dept = 5

SQL et Bases de donnees relationnelles

Page 25: SQL et Bases de données relationnelles langage SQL C’est un langage fourni avec tout SGBD relationnel commercialis e. C’est un standard reconnu par l’ISO depuis 87 (standard)portabilit

Mise a jour des vues

Soit la relation : Personne(Nom,Salaire).

Supposons que la table Personne est vide.CREATE VIEW Gros Salaire ASSELECT *FROM PersonneWHERE Salaire > 10000

INSERT INTO Gros Salaire VALUES(”Martin”, 5000)

Si on faitSELECT * FROM Gros Salaire; on n’obtient aucun tuple.

SQL et Bases de donnees relationnelles

Page 26: SQL et Bases de données relationnelles langage SQL C’est un langage fourni avec tout SGBD relationnel commercialis e. C’est un standard reconnu par l’ISO depuis 87 (standard)portabilit

Si a la creation de la vue on rajoute l’option

WITH CHECK OPTION

alors l’insertion est refusee.

Les mises a jours des vues sont traduites en des mises a joursdes tables sous-jacente. La traduction n’est pas toujoursunique.=⇒ Certaines vues ne permettent pas des mises a jour.

SQL et Bases de donnees relationnelles

Page 27: SQL et Bases de données relationnelles langage SQL C’est un langage fourni avec tout SGBD relationnel commercialis e. C’est un standard reconnu par l’ISO depuis 87 (standard)portabilit

Modification des relations : Suppression

Supprimer tous les employes du departement 5DELETE FROM EmpWHERE Dept=5

Supprimer du programme tous les films programmes a l’UGCou un des acteurs est DiCaprio.DELETE FROM programme

WHERE NomCine = “UGC” AND EXISTS(

SELECT TitreFROM filmWHERE programme.Tite = film.Titre AND

film.Acteur =“DiCaprio”)

SQL et Bases de donnees relationnelles

Page 28: SQL et Bases de données relationnelles langage SQL C’est un langage fourni avec tout SGBD relationnel commercialis e. C’est un standard reconnu par l’ISO depuis 87 (standard)portabilit

Modification des relations : Suppression

Supprimer les comptes dont le solde est inferieur a la moyennedes soldes de tous les comptes.DELETE FROM compteWHERE Solde < (SELECT AVG(Solde) FROM compte)

Remarque : Si les n-uplets sont supprimes un a un de larelation compte, on peut penser qu’a chaque suppression on aune nouvelle valeur de AVG(Solde).

Solution de SQL : D’abord, calculer AVG(Solde) et ensuitesupprimer les tuples satisfaisant le test sans recalculer achaque fois la nouvelle valeur de AVG(Solde).

SQL et Bases de donnees relationnelles

Page 29: SQL et Bases de données relationnelles langage SQL C’est un langage fourni avec tout SGBD relationnel commercialis e. C’est un standard reconnu par l’ISO depuis 87 (standard)portabilit

Modification des relations : Insertion

Inserer un n-uplet dans la relation “compte”INSERT INTO compte(Num, Solde, NomTit) VALUES(

511, 1000, “Dupont”)

ou bienINSERT INTO compte VALUES(

511, 1000, “Dupont”)

Insere un n-uplet avec un solde inconnu.INSERT INTO compte VALUES(

511, NULL, “Dupont”)

ou bienINSERT INTO compte(Num, NomTit) VALUES(

511, “Dupont”)

Les 2 dernieres m.a.j sont equivalentes sauf si une valeur pardefaut du Solde a ete specifiee lors de la definition de la tablecompte. SQL et Bases de donnees relationnelles

Page 30: SQL et Bases de données relationnelles langage SQL C’est un langage fourni avec tout SGBD relationnel commercialis e. C’est un standard reconnu par l’ISO depuis 87 (standard)portabilit

Modification des relations : Insertion

Supposons qu’on a cree une relation TitMoy(NomTit, Moyenne)qui doit contenir le nom des clients de la banque ainsi que lamoyenne des soldes de leurs comptes.INSERT INTO TitMoy(NomTit, Moyenne)SELECT NomTit, AVG(Solde)FROM compteGROUP BY NomTit

SQL et Bases de donnees relationnelles

Page 31: SQL et Bases de données relationnelles langage SQL C’est un langage fourni avec tout SGBD relationnel commercialis e. C’est un standard reconnu par l’ISO depuis 87 (standard)portabilit

Modification des relations : Update

Rajouter 1% a tous les comptes dont le solde est inferieur a 500UPDATE compteSET Solde = Solde * 1.01WHERE Solde ≤ 500La condition qui suit la clause WHERE peut etre une requete SQL.

SQL et Bases de donnees relationnelles

Page 32: SQL et Bases de données relationnelles langage SQL C’est un langage fourni avec tout SGBD relationnel commercialis e. C’est un standard reconnu par l’ISO depuis 87 (standard)portabilit

SQL en tant que LDD

Le schema des relations

Les domaines des attributs

Les contraintes d’integrite

La gestion des autorisations

La gestion du stockage physique

Les index associes a chaque relation

SQL et Bases de donnees relationnelles

Page 33: SQL et Bases de données relationnelles langage SQL C’est un langage fourni avec tout SGBD relationnel commercialis e. C’est un standard reconnu par l’ISO depuis 87 (standard)portabilit

Domaines

char(n) : chaıne de caracteres de taille fixe n

varchar(n) : chaıne de caracteres de taille variable maisinferieure a n

int : Entier (un sous ensemble fini des entiers, depend de lamachine)

smallint : Entier. Sous ensemble de int

numeric(p,d) : Un reel code sur p digits et au max d digitspour la partie a droite de la decimale.

SQL et Bases de donnees relationnelles

Page 34: SQL et Bases de données relationnelles langage SQL C’est un langage fourni avec tout SGBD relationnel commercialis e. C’est un standard reconnu par l’ISO depuis 87 (standard)portabilit

Domaines

real : Un reel flottant.

date : YYYY-MM-DD (annee, mois, jours)

time : HH:MM:SS (heure, minute, seconde)

Les valeurs nulles (NULL) sont possibles dans tous lesdomaines. Pour declarer qu’un attribut ne doit pas etre nul, ilfaut rajouter NOT NULL

CREATE DOMAIN nom-client char(20)

SQL et Bases de donnees relationnelles

Page 35: SQL et Bases de données relationnelles langage SQL C’est un langage fourni avec tout SGBD relationnel commercialis e. C’est un standard reconnu par l’ISO depuis 87 (standard)portabilit

Creation des tables

On utilise la clause CREATE TABLECREATE TABLE compte (

Num int NOT NULL,Solde int,NomTit varchar(20))

Rajout de contraintes :CREATE TABLE compte (

Num int NOT NULL,Solde int DEFAULT 0,NomTit varchar(20),CONSTRAINT pk compte PRIMARY KEY (Num),CONSTRAINT ck compte CHECK (Num ≥ 1) )

En SQL92, si un attribut est cle alors il est different de NULL

SQL et Bases de donnees relationnelles

Page 36: SQL et Bases de données relationnelles langage SQL C’est un langage fourni avec tout SGBD relationnel commercialis e. C’est un standard reconnu par l’ISO depuis 87 (standard)portabilit

Cle etrangere

Soient Personne(NSS, Nom) etVoiture(Matricule, modele, Proprio).“Proprio” correspond au NSS du proprietaire. C’est une cleetrangere dans le schema Voiture car c’est une cle dans un autreschema.

SQL et Bases de donnees relationnelles

Page 37: SQL et Bases de données relationnelles langage SQL C’est un langage fourni avec tout SGBD relationnel commercialis e. C’est un standard reconnu par l’ISO depuis 87 (standard)portabilit

Cle etrangere

CREATE TABLE Voiture (Matricule CHAR(8),Modele CHAR(10),Proprio CHAR(3),CONSTRAINT pk voiture PRIMARY KEY(Matricule),CONSTRAINT fk voiture proprio FOREIGN KEY(Proprio)

REFERENCES PersonneON [DELETE — UPDATE] CASCADE—RESTRICT—SET NULL)CASCADE : Si une personne est supprimee, alors les voitures qu’elle

possede sont supprimees.RESTRICT : Le systeme refuse la suppression d’une personne s’il ya des voitures qui lui sont rattachees. C’est l’option par defaut.SET NULL : Si une personne est supprimee, alors l’attributProprio prend la valeur NULLL’insertion d’une voiture ne peut se faire que si le “proprio” existedans Personne (ou bien valeur nulle)SQL et Bases de donnees relationnelles

Page 38: SQL et Bases de données relationnelles langage SQL C’est un langage fourni avec tout SGBD relationnel commercialis e. C’est un standard reconnu par l’ISO depuis 87 (standard)portabilit

Valeurs nulles et requetes

Employe Nom Salaire

Dupont 10000Martin NULL

SELECT *FROM EmployeWHERE Salaire > 12000

Ne retourne aucun tuple. Pareil si la condition est :WHERE Salaire < 8000

SQL et Bases de donnees relationnelles

Page 39: SQL et Bases de données relationnelles langage SQL C’est un langage fourni avec tout SGBD relationnel commercialis e. C’est un standard reconnu par l’ISO depuis 87 (standard)portabilit

Valeurs nulles et requetes

SELECT SUM(Salaire) FROM Employe;Retourne 10000SELECT COUNT(Salaire) FROM Employe;Retourne 2SELECT AVG(Salaire) FROM Employe;Retourne 10000SELECT COUNT(*) FROM EmployeWHERE Salaire IS NOT NULL;Retourne 1

SQL et Bases de donnees relationnelles

Page 40: SQL et Bases de données relationnelles langage SQL C’est un langage fourni avec tout SGBD relationnel commercialis e. C’est un standard reconnu par l’ISO depuis 87 (standard)portabilit

Manipulation de schema

La commande DROP TABLE permet de supprimer une table.Ex : DROP TABLE compte.

Si une vue est definie sur la table compte alors il faut utiliserDROP TABLE compte CASCADE

La commande ALTER TABLE permet de modifier le schemad’une relation. Exemple :ALTER TABLE compte ADD Date ouverture dateALTER TABLE compte DROP Solde CASCADE

SQL et Bases de donnees relationnelles

Page 41: SQL et Bases de données relationnelles langage SQL C’est un langage fourni avec tout SGBD relationnel commercialis e. C’est un standard reconnu par l’ISO depuis 87 (standard)portabilit

Le mecanisme des droits

Soit la table Pers(Num, Nom, Adr, Num Serv, Salaire)

1 Dupont ne peut pas acceder a Pers

2 Dupont Peut lire une partie de Pers mais ne peut rienmodifier

3 Dupont Peut lire un seul tuple (celui le concernant) sanspouvoir le modifier

4 Dupont peut en plus modifier l’attribut Adr

5 Dupont peut acceder a l’attribut salaire mais seulemententre 9h et 17h a partir du terminal 25

6 Dupont peut modifier salaire si celui-ci est inferieur a 8000

7 Dupont peut modifier la relation si il est responsable duNum Serv du tuple qu’il veut modifier

Les droits dependent du contenant, du contexte et/ou du contenu

SQL et Bases de donnees relationnelles

Page 42: SQL et Bases de données relationnelles langage SQL C’est un langage fourni avec tout SGBD relationnel commercialis e. C’est un standard reconnu par l’ISO depuis 87 (standard)portabilit

Les droits dans SQL

SELECT: privilege qu’il faut posseder pour lire une tableINSERT, DELETE, UPDATE: privilieges necessaires pour mettre ajour une table.INSERT(X), UPDATE(X): privilege necessaire pour inserer, mettrea jour l’attribut X.

SQL et Bases de donnees relationnelles

Page 43: SQL et Bases de données relationnelles langage SQL C’est un langage fourni avec tout SGBD relationnel commercialis e. C’est un standard reconnu par l’ISO depuis 87 (standard)portabilit

Octroi et retrait de privileges

GRANT privilege ON objet TO utilisateur [WITH GRANT OPTION]

REVOKE [GRANT OPTION FOR] privilege ON objet FROM utilisateurRESTRICT | CASCADE

Exemples :GRANT ALL ON TABLE resultat TO directeur WITH GRANT OPTION;GRANT INSERT ON TABLE resultat TO sec 1;GRANT SELECT, UPDATE(points) ON TABLE resultat TO prof 1;Remarque : Un utilisateur peut recevoir le meme privileges deplusieurs sources. Cela est utilie quand l’une d’elles veut le luiretirer.

SQL et Bases de donnees relationnelles

Page 44: SQL et Bases de données relationnelles langage SQL C’est un langage fourni avec tout SGBD relationnel commercialis e. C’est un standard reconnu par l’ISO depuis 87 (standard)portabilit

Octroi et retrait de privileges

soit la sequence :A: GRANT SELECT ON TABLE T TO B WITH GRANT OPTION

B: GRANT SELECT ON TABLE T TO C WITH GRANT OPTION

C: GRANT SELECT ON TABLE T TO D WITH GRANT OPTION

A: GRANT SELECT ON TABLE T TO D WITH GRANT OPTION

A: REVOKE SELECT ON TABLE T FROM BNi B ni C ne pourront lire T. Par contre D continue a pouvoir fairedes lectures.

SQL et Bases de donnees relationnelles

Page 45: SQL et Bases de données relationnelles langage SQL C’est un langage fourni avec tout SGBD relationnel commercialis e. C’est un standard reconnu par l’ISO depuis 87 (standard)portabilit

Utilisation des vues

CREATE VIEW Informations PersoAS SELECT *

FROM EmployeWHERE nom = USER;GRANT SELECT, UPDATE(adresse)ON Informations PersoTO PUBLIC

SQL et Bases de donnees relationnelles