Vous êtes sur la page 1sur 36

SGBD Oracle

Matire : Base de donnes II


Institut Suprieur dinformatique et Multimdia
Gabs
Anne Univ. 2007 / 2008

Wided BOUCHELLIGUA

2007/2008

Chapitre I
Prsentation du SGBD Oracle
Objectifs
Dfinir les fonctionnalits dOracle
Connatre larchitecture fonctionnelle dOracle
Les objets manipuls dans Oracle

Introduction
Dbut des annes 70, le modle relationnel fait son apparition [E. F. Codd], IBM
San Jose
Concepts pour :
la dfinition des donnes
la manipulation des donnes
concepts additionnels (optimisation, maintenance, dfinition des droits)
Oracle developp par Oracle Corporations, cest un ensemble dapplications crit en
C puis en java (80%)
Principales tapes :
1970 : The relational model (CODD, ACM)
1974 : dbut des projets R (IBM) et INGRES (Berkeley)
1981 : commercialisation de SQL/DS et INGRES
1986 : normalisation de SQL1
1984 Oracle version PC (Dos, Windows 3.X, 95, 98, NT, 2000)
Langage de dveloppement sous Oracle : Pro* (pro.C, pro.cobol, pro.fortran,
pro.pascal)
L4G pl / SQL (SQL plus, Developper 2000, Designer 2000)
UN SGBD Oracle est caractris par :
La portabilit : une application dveloppe sous Oracle peut tre support par une
varit de plateformes matrielle (Oracle peut fonctionner sur toutes les gammes de
machine) et logiciels (sur la majorit des SX)
La compatibilit : Oracle est membre dans les compagnies de Normalisation AFNOR,
ISO, IEEE
Le langage SQL t normalis en 86.
La connectablit : Oracle est ouvert sur plusieurs autres SGBD

Les objets dune base de donne Oracle


La notion de relation (table) : une structure de donne compos des lignes et des
colonnes, elle peut reprsenter un objet du monde rel.
Exemple :
la relation NAGEURS est un sous-ensemble du produit cartsien des
domaines suivants : (100, 110, 120), (Plouf, Coule, Brasse), (Jean,
Paul), (Mauvaise, Bonne, Excellente).
La notion de n-uplet : un n-uplet (lment) correspond une ligne d'une relation.

ISIMG

-2-

Base de donnes II

Wided BOUCHELLIGUA

2007/2008

Une autre reprsentation des relations


La notion d'attribut : un attribut est le nom donn une colonne d'un tableau
reprsentant une relation.
Exemple :
les attributs de la relation PLAGES sont NP, NOMP, REGION, TYPE et
POLLUTION.
La notion de vue : cest une reprsentation logique issue de la combinaison de la
dfinition dune ou de plusieurs tables ou vues. Elle obtient ses donnes partir des
tables sur lesquels elle est base.
La notion de schma : le schma d'une relation est une structure logique de
donne qui appartiennent un utilisateur de la base de donnes.
R(A1, A2,, AN).
Exemple :
PLAGES (NP, NOMP, TYPE, REGION, POLLUTION).
Dfinition : schma d'une base de donnes relationnelles
Le schma d'une base de donnes relationnelle est l'ensemble des
schmas des relations qui la composent.
Lindex : cest une structure contenant ladresse physique de chaque ligne dune
table, permettant laccs direct linformation.
Cluster : cest le regroupement de plusieurs tables ayant de colonnes communes.
Son utilisation permet laccs rapide aux lignes issues dune jointure.

Fonctionnalit dOracle
Oracle possde les fonctionnalits dun SGBD Relationnel qui sont :
a) Dfinition et Manipulation de donnes : Oracle dispose dun langage de
dfinition de donnes LDD permettant la dfinition des objets dun base de
donnes (table, vue, index, trigger, cluster, etc.). Il dispose aussi dun langage
de Manipulation de donnes LMD permettant la consultation de donne
travers la commande SELECT, linsertion des donnes (commande Insert) et la
suppression (commande DELETE)
b) Cohrence des donnes : Oracle fonctionne avec le concept de la
transaction ; c--d une unit logique indivisible
c) Confidentialit : Oracle dispose des moyens de scurit des donnes en
protgeant les donnes contre tout accs interdit. Oracle dispose dun langage
de contrle de donnes LCD permettant dattribuer les droits daccs ou de les
retirer.
d) Intgrit des donnes : Oracle dispose dun mcanisme permettant la
dfinition des contraintes sur les donnes de la base.
CI
Cl primaire : primary key
Cl trangre : Foreign key
De valeur : not-null
Condition : check
Unicit : unique
e) Gestion daccs concurrent : Oracle gre tout accs simultans, il permet
lutilisation multi-utilisateurs et une base de donne repartie.

ISIMG

-3-

Base de donnes II

Wided BOUCHELLIGUA

2007/2008

Architecture fonctionnelle dOracle


Le SGBD Oracle est compos de systemes suivants :
PL /SQL
SQL PLUS
BD
Noyau
Oracle

Outils de dveloppement
Pro*
Develpper 2000
Outils dadministration
SQL DBA
Outils de Modulisation
Designer 2000
Connexion SQLnet / SQL star

ISIMG

-4-

Base de donnes II

Wided BOUCHELLIGUA

2007/2008

Chapitre II
Le Langage SQL

1. Historique du langage
En 1970, SQL (Standard Query Language, en franais langage de requtes
structures) est n la suite des travaux mathmatiques de Codd (Directeur de
recherche du centre IBM San-Jos), travaux qui ont fond les bases de donnes
relationnelles. Suite ces recherches plusieurs langages sont apparus :
IBM Sequel (Structured English Query Language) en 1977
IBM Sequel/2
IBM System/R
IBM DB2
En 1982, SQL fut lanc commercialement par IBM. SQL a subit 3 normalisations :
SQL1 en 1986 (version minimale)
SQL1 en 1989 (+ intgrit)
SQL2 en 1992
SQL3 en 1999
Aujourd'hui SQL constitue le point d'entre obligatoire sur une Base de Donne
relationnelle.

2. Principes du langage
SQL est un langage non procdural. Il se diffre d'un langage de programmation
avec le fait qu'il n'a pas de structure de contrle et aussi car il manipule des
ensembles.
Une requte en SQL a un format relativement simple. Il est constitu en gros de 3
lments essentiels :
Une premire partie SELECT qui permet de dterminer les attributs qui vont nous
servir comme rsultats de la requte.
Une partie FROM qui indique dans quelles tables on va chercher les informations.
Une partie WHERE qui va permettre d'inclure des conditions.

ISIMG

-5-

Base de donnes II

Wided BOUCHELLIGUA

2007/2008

3. Structure gnrale du langage


Les instructions essentielles SQL se rpartissent en 4 familles fonctionnellement
distinctes et 4 formes d'utilisation :
LMD (Langage de Manipulation de Donnes) permet la manipulation des tables et
des vues. Pour manipuler la Base de Donne (BD) on a les commandes suivantes :

Select : Pour la recherche de donnes


Insert : Pour l'insertion de n-uplet dans une table
Delete : Pour la suppression de n-uplet dans une table
Update : Pour la modification de n-uplet dans une table

LDD (Langage de Dfinition de Donne) permet la cration et la dfinition des


tables, vues, index, attributs Pour dfinir le schma de BD on a les commandes
suivantes :
- Dclaration de tables
- Dclaration des droits d'accs
- Dclaration des vues
- Dclaration de contraintes d'intgrits
LCD (Langage de Contrle de Donnes) permet de dfinir des permissions au
niveau des utilisateurs d'une base de donnes.
Il existe aussi des commandes permettant l'intgration de SQL dans des langages
de programmation (le langage C par exemple).

4. Les Normes SQL


En 1986, la premire norme SQL (SQL-1) de l'ISO (International Standard
Organisation) apparat. Il existe dsormais plusieurs dizaines de produits proposant
SQL et tournant sur des machines allant des micros aux gros systmes.
En 1992, c'est au tour de la norme SQL 2. Parmi les nouvelles composantes de
cette norme on y trouve :
Une standardisation des codes rponses avec la variable SQLSTATE.
Une extension des types de donnes TIMESTAMP, INTERVAL.
La cration de domaines par l'utilisateur.
Le supporte de l'intgrit rfrentielle.
En 1999, il y a l'apparition de la norme SQL3. Celle-ci est plutt orient Objet et
relationnel.

ISIMG

-6-

Base de donnes II

Wided BOUCHELLIGUA

2007/2008

Partie 1 : Le langage de Dfinition des donnes LDD


La cration de table
1. La syntaxe
Pour crer une table on utilise la commande CREATE TABLE. Voici sa syntaxe :
Create table < nom de table > ({< lment de table >}) ;
Voici comment se compose la dfinition des lments de table :
< lment de table > : = < dfinition attribut > / < contrainte de table >
Voil donc comment s'crit la cration d'une table :
Create table < nom de table >
(< nom_attribut1 > < type attribut1 > < contrainte attribut1 >,
< nom_attribut2 > < type attribut2 > < contrainte attribut >,)
< contrainte de table >
Il y a des rgles respecter :
Chaque table de la base de donne possde un nom unique
Une table est compose d'au moins un attribut
Chaque attribut au sein d'une table possde un nom unique
On peut mettre des contraintes sur les attributs lors de la cration de table
Exemple:
Create table Commande (numcom NUMBER (5), datecomm DATE);
Ici, on remarquera que l'on cre la table COMMANDE avec 2 attributs : numcomm
pour le numro de commande (qui sera une valeur numrique 5 chiffres) et
datecomm qui reprsente la date de la commande (ce sera du type DATE).

2. Dclaration d'un attribut


Quand on dclare un attribut on doit lui affecter un nom ainsi qu'un type de donne
et aussi il est possible de lui attribuer une valeur par dfaut et une contrainte.
Voil la syntaxe de la dclaration d'un attribut :

ISIMG

-7-

Base de donnes II

Wided BOUCHELLIGUA

2007/2008

<nom attribut > <type_donnes > [default <valeur>] [contrainte_attribut]


NB : Ce qui est entre crochet signifie que ce sont des dfinitions optionnelles.
Les types de donnes
Type de
donne

Syntaxe

Commentaires

Alphanumrique

CHAR(n)

Chane de caractres de longueur


fixe n

Alphanumrique VARCHAR2(n)

Chane de n caractres maximums

Numrique

Number(n,[d])

Nombre de n chiffres avec en option


le nombre de dcimales.

Numrique

INTEGER

Entier sign de 32 bits

Numrique

SMALLINT

Entier sign de 16 bits

Numrique

FLOAT

Nombre rel (avec virgule)

Temps

DATE

Date au format : JJ/MM/AA

Temps

TIME

Heure au format : hh : mm :ss.ml

Temps

TIMESTAMP

Date et heure

La valeur par dfaut : default


Le langage SQL permet de dfinir une valeur par dfaut lorsqu'un champ de la base
n'est pas renseign grce la clause DEFAULT. Cela permet notamment de faciliter
la cration de tables, ainsi que de garantir qu'un champ ne sera pas vide.
La clause DEFAULT doit tre suivie par la valeur affecter. Cette valeur peut tre un
des types suivants :
constante numrique
constante alphanumrique (chane de caractres)
le mot cl USER (nom de l'utilisateur)
le mot cl NULL
le mot cl CURRENT_DATE (date de saisie)
le mot cl CURRENT_TIME (heure de saisie)
le mot cl CURRENT_TIMESTAMP (date et heure de saisie)
Les contraintes d'attribut
Il est possible d'exiger des contraintes sur les attributs d'une table. Voici la
liste de ces contraintes :
La valeur nulle impossible : NOT NULL
L'unicit : UNIQUE. Il existe aussi PRIMARY KEY qui quivaut l'association
de NOT NULL+ UNIQUE mais on ne peut mettre qu'une cl primaire
(PRIMARY KEY) par table.

ISIMG

-8-

Base de donnes II

Wided BOUCHELLIGUA

2007/2008

La contrainte rfrentielle qui pose la contrainte sur le fait qu'un attribut doit
exister dans une autre table. La syntaxe est donc :
REFERENCES <table rfrence> [ <attribut rfrenc > ]
La contrainte gnrale : sa syntaxe est : CHECK <condition>. La condition
peut tre simple (exemple : CHECK BETWEEN 1 and 10) ou alors on peut
tre une condition avec un ordre SELECT.
Exemple : On veut crer la table des commandes comportant 3 attributs : le numro
de commande qui doit tre unique et non nul (sinon une commande ne peut tre
identifie) la date de commande et le numro de fournisseur.
Create table COMMANDE (numcom NUMBER (5) PRIMARY KEY,
Datecom DATE, Numfou NUMBER(5) REFERENCES FOURNISSEUR) ;

3. Les contraintes de tables


Lors de la dclaration d'une table, une fois aprs avoir dfini les attributs on peut
rajouter des contraintes spcifiques la table. Voici la liste de ces contraintes :
L'unicit : sa syntaxe est UNIQUE / PRIMARY KEY (<nom_attribut1>,
<nom_attibut2 >,)
Les cls trangres (CONTRAINTES REFERENTIELLES) :
FOREIGN KEY (< nom attribut rfrenant > )
REFERENCES < nom de table rfrence >
[ <attributs rfrenc1>, <attribut rfrenc2>, ]
[ partie trigger ]
Dfinition de PARTIE TRIGGER
Les cls trangres permettent de dfinir les colonnes d'une table garantissant la
validit d'une autre table. Ainsi, il existe des lments (appels triggers, en franais
gchettes) permettant de garantir ces contraintes appeles intgrit rfrentielle,
c'est--dire notamment de garantir qu'un nuplet utilis partir d'une autre table existe
rellement.
Ces triggers sont ON DELETE et ON UPDATE. On a donc ON DELETE qui sert
dans le cas o l'on voudrait supprimer une donne et ON UPDATE sert lorsque l'on
met jour une donne. La syntaxe de partie trigger est donc :
ON UPDATE <action>
ON DELETE <action>
Dfinition de ACTION
L'action permet de savoir quelle va tre la rpercussion lors d'un effacement (delete)
ou d'une mise jour (update)
Parmi les actions l'on a :
ISIMG

-9-

Base de donnes II

Wided BOUCHELLIGUA

2007/2008

- CASCADE permet de rpercuter ON DELETE ou ON UPDATE en cascade sur


les autres attributs
- RESTRICT permet d'indiquer un message d'erreur
- SET DEFAULT permet de mettre la valeur par dfaut
- SET NULL permet de mettre la valeur NULL
Contrainte gnrale : CHECK <condition>
Exemple :
Create table Ligne
(numcomm NUMBER(5),
numligne NUMBER(5),
code_produit NUMBER(5) NOT NULL,
qt NUMBER(6) NOT NULL
PRIMARY KEY (numcomm, numligne)
FOREIGN KEY (numcomm) REFERENCES COMMANDE
ON DELETE CASCADE
ON DATE CASCADE
FOREIGN KEY (code_produit) REFERENCES PRODUIT (code_produit)

4. Dclaration de domaine
Les domaines sont utiliss lors de la dfinition des attributs de table. Voici la syntaxe
d'un domaine :
Create Domain <nom_domaine> As <type de donne>
[default <valeur>] [check <condition> ]
Exemple :
Create Domain acquisition As DATE
Default CURRENT_DATE
Ici CURRENT_DATE est une variable qui donne la date du jour.

ISIMG

- 10 -

Base de donnes II

Wided BOUCHELLIGUA

2007/2008

La dclaration de domaine sert dfinir un nouveau type de donne que l'on utilisera
lors de la dclaration d'un attribut par exemple.

5. Dclaration des assertions


Les assertions sont des expressions devant tre satisfaites lors de la modification de
donnes pour que celles-ci puissent tre ralises. Ainsi, elles permettent de
garantir l'intgrit des donnes. Par contre la dclaration d'assertion n'est prise en
compte par tous les SGBD. Les assertions permettent des contraintes multi-tables.
La syntaxe pour dclarer une contrainte d'intgrit :
Create assertion <nom_assertion> Check <condition>
Voici un exemple pour mieux comprendre :
Create assertion PU_PV
Check (NOT EXISTS (Select *
From LIGNE_CMD
Where lcd_pu <0.75 * (Select art_pv
From ARTICLE
Where art_num = lcd_art))) ;
Voici la traduction de cette requte :
Il ne doit pas exister de ligne de commande infrieure 75% du prix normal de
vente.

6. La suppression de table
Une requte de destruction d'une table provoque :
- la destruction des informations contenues dans la table.
- la destruction du schma de la relation. (Aucune requte ne pourra tre effectuer
sur cette table dans le futur)
La syntaxe :
Drop Table < nom de table >

ISIMG

- 11 -

Base de donnes II

Wided BOUCHELLIGUA

2007/2008

Insertion de tuples (lignes)


En SQL, pour insrer des nouvelles donnes dans une table on utilise la commande
INSERT. Pour insrer les donnes dans une ligne d'une table on utilise INSERT
avec la clause VALUES. On peut aussi insrer des donnes partir d'une autre
table, c'est dire que l'on utilise les donnes d'une table pour remplir une autre table,
dans ce cas on utilise la clause SELECT.
Voici la syntaxe pour Insert avec la clause Values :
Insert Into < Nom de table > [<nom des attributs > ]
Values (< valeur attribut1>, < valeur attribut 2>, )
Exemple : On veut insrer un nouvel employ qui s'appelle Burton qui est Directeur,
son responsable est l'employ n 15, etc..
Insert Into EMPLOYES
Values (10, Burton, Directeur, 15, 01/13/88, 250000, NULL, 60 )
NB : ici on ne spcifie pas le nom des attributs car on veut tous les remplir. On met la
valeur NULL aux champs qui n'ont pas de valeur sauf si on a dfini que l'attribut
devait absolument avoir une valeur.
Voici la syntaxe pour Insert avec la clause Select :
Insert Into < Nom de table > [<nom des attributs > ]
Select < nom des attributs >
From < nom de table2>
Where < condition >
Exemple : On veut insrer le nom, la fonction, la salaire et la commission des
employs qui sont " directeur " ou que leur commission soit suprieure 25% de leur
salaire dans la table PRIMES.
Insert Into PRIMES (nomemp, fonction, sala, comm)
Select nomemp, fonction, sala, comm
From EMPLOYES
Where fonction = " directeur " or comm > 0.25*sala

2. Mise jour de tuples


Pour la mise jour des donnes, la modification on utilise la commande UPDATE.
ISIMG

- 12 -

Base de donnes II

Wided BOUCHELLIGUA

2007/2008

Voici sa syntaxe :
Update < nom de table >
Set {< nom attribut > = valeur }
Where < condition de recherche >
Exemple : On veut augmenter le salaire de Perrin de 10%.
Update < EMPLOYES >
Set { sala = 1.1*sala }
Where nomemp = " Perrin "

3. Suppression de tuples
Pour supprimer un tuple dans une table on utilise la commande DELETE.
Voici sa syntaxe :
Delete From < nom table >
Where < condition de recherche >
Exemple : On veut enlever l'employ Lewinski de la table des PRIMES.
Delete From PRIMES
Where nomemp = " Lewinski "

ISIMG

- 13 -

Base de donnes II

Wided BOUCHELLIGUA

2007/2008

Partie 2.2 La cration des vues


1. Introduction
Dans la pratique, chaque table reprsente une entit propre ( comme par exemple la
table EMPLOYES qui reprsente les employs) et elle contient les informations
dsires pour dfinir l'entit, on parle donc d'attribut de table. Donc toutes les lignes
d'une table ont des attributs communs. Ces attributs, une fois dfinis, sont fixes en
principe. Il arrive qu'on puisse avoir besoin de rassembler les informations de
plusieurs tables. Pour cela on aurait donc besoin d'un outil supplmentaire les
vues.
Penons par exemple la base de donnes suivante pour :
Etudiant (num_Et, nom, prenom, adr1 )
Enseignant (num_Ens, , adr2)
Cours (num_Ens, num_Et, note_Et, date)

2. Dfinition
On dfinit une vue par une table virtuelle, c'est--dire dont les donnes ne sont pas
stockes dans une table de la base de donnes, et dans laquelle il est possible de
rassembler des informations provenant de plusieurs tables. On parle de "vue" car il
s'agit simplement d'une reprsentation des donnes dans le but d'une exploitation
visuelle. Le contenu de cette vue est dfini par une requte SQL.

3. Dclaration
Voil la syntaxe pour dclarer une vue :
Create View < nom vue > [{<liste des attributs>}] As <requte SQL>
[With Check Option]
La clause facultative with check option permet de dfinir, lors de la mise jour de
donnes via la vue, que la (les) conditions de la clause where doit tre vrifie. Si
elle n'est pas prsente, aucune vrification ne sera faite.
Avec cette clause, on peut insrer des lignes, mettre jour des colonnes, par
l'intermdiaire d'une vue, si les conditions du where sont respectes ( voir dans le
G)
Pour dtruire une vue :
Drop view <nom de vue >

ISIMG

- 14 -

Base de donnes II

Wided BOUCHELLIGUA

2007/2008

4. Exemple
Create view EMPLOYES10 As
Select noemp, nomemp, fonction
From EMPLOYES
Where nodep = 10
Ici on cre une vue pour pouvoir faire des requtes uniquement sur les employs du
dpartement 10. Donc ensuite on peut effectuer des requtes sur cette vue
exactement de la mme manire qu'avec une table.

5. Avantages
Grces aux vues on a de nombreux avantages :
Perception plus proche des besoins des utilisateurs.
D-normalisation de la structure de la base de donnes sans
introduire de la redondance.
Meilleure indpendance logique des programmes par rapport aux
donnes.
Limiter les accs aux donnes.
Simplification des requtes utilisateurs.

6. Interrogation travers des vues


Pour interroger une vue on procde exactement de la mme manire que pour une
table. Voici un exemple complet montrant la cration d'une vue, une requte sur
cette vue et la requte sans la cration de la vue.
On veut crer une table avec les gros buveurs (voir intro).
Create View Bon_Etudiant
As Select num_Et, nom, prnom, adr1
From Cours, Etudiant
Where Etudiant.num_Et = Cours.Num_ET and note_Et > 14
Maintenant on veut le nom et prnom des bons tudiants qui habite Gabes.
Select nom, prnom
From Bon_Etudiant
Where adresse like "Gabes";

ISIMG

- 15 -

Base de donnes II

Wided BOUCHELLIGUA

2007/2008

Voici la requte utilise si l'on n'avait pas fait de vue:


Select nom, prnom
From ABUS, BUVEURS
Where adr1 like "Gabes" and Etudiant.num_Et = Cours.Num_ET and note_Et > 14;

7. Mise jour travers des vues


Toutes les vues ne peuvent pas toutes tre mise jour. Une vue est mettable
jour s'il est possible de reporter les mises jour sur les tables de bases sans
ambigut. En effet, prenons le cas o l'on met des valeurs moyennes dans la vue,
alors mettre jour la donne n'aura aucun sens car le SGBD ne saura pas quoi
modifier dans les tables. Dans la pratique, les SGBD autorisent la mise jour que
sur des vues monotables avec cl dans les attributs (le WHERE peut rfrencer
plusieurs tables).
Si l'on veut vrifier que les donnes mises jour dans la vue sont bien les
proprits demandes on rajoute la clause with check option. Donc une fois cette
clause mise lors de la dclaration, on ne peut mettre jour les donnes seulement si
elles correspondent aux proprits demandes.

ISIMG

- 16 -

Base de donnes II

Wided BOUCHELLIGUA

2007/2008

Partie 2 : Le langage de Manipulation des donnes LMD


La base de donne
Dans le but d'illustrer au mieux les diffrentes requtes prsentes nous allons tout
d'abord dfinir diffrentes tables :
Voici les 4 tables qui vont nous servir :
DEPARTEMENT (nodep, nomdep, ville)
EMPLOYES (noemp, nomemp, fonction, noresp, datemb, sala, comm, nodep )
PRIMES ( noemp, fonction, sala, comm )
GRADE (grade, salmin, salmax )
Nodep : numro de dpartement
Nomdep : nom du dpartement
Ville : ville o est situ le dpartement
noemp : numro de l'employ
nomemp : nom de l'employ
fonction : fonction de l'employ
Noresp : numro de responsable de l'employ (qui est aussi un employ)
Datemb : date d'embauche de l'employ
Grade : libell du grade
Sala : salaire de l'employ
Salmin : salaire mini pour ce grade
Comm : commission perue par l'employ
Salmax : salaire maxi pour ce grade
Chaque attribut d'une table, a une contrainte d'intgrit. Ces contraintes
permettent de mettre des conditions sur donnes. Pour que les donnes saisies
dans la base soient conforme aux donnes attendues. Cet aspect sera dvelopp
dans le chapitre 4. Comme exemple de contraintes on pourra exiger qu'une cl soit
unique et que sa valeur de dois pas tre nulle.
Pour les champs de la base qui n'ont pas t renseigns, il y a une valeur par
NULL par dfaut. En effet la valeur NULL signifie qu'il n'y a pas de donne, on
naurait pas pu remplacer par la valeur 0 par exemple. Prenons le cas des
commissions. Si un employ n'a pas de commission (si il ne peut pas en bnficier)
on lui met la valeur NULL car si on met 0 ce n'est pas pareil. Le 0 voudrait dire qu'il
peut avoir une commission (un vendeur par exemple) mais comme il a mal travaill,
sa commission est de 0.

ISIMG

- 17 -

Base de donnes II

Wided BOUCHELLIGUA

2007/2008

2. Les requtes simples


Une requte simple, ou autrement appel une projection, sert slectionner un
ensemble d'attribut dans une table.
Sa syntaxe est :
Select < liste des attributs (colonnes) >
From < liste des tables > ;
Par exemple :
Select nodep, nomdep
From DEPARTEMENT;
Le rsultat de cette requte donne une liste de tous numro de dpartement (nodep)
et les noms de dpartement (nomdep) de la table DEPARTEMENT.
DEPARTEMENT
nodep nomdep

Ville

30

Dveloppement Marseille

35

Dveloppement Nice

45

Analyse

Toulon

50

Maintenance

Paris

60

Recherche

Toulouse

Le rsultat de la requte :
nodep nomdep
30

Dveloppement

35

Dveloppement

45

Analyse

50

Maintenance

60

Recherche

Pour slectionner tous les attributs de la table on peut utiliser le caractre '*' :
Exemple :
Select *
From DEPARTEMENT ;

ISIMG

- 18 -

Base de donnes II

Wided BOUCHELLIGUA

2007/2008

Pour ne pas avoir de redondance (de doubles) dans la slection on utilise


l'expression 'distinct'
Exemple :
Select distinct nomdep
From DEPARTEMENT ;
Le rsultat de la requte est :
nomdep
Dpartement
Analyse
Maintenance
Recherche

3. Requte avec la clause "WHERE"


La clause WHERE permet d'inclure une condition la slection, on l'appelle aussi
restriction.
Sa syntaxe est :
Select < liste des attributs (colonnes) >
From < liste des tables >
Where < expression logique > ;
Exemple : On veut le numro d'employ, le nom ainsi que le numro de dpartement
des employs qui appartiennent au dpartement n30 et dont leur fonction est
ouvrier.
Pour cela on tape la requte suivante :
Select noemp, nomemp, nodep
From EMPLOYES
Where nodep = 30 and fonction = "Ouvrier" ;

ISIMG

- 19 -

Base de donnes II

Wided BOUCHELLIGUA

2007/2008

EMPLOYES
Noemp nomemp fonction

noresp datemb sala

comm nodep

01

Legros

Programmeur 02

01/06/81 150000 4000

60

02

Perrin

Ingnieur

08

11/08/82 200000 500

30

03

Manitou Ouvrier

01

25/07/83 140000 7850

30

04

James

Ouvrier

01

19/09/84 140000 1000

45

05

Smith

Ouvrier

01

13/12/85 145000 500

30

06

Lewitski Stagiaire

02

29/12/86 30000 600

60

07

Martin

12

07/01/86 140000 3000

50

Ouvrier

On obtient donc la restriction suivante :


noemp

nomemp

nodep

03

Manitou

30

05

Smith

30

Il existe diffrentes catgories d'oprateurs pour exprimer une expression logique :


Connecteurs logiques
AND
OR
NOR (ngation du OR)
Exemple : nodep = 30 OR fonction ='Ouvrier' --> On doit satisfaire au moins une
condition il faut soit tre du dpartement 30 soit Ouvrier voire les deux.

Oprateurs arithmtiques :

+
*
/
^

NB : On peut utiliser des oprateurs arithmtiques dans le rsultat d'une requte.


Par exemple on peut afficher le salaire, la commission ainsi que la somme des deux
des employs qui sont ouvrier.
Voici l'illustration de lexemple :
Select nomemp, sala, comm, sala+comm
From EMPLOYES

ISIMG

- 20 -

Base de donnes II

Wided BOUCHELLIGUA

2007/2008

Where fonction = " Ouvrier ";


Ce qui donne :
nomemp

sala

comm

sala+comm

Manitou

140000

7850

147850

James

140000

1000

141000

Smith

145000

500

145500

Martin

140000

3000

143000

Comparateurs de comparaison :

=
!= ou <> (diffrent)
<
>
<= (infrieur ou gale)
>= (suprieur ou gale)

Comparateurs de chanes de caractres :


Between . And
Il permet de slectionner une valeur se trouvant dans un intervalle. Ce comparateur
fonctionne aussi bien avec une chane de caractre qu'avec des nombres.
Exemple : On veut les employs qui on un salaire compris entre 140000 et 200000.
Select noemp, nomemp
From EMPLOYES
Where sala Between 140000 and 200000;
On pourra noter qu'il peut tre remplacer par la combinaison de 2 oprateur <, >
Not between and
Il permet de slectionner les valeurs qui ne font pas partie de l'intervalle.
In
Ce comparateur sert slectionner une valeur parmi une liste de valeur.
Exemple :
On veut le nom et numro des employs qui font partie du dpartement 30, 50 ou 45.

ISIMG

- 21 -

Base de donnes II

Wided BOUCHELLIGUA

2007/2008

Select noemp, nomemp


From EMPLOYES
Where nodep IN( 30, 50, 45 );
On notera aussi que cette requte aurait pu tre ralis avec plusieurs = (nodep = 30
and nodep = 50 and nodep = 45)
Not in
Pour slectionner les valeurs qui ne sont pas dans le liste.
Like
Il permet de comparer du texte. Pour cela on lui ajoute des caractres spciaux :
- Le caractre '%' permet de remplacer une suite de caractre
Exemple : nomemp LIKE M% Slectionne tous les nomemp commenant par un M
- Le caractre '_' permet de remplacer un caractre dans une chaine de caractre.
Exemple : nomemp LIKE M_rtin On obtient tous les noms du type Martin, Murtin,
- Les caractres [-] permettent de slectionner dans un intervalle.
Exemple : nomemp LIKE [B-D]% On slectionne les nomemp dont la premire
lettre du nom est entre le B et le D.
Not like
Idem que ci-dessus except qu'on slectionne les valeurs extrieures.
-> Restriction sur les valeurs manquantes :
IS NULL
IS NOT NULL
On les utilise pour slectionner les lignes o il y a une valeur manquante.
Exemple : on veut connatre les employs o leur numro de responsable n'a pas
t saisi

ISIMG

- 22 -

Base de donnes II

Wided BOUCHELLIGUA

2007/2008

Select *
From EMPLOYES
Where noresp IS NULL;
Fonctions numriques prdfinies :
ABS (c'est la valeur absolue)
GREATEST (exemple : GREATEST(sala, comm) qui sert savoir laquelle des
valeurs d'un ensemble est la plus grande.
LEAST (pour connatre la valeur la plus basse, on l'utilise de la mme faon
que GREATEST)

4. Requte avec la clause "ORDER BY"


Cette clause sert classer par ordre croissant ou dcroissant le rsultat d'une
requte. Par dfaut il tri par ordre croissant. Les extensions asc et desc indiquent
respectivement si le tri est croissant ou dcroissant.
Exemple :
On veut la liste des employs du dpartement 30 par ordre croissant de leur salaire.
Select noemp, nomemp, fonction, sala
From EMPLOYES
Where nodep = 30
Order by sala asc ;
( noter que le asc n'est pas obligatoire ici car il est mis par dfaut)
EMPLOYES
Noemp nomemp

ISIMG

fonction

noresp datemb

sala

comm nodep

01

Legros Programmeur

02

01/06/81 150000 4000

60

02

Perrin

Ingnieur

08

11/08/82 200000

500

30

03

Manitou

Ouvrier

01

25/07/83 140000 7850

30

04

James

Ouvrier

01

19/09/84 140000 1000

45

05

Smith

Ouvrier

01

13/12/85 145000

500

30

06

Lewitski

Stagiaire

02

29/12/86 30000

600

60

07

Martin

Ouvrier

12

07/01/86 140000 3000

50

- 23 -

Base de donnes II

Wided BOUCHELLIGUA

2007/2008

Le rsultat :
noemp

nomemp

fonction

sala

03

Manitou

Ouvrier

140000

05

Smith

Ouvrier

145000

02

Perrin

Ingnieur

200000

On pourra aussi trier avec plusieurs critres. Par exemple on veut slectionner les
employs en les triant par salaire dcroissant et par ordre alphabtique des noms.
C'est dire que pour ceux qui auront le mme salaire ils seront classs dans l'ordre
alphabtique.
Select noemp, nomemp, fonction, sala
From EMPLOYES
Order by sala desc, nomemp asc ;
Le rsultat :
noemp

nomemp

fonction

sala

02

Perrin

Ingnieur

200000

01

Legros

Programmeur

150000

05

Smith

Ouvrier

145000

04

James

Ouvrier

140000

03

Manitou

Ouvrier

140000

07

Martin

Ouvrier

140000

06

Lewitski

Stagiaire

30000

5. Requtes multi-relations
Les requtes multi-relations reprsentent en fait les jointures. Une jointure sert
lier des champs de diffrentes tables, mettre une relation entre eux. Il faut que les
champs que l'on souhaite lier soient du mme type (cf chapitre 2). Pour tenter d'tre
plus clair regardons un cas de jointure sur un exemple :
EMPLOYES
Noemp nomemp

ISIMG

fonction

noresp datemb

sala

comm nodep

01

Legros Programmeur

02

01/06/81 150000 4000

60

02

Perrin

Ingnieur

08

11/08/82 200000

500

30

03

Manitou

Ouvrier

01

25/07/83 140000 7850

30

04

James

Ouvrier

01

19/09/84 140000 1000

45

05

Smith

Ouvrier

01

13/12/85 145000

30

- 24 -

500

Base de donnes II

Wided BOUCHELLIGUA

2007/2008

06

Lewitski

Stagiaire

02

29/12/86 30000

600

60

07

Martin

Ouvrier

12

07/01/86 140000 3000

50

DEPARTEMENT
nodep

nomdep

Ville

30

Dveloppement Marseille

35

Dveloppement

Nice

45

Analyse

Toulon

50

Maintenance

Paris

60

Recherche

Toulouse

On voudrait par exemple le numro et nom des employs travaillant dans le


dpartement 30 et 40, ainsi que le nom de ce dpartement. Donc on veut avoir pour
un employ son numro, son nom et le nom de son dpartement. Dans ce cas on
voit bien que le nom des dpartements, ne sont pas dans la table des EMPLOYES et
inversement le numro et nom des employs, ne sont pas dans celle des
DEPARTEMENT. Par consquent on a besoin des 2 tables et on a besoin de les "
lier " pour qu' chaque fois qu'on va avoir un numro de dpartement l'on est le nom
qui lui correspond. Voici la requte ncessaire :
Select noemp, nomemp, nomdep
From EMPLOYES, DEPARTEMENT
Where EMPLOYES.nodep = DEPARTEMENT.nodep
And EMPLOYES.nodep in (30, 40);
On obtient donc le rsultat suivant :
noemp

nomemp

nomdep

02

Perrin

Dveloppement

03

Manitou

Dveloppement

04

James

Analyse

05

Smith

Dveloppement

NB : Si on avait voulu afficher aussi le nodep, il aurait fallu prciser dans quelle table
on le choisissait. Il suffisait simplement de rajouter dans la ligne du select : Select
noemp, nomemp, nomdep, DEPARTEMENT.nodep
Astuce : On pourra donner des alias aux noms de tables pour viter de taper
chaque fois le nom de la table entirement dans la requte.
Voil la requte prcdente mais avec des alias :

ISIMG

- 25 -

Base de donnes II

Wided BOUCHELLIGUA

2007/2008

Select noemp, nomemp, nomdep


From EMPLOYES E, DEPARTEMENT D
Where E.nodep = D.nodep
And E.nodep in (30, 40);
Cette astuce ne sert pas uniquement pour viter d'crire le nom des tables en entier,
elle sert aussi dans le cas d'une auto-jointure (cf chapitre 2). Une auto-jointure est
une jointure d'une table sur elle mme. Pas de panique un exemple suit pour illustrer
ce qu'est une auto-jointure :
Exemple : On veut la liste des employs qui gagnent plus que leur responsable. Les
employs sont dans la table EMPLOYES et les responsables sont aussi des
employs donc ils sont aussi dans la mme table. Donc ici une auto-jointure est
indispensable car l'on doit mettre en relation les employs avec leur responsable. On
tape donc la requte suivante :
Select E.noemp, E.sal, R.nomemp, R.sala
From EMPLOYES E, EMPLOYE R (E pour la table des employs et R pour les
responsables)
Where E.noresp = R.noemp (On lit chaque employ avec son responsable)
And E.sala > R.sala ; (le salaire de l'employ qui est suprieur celui du
responsable)

6. Requtes avec fonction agrgats


Les fonctions agrgats permettent de faire du dnombrement, dterminer un
maximum, un minimum, faire des moyennes Par exemple au lieu d'avoir en sortie
la liste de tous les salaires on pourra avoir simplement la moyenne des salaires.
Voici la liste de ces fonctions :

COUNT permet de compter les nombres de valeurs d'un ensemble.


SUM permet de faire la somme des valeurs d'un ensemble.
AVG permet de calculer la moyenne des valeurs d'un ensemble.
MAX permet de calculer la valeur maximale d'un ensemble.
MIN permet de calculer la valeur minimale d'un ensemble.

Exemple : On veut la moyenne des salaires des employs qui sont ouvriers.
Select AVG (sala)
From EMPLOYES
Where fonction = "ouvrier " ;

ISIMG

- 26 -

Base de donnes II

Wided BOUCHELLIGUA

2007/2008

7. La clause "GROUP BY"


Cette clause sert grouper les rsultats d'une requte. Cela permet une meilleure
lisibilit.
Par exemple on voudra avoir la moyenne des salaires des employs par
dpartement. Pour cela on tape la requte suivante :
Select nodep, AVG(sala)
From EMPLOYES
Group by nodep;
Noemp nomemp

07

fonction

noresp datemb

sala

comm nodep

01

Legros Programmeur

02

01/06/81 150000 4000

60

02

Perrin

Ingnieur

08

11/08/82 200000

500

30

03

Manitou

Ouvrier

01

25/07/83 140000 7850

30

04

James

Ouvrier

01

19/09/84 140000 1000

45

05

Smith

Ouvrier

01

13/12/85 145000

500

30

06

Lewitski

Stagiaire

02

29/12/86 30000

600

60

Martin

Ouvrier

12

07/01/86 140000 3000

50

On a donc le rsultat suivant :


nodep

AVG (sala)

30

160667

40

140000

50

140000

60

90000

On a donc dans une colonne chaque dpartement et dans l'autre la moyenne des
salaires des employs de chaque dpartement.
NB : Il est possible de faire des groupes dans les groupes. Pour mieux comprendre,
faisons un exemple :
Exemple : On veut faire la moyenne des salaires par dpartement et par fonction au
sein de chaque dpartement et compter le nombre de personnes. Par exemple pour
comparer la moyenne des salaires des ouvriers par dpartement et de mme pour
les autres fonctions. Faisons la requte parti de la mme table EMPLOYES que
prcedemment :
Select nodep, fonction, COUNT(*), AVG (sala)

ISIMG

- 27 -

Base de donnes II

Wided BOUCHELLIGUA

2007/2008

From EMPLOYES
Group by nodep, fonction ; (on les groupe d'abord par nodep puis par fonction)
On obtient donc :
nodep

fonction

COUNT(*)

AVG(sala)

30

Ingnieur

200000

30

Ouvrier

142500

40

Ouvrier

140000

50

Ouvrier

140000

60

Programmeur

150000

60

Stagiaire

30000

Pour appliquer des restrictions sur ces " sous-tables " on utilise la commande
Having qui est en gros l'quivalent du Where pour les groupes.
Voici un exemple : On veut la liste des fonctions avec leur moyenne de salaire mais
seulement si il y a plus d'une personne qui a cette fonction.
Voil la requte :
Select fonction, COUNT(*), AVG (sala)
From EMPLOYES
Group by fonction
Having count(*) > 1 ;
Voil le rsultat dans une table :
fonction COUNT(*) AVG(sala)
Ouvrier

141250

La fonction ouvrier est la seule o il y a plus d'un employ qui a cette fonction

. Requtes imbriques
On parle de requtes imbriques lorsqu'on a une requte dans la clause " where "
ou " having " c'est dire lorsque l'on fait une requte l'intrieur d'une requte; on
parle aussi de sous-requtes. Donc on utilise le rsultat de la requte imbrique
pour raliser la requte. Pour mieux comprendre rien de mieux qu'un exemple :
Exemple : On veut la liste de tous les employs ayant la mme fonction que " Martin
". Il parat donc vident que l'on ne peut avoir cette requte directement ! La requte
imbrique vient nous sauver
ISIMG

- 28 -

Base de donnes II

Wided BOUCHELLIGUA

2007/2008

Select nomemp, fonction


From EMPLOYES
Where fonction = (Select fonction
From EMPLOYES
Where nomemp = Martin ");
On obtient donc :
nomemp

fonction

Manitou

Ouvrier

James

Ouvier

Smith

Ouvrier

Martin

Ouvrier

Exemple2 : On veut le numro et nom des dpartements o les employs ont un


salaire suprieur 140000. Au fait vous n'tes pas obligs de regarder le rponse de
suite vous pouvez aussi chercher avant
EMPLOYES
Noemp nomemp

fonction

noresp datemb

sala

comm nodep

01

Legros Programmeur

02

01/06/81 150000 4000

60

02

Perrin

Ingnieur

08

11/08/82 200000

500

30

03

Manitou

Ouvrier

01

25/07/83 140000 7850

30

04

James

Ouvrier

01

19/09/84 140000 1000

45

05

Smith

Ouvrier

01

13/12/85 145000

500

30

06

Lewitski

Stagiaire

02

29/12/86 30000

600

60

07

Martin

Ouvrier

12

07/01/86 140000 3000

50

DEPARTEMENT
nodep nomdep
30

Dveloppement Marseille

35

Dveloppement Nice

45

Analyse

Toulon

50

Maintenance

Paris

60
Recherche
Select distinct nodep, distinct nomdep
From DEPARTEMENT
Where nodep in (Select nodep
From EMPLOYES
Where sala > 140000);

ISIMG

Ville

- 29 -

Toulouse

Base de donnes II

Wided BOUCHELLIGUA

2007/2008

D'o le rsultat : On retient chaque dpartement o un employ gagne plus de


140000 et ensuite on affiche le nom du dpartement et son numro.
nodep nomdep
30

Dveloppement

60

Recherche

Cas particuliers : les requtes imbriques et corrles :


On les utilise lorsque l'on a besoin des informations de la requte principale dans la
sous requte. Comme cette notion semble difficile visualiser voil un exemple pour
tenter de mieux l'expliquer :
Exemple : On voudrait de numro de dpartement, le nom et le salaire d'un employ
qui touche plus que la moyenne des salaires de son dpartement. C'est dire que
pour un employ, on va mettre en relation grce son numro de dpartement les
employs de son dpartement, puis on va comparer son salaire avec la moyenne
des salaires de son dpartement.
Select nodep, nomemp, sala
From EMPLOYE X
Where sala > (Select AVG (sala)
From EMPLOYE
Where X.nodep = nodep ) ;

Requtes quantifies
On peut utiliser des requtes quantifies dans le cas o l'on a une requte
imbrique. Une requte imbrique, ou sous-requte, renvoie des valeurs et pour
filtrer ces valeurs on utilisera des oprateurs ; on parlera alors de requte quantifie.
Parmi ces oprateurs on a ANY, ALL et EXIST. Il est possible aussi de rajouter
cette liste l'oprateur IN mais comme on peut aussi l'utiliser dans des requtes sans
requtes imbriques nous avons prfr le dfinir en tant que simple oprateur. Voici
l'explicatif de ces oprateurs :
ANY : La condition expression > (ou <) ANY suivie d'une sous-requte teste si
l'expression est suprieure (ou infrieur) au moins un lment de l'ensemble de
valeurs fournies par la sous-requte qui ne doit comporter qu'un seul champ extrait
ALL : La condition expression > (ou <) ALL suivie d'une sous-requte teste si
l'expression est suprieure tous les lments de l'ensemble de valeurs fournies par
la sous-requte qui ne doit comporter qu'un seul champ extrait.
EXISTS : La condition EXISTS suivie d'une sous-requte a la valeur vrai si la sousrequte extrait un ensemble non vide de valeurs.
ISIMG

- 30 -

Base de donnes II

Wided BOUCHELLIGUA

2007/2008

Regardons ces oprateurs sur des exemples :


Exemple 1 : On veut le salaire, la fonction le numro d'employ et le numro de
dpartement des employs qui ont un salaire suprieur aux employs du
dpartement 30.
Noemp nomemp

fonction

01

Legros

Programmeur 02

01/06/81 150000 4000

60

02

Perrin

Ingnieur

08

11/08/82 200000 500

30

03

Manitou

Ouvrier

01

25/07/83 140000 7850

30

04

James

Ouvrier

01

19/09/84 140000 1000

45

05

Smith

Ouvrier

01

13/12/85 145000 500

30

06

Lewitski

Stagiaire

02

29/12/86 30000 600

60

07

Martin

Ouvrier

12

07/01/86 140000 3000

50

08

Trousselier Ingnieur

10

17/10/80 250000 4000

40

09

Challal

10

20/12/86 210000 2000

50

Ingnieur

noresp datemb sala

comm nodep

Voici la requte SQL :


Select sala, fonction, nomemp, nodep
From EMPLOYES
Where sala > all (Select sala
From EMPLOYES
Where nodep = 30);
On obtient donc la table : Le salaire le plus lev du dpartement 30 est celui de
Perrin qui est de 200000. Donc seul Trousselier et Challal ont un salaire suprieur.
salaire

fonction

noemp

nodep

250000

Ingnieur

Trousselier

40

210000

Ingnieur

Challal

50

Exemple 2 : On veut le salaire, la fonction, le nom et le n de dpartement des


employs qui ont un salaire suprieur au moins une personne du dpartement 30.
Select sala, fonction, nomemp, nodep
From EMPLOYES
Where sala > any (Select sala

ISIMG

- 31 -

Base de donnes II

Wided BOUCHELLIGUA

2007/2008

From EMPLOYES
Where nodep = 30);
On obtient donc :
sala

fonction

nomemp

nodep

150000

Programmeur Legros

60

200000

Ingnieur

Perrin

30

145000

Ouvrier

Smith

30

250000

Ingnieur

Trousselier

40

210000

Ingnieur

Challal

50

Le salaire minimum dans le dpartement 30 est de 140000 donc tous les employs
qui ont un salaire strictement suprieur 140000 sont slectionn mme si ils font
partis du dpartement 30.
Exemple 3 : On voudrait la fonction, le n, le nom d'employ et le n de dpartement
des employs qui sont responsables.
On garde la mme table des employs que prcdemment.
Select fonction, noemp, nomemp, nodep
From EMPLOYES R
Where EXISTS (Select *
From EMPLOYES
Where R.noemp = noresp ) ;
Voil le rsultat :
fonction

noemp nomemp

nodep

Programmeur

01

Legros

60

Ingnieur

02

Perrin

30

Ingnieur

08

Trousselier

40

Oprations ensemblistes
Les oprations ensemblistes s'utilisent pour crer une relation, une opration entre 2
requtes. On les utilise entre 2 clauses select. En gros avec les rsultats des deux
requtes on les met en relations grce l'oprateur ensembliste. Comme oprateurs
on a :

ISIMG

- 32 -

Base de donnes II

Wided BOUCHELLIGUA

2007/2008

UNION sert runir les n-uplets slectionns par les requtes. Par dfaut cet
oprateur supprime les redondances (doubles). Pour pouvoir garder les doubles on
utilise UNION ALL.
Exemple : on veut les employs qui sont ouvriers ou ceux qui appartiennent au
dpartement 30.
Select noemp
From EMPLOYES
Where Fonction = " ouvrier "
UNION
Select noemp
From EMPLOYES
Where noemp = 30;
NB: On pourra remarquer qu'ici l'UNION n'tait pas vraiment indispensable.
INTERSECT permet de renvoyer toutes les lignes communes aux requtes. Les
deux tables qui reprsentent les oprandes directs de INTERSECT doivent avoir le
mme nombre de colonnes, et les colonnes correspondantes doivent tre de types
donne compatibles. On l'utilise de la mme faon que UNION.
EXEPT permet de renvoyer les lignes du haut de la requte qui ne sont pas dans le
bas de la requte. Les deux tables qui reprsentent les oprandes directs de
EXCEPT doivent avoir le mme nombre de colonnes, et les colonnes
correspondantes doivent tre de types donne correspondantes. On l'utilise de la
mme faon que UNION.
Exemple : On souhaite avoir la liste des employs qui sont ouvriers mais qui ne font
pas partis du dpartement 30.
Select noemp
From EMPLOYES
Where Fonction = " ouvrier "
EXEPT
Select noemp
From EMPLOYES
Where noemp = 30 ;

ISIMG

- 33 -

Base de donnes II

Wided BOUCHELLIGUA

2007/2008

Chapitre III
Le Contrle de donnes sur Oracle
I. Introduction

Le SGBD Oracle sur le serveur (version serveur)


- Oracle entreprise
- Oracle workgroup server
Dans un systme htrogne o on trouve plusieurs types de machine la version
Oracle entreprise serait plus adquate entreprise serait plus adquate pour grer ce
systme diversifi.
Sur les postes client on trouve linterface SQL / plus et le module de connexion SQL /
net
Sur le march ces outils se prsente avec Oracle client ;
Avec ces outils client on peut se connecter sur la base de donne stocke sur le
serveur et manipuler ses donnes moyennant les droits daccs.

II. Opration de DBA


DBA : Data Base Administration,
Sur le serveur, on va crer la base de donnes comportant : tables, vue, cluster,
trigger, index, . La base de donne appartient son crateur qui doit tre une
personne ayant au moins les droits de connexion et dexploitation des ressources
Oracle.
Connect, Resource
Cet utilisateur peut tre lui-mme un DBA.
Loption Connect donne le droit de connexion et de consultation de la base.

ISIMG

- 34 -

Base de donnes II

Wided BOUCHELLIGUA

2007/2008

Loption resource donne le droit de cration, de modification et de suppression des


objets de la base. Loption DBA donne en plus deux autres options : la mise jour
des vues (crer, supprimer, modifier).
Le DBA par defaut
System / manager
User par defaut scott / tiger
1) Cration dun nouveau DBA
grant dba to <dba name> identified by <passwd dba>
2) Cration des nouveaux utilisateurs
Un DBA peut crer de nouveaux utilisateurs et il peut les retirer ou modifier leurs
identits.
Lors de la cration dun utilisateur on peut lui attribuer lune des option connect /
resource par la commande :
grant connect [resource] to <user name> identified by <mot de passe>
le DBA peut modifier lidentit dun utilisateur :
grant connect to user name identified by <passwd2-user>
pour retirer les droits un utilisateur on utilise la commande:
revoke [option] from user name ;
exempe revoke resource from scott;

III.

Oprations Client (utilisateur)

Le crateur de la base peut attribuer des droits daccs et des droits de mise
jour sur sa base au profit des autres utilisateurs cre par le DBA.
Pour attribuer des prvilges sur les objets locaux aux autres utilisateurs on
utilise :
grant <prvilge> on <nom objet> to {<user name> , public}
<prvilge> peut tre :
- select : consultation des donnes de lobjet (table, vue, )
- insert crer des nouvelles donnes sur les tables
- delete : suppression des donnes de la table
- update : m. j. des donnes
- alter : m. j. de la structure dune table
- Index : crer de nouveaux index sur la table
- All
Exemple :
Grant select, insert On Article to commerciale2
ISIMG

- 35 -

Base de donnes II

Wided BOUCHELLIGUA

2007/2008

Une fois lutilisateur commerciale2 est connect sur Oracle (nom, pw) il peut
consulter, insrer des nouveaux tuples de la table Article de lutilisateur commerciale.
Commerciale 2 connect
SQL > select * from commerciale.article
SQL> insert into Commerciale.article value ( , , ,)
SQL> update Commerciale.article set pu = 6500 X opration impossible X
Le propritaire de la base peut retirer les prvilges, quil a attribu aux autres
utilisateurs :
revoke <prvilges> on <objet> from <user name>

ISIMG

- 36 -

Base de donnes II