Professional Documents
Culture Documents
SQL dORACLE
-1-
-2-
-3-
0B
Architecture :
9B
3. La couche SQL : cette couche joue le rle dinterface entre le noyau et les
diffrents outils doracle. Ainsi tout accs la base de donnes est exprim en
langage SQL. Le rle de cette couche est dinterprter les commandes SQL , de
faire la vrification syntaxique et smantique et de les soumettre au noyau pour
excution
-4-
4. La couche PL/SQL : cette couche est une extension de la couche SQL puis que le
PL/SQL est une extension procdurale du SQL.
10B
-5-
Bref historique
1B
-6-
2B
-7-
Dfinition de donnes
3B
11B
Convention dcriture :
Les <> indique une obligation
Les () pourra tre rpt plusieurs fois, il faut juste les sparer par une virgule
Les [] indique une option.
Syntaxe simplifie :
31B
Syntaxe gnrale
32B
-8-
Dfinitions et exemples :
Une contrainte dintgrit est une rgle sur la table qui permet dassurer que les donnes
stockes dans la base de donnes soient cohrentes par rapport leur signification. Avec
oracle, on peut implmenter plusieurs contraintes dintgrit
Au niveau de la table : Lorsque la contrainte porte sur plusieurs colonnes simultanment
(cl primaire compose), il est obligatoire de dclarer la contrainte sur la table.
Au niveau de la colonne : se fait pour lensemble des contraintes condition quelle
porte sur une seule colonne.
Voici les explications des contraintes dfinies avec le CREATE plus haut :
-9-
La contrainte CHECK :
33B
Indique les valeurs permises qui peuvent tre saisies pour la colonne (champ ou attribut)
lors de lentre des donnes ou une condition laquelle doit rpondre une valeur insre.
La condition doit impliquer le nom dau moins une colonne. Les oprateurs
arithmtiques (+,*,/,-), les oprateurs de comparaisons et les oprateurs logiques sont
permis.
- 10 -
La contrainte UNIQUE : indique que les valeurs saisie pour les colonnes (champs ou
attributs) doivent tre unique Ce qui veut dire pas de Doublons.
Exemple 1
CREATE TABLE personne (num NUMBER CONSTRAINT pk5 PRIMARY KEY,
nom VARCHAR2 (15), prenom VARCHAR2 (15),
ville VARCHAR2 (20) DEFAULT 'Montral'
CONSTRAINT ck1 CHECK
(ville IN ('Montral','Laval','Saint-Jrme')));
Exemple 2
CREATE TABLE EMPLOYES
(
NUMEMP NUMBER(4,0) CONSTRAINT PK1EMP PRIMARY KEY,
NOM VARCHAR2(30) NOT NULL,
PRENOM VARCHAR2(30) CONSTRAINT CTPRENOM NOT NULL,
CODEDEP CHAR(3) DEFAULT 'INF' CONSTRAINT CKDEPT CHECK (CODEDEP IN
('INF','RSH','CMP','GEM')),
SALAIRE NUMBER (8,2) CHECK (SALAIRE > 20000)
);
- 11 -
12B
Explications et exemple
VARCHAR2(n)
CHAR(n)
LONG
NUMBER(n,d)
DATE
Donne de type date situe dans une plage comprise entre le 1er
janvier 4712 av JC et le 31 dcembre 9999 ap JC stockant
l'anne, mois, jour, heures, minutes et secondes
LONG RAW
BLOB
CLOB
HU
- 12 -
13B
<ALTER TABLE>
Il est parfois ncessaire de modifier la structure dune table, la commande ALTER
TABLE sert cela. Cette commande change la structure de la table mais pas son contenu.
Les types de modifications acceptes sont les suivants:
Ajout dune nouvelle colonne la table avec ses contraintes
Augmente ou diminuer la largeur dune colonne existante
Changer la catgorie dune colonne, dobligation optionnelle ou vice versa (NOT
NULL NULL ou vice versa)
Spcification dune valeur par dfaut pour une colonne existante
Changer le type de donnes dune une colonne existante
Spcification dautres contraintes pour une colonne existante
Activer ou dsactiver une contrainte
Dtruire une contrainte.
Loption ADD
34B
Cette option permet dajouter une colonne ou une contrainte une table existante.
Attention!!
Si la table contient des valeurs, alors la colonne ajoute doit tre mise jour.
Si une contrainte est ajoute une colonne alors que celle-ci contient dj des donnes
qui ne correspondent pas la contrainte, alors la modification de la structure de la table
sera refuse.
Exemples :
Voici la commande CREATE initiale pour la table Employes
CREATE TABLE Employes(NumEmp number, nom varchar2(15), prenom
varchar2(20));
ALTER TABLE Employes ADD (Salaire NUMBER (8,2));
Permet dajouter la colonne Salaire la table Employes
- 13 -
Employes
Loption MODIFY:
35B
Cette option permet de modifier le type de donnes, la valeur par dfaut et la contrainte
de NOT NULL sur une table dj existante. Il est impossible de raccourci la taille dune
colonne (la longueur des donnes) si celle-ci contient des donnes.
ALTER TABLE Employes MODIFY (nom NOT NULL);
Loption ENABLE /DISABLE
Cette option sert activer ou dsactiver une contrainte.
ALTER TABLE Employes DISABLE Primary Key;
Loption DROP
36B
Cette option sert supprimer une contrainte sur une table dj existante. Lorsque
14B
- 14 -
15B
- 15 -
Manipulation de donnes
4B
16B
Syntaxe 1 : la syntaxe qui suit permet dinsrer des valeurs pour toute une range (une
ligne ou un enregistrement) dans une table
- 16 -
37B
- 17 -
Exemple 2
CREATE SEQUENCE seq2
INCREMENT BY 2
START WITH 20;
START WITN n: n indique la valeur de dpart de la squence. Dans une squence
croissante, la valeur par dfaut est la valeur minimale, et dans une squence
dcroissante la valeur par dfaut est la valeur maximale.
INCREMENT BY n: n est le PAS. Pour prciser lintervalle entre les nombre gnrs.
Par dfaut cette valeur est 1. le nombre n peut tre positif pour gnrer une squence
croissante ou ngatif pour gnrer une squence dcroissante.
MAXVALUE n: n indique la valeur maximale de la squence. Par dfaut n=10**27
pour une squence ngative et n=-1 pour une squence ngative.
MINVALUE n : n indique la valeur maximale de la squence. Par dfaut n=-10**27
pour une squence dcroissante et n=1 pour une squence croissante.
- 18 -
CYCLE : indique que la squence continue gnrer des valeurs partir de la valeur
minimale une fois atteinte la valeur maximale pour une squence croissante et
contrairement pour une squence dcroissante.
NEXTVAL : pour augmenter la squence du PAS et obtenir une valeur.
CURRVAL : pour obtenir la valeur courante de la squence.
ATTETION !!!:
Ne jamais utiliser une squence avec CYCLE pour gnrer des valeurs de cl
primaire
Lorsquun enregistrement est supprim de la table, le numro de squence
correspondant nest pas rcupr.
Lors de linsertion dun enregistrement, sil y a violation dune contrainte
dintgrit (lenregistrement na pas t insr) le numro de squence est
perdu.
La commande UPDATE
17B
Syntaxe simplifie :
- 19 -
38B
La cluse WHERE permet de fixer la condition sur les donnes de mise jour (UPDATE).
Cette clause est utilise galement avec DELETE et SELECT.
Signification
Exemple
galit
<> ou != ou ^=
Ingalit ou diffrent
>
Plus grand
<
Plus petit
>=
<=
LIKE
salaire = salaire
+(salaire*0.5)
complter la chaine de
caractre.
NOT LIKE
- 20 -
complter la chaine de
caractre.
IN
NOT IN
IS NULL
IS NOT NULL
BETWEEN x AND Y
et y
salaire = salaire
+(salaire*0.5)
WHERE salaire BETWEEN
9000 AND 16000 ;
NOT BETWEEN x
AND y
entre x et y
ANY
ALL
EXISTS
Si la colonne existe
NOT EXISTS
La commande DELETE
18B
- 21 -
Pour des raisons de scurit, excuter cette commande jute aprs la commande
SELECT afin dtre certains des enregistrements que lon va supprimer
Lors de la suppression des donnes, les contraintes dintgrit doivent tre rptes. .
Il est impossible de supprimer une valeur de la cl primaire si cette valeur est rfre
par une valeur de la cl trangre sauf si loption ON DELETE CASCADE est dfinie;
dans ce cas TOUS les enregistrements de la table enfant (table de la cl trangre)
qui rfrent la cl primaire supprime seront supprimer.
Si loption ON DELETE CASCADE nest pas dfinie alors pour supprimer une cl
primaire rfrence il faut opter pour une des solutions suivante :
Syntaxe
- 22 -
La commande SELECT
19B
La commande SELECT est la commande le plus simple utiliser avec SQL. Cette
commande naffecte en rien la base de donnes et permet dextraire des donnes
dune ou plusieurs tables. La syntaxe simplifie nutilise pas de jointure et elle se
prsente comme suit :
Exemples
SELECT * FROM employes;
- 23 -
- 24 -
20B
Ces fonctions sont utilises pour traiter des groupes de ranges et d'afficher un seul
rsultat. Mme si ce sont des fonctions de groupement, elles ne s'utilisent pas tout le
temps avec la clause GROUP BY.
Les fonctions MIN et MAX : ce sont des fonctions qui s'utilisent pour afficher la
valeur MIN (ou MAX) parmi l'ensemble des valeurs de la colonne indique.
Exemple
SELECT MAX (NOTE) FROM RESULTATS WHERE CODE_COURS ='KED';
39B
AVG s'utilise pour obtenir une valeur moyenne des valeurs de la colonne indique
SUM s'utilise pour obtenir une valeur totale des valeurs de la colonne indique
Exemple
SELECT AVG (NOTE) FROM RESULTATS WHERE CODE_COURS ='KED';
Les fonctions VARIANCE et STDDEV: Pour calculer la variance et l'cart type sur les
valeurs d'une colonne
- 25 -
Exemples
SELECT CODEPRG, COUNT(CODEPRG)
FROM ETUDIANTS
GROUP BY CODEPRG;
- 26 -
5B
Une jointure est une opration relationnelle qui sert chercher des lignes ou des
enregistrements partir de deux ou plusieurs tables disposant d'un ensemble de valeur
communes, en gnral les cls primaires.
Produit cartsien
40B
Le produit cartsien est une requte de slection qui met en jeux plusieurs tables. Pour
deux tables, la slection consiste afficher la premire ligne de la premire table avec
toutes les lignes de la deuxime table, puis la deuxime ligne de la premire table avec
toutes les lignes de la deuxime table et ainsi de suite. Ce type de slection implique
beaucoup de redondances.
Exemple
SELECT NOM, PRENOM, NOMPROG
FROM ETUDIANTS,PROGRAMME;
- 27 -
Jointure simple:
41B
Une jointure simple consiste est un produit cartsien avec un INNER JOIN faisant ainsi
une restriction sur les lignes. La restriction est fate sur l'galit de la valeur de deux
champs (cas de deux tables) qui sont gnralement les cls primaires.
Exemple
SELECT NOM, PRENOM, NOMPROG
FROM ETUDIANTS E INNER JOIN PROGRAMME P
ON E.CODEPRG =P.CODEPRG;
AUTRE EXEMPLE
SELECT nom,prenom, description, note
FROM ((etudiant E INNER JOIN NOTE ON E.numad = R.numad)
INNER JOIN cours C ON C.code_cours = R.code_cours);
Jointure externe
42B
- 28 -
Dans le cas d'une jointure externe, il faut faire suivre la colonne pour laquelle il nest pas
obligatoire d'avoir des lignes correspondant l'galit par loprateur LEFT OUTER
JOIN ou RIGHT OUTER JOIN
Exemple
Cette requte ramne tous les tudiants y compris ceux qui ne sont pas inscrits dans un
programme
SELECT NOM, PRENOM, NOMPROG
FROM ETUDIANTS E LEFT OUTER JOIN PROGRAMME P ON
E.CODEPRG=P.CODEPRG;
43B
IMPORTANT:
44B
Dans le cas d'une jointure externe, il faut faire suivre la colonne pour laquelle il nest pas
obligatoire d'avoir des lignes correspondant l'galit par loprateur LEFT OUTER
JOIN ou RIGHT OUTER JOIN
Lorsqu'un champ slectionn est prsent dans plus d'une table alors il faut le prcder
du nom de la table partir de laquelle on dsire l'extraire.
Exemple
Vous pouvez donner un alias aux noms de tables afin de faciliter la rfrence aux tables.
Cependant si un alias est donn alors, il faudra utiliser l'alias la place du nom de la
table.
- 29 -
6B
Une sous requte est une requte avec la commande SELECT imbrique avec les autres
commandes (UPDATE, INSERT DELETE et CREATE)
Une sous-requte peut tre utilise dans les clauses suivantes :
21B
=,
!=
,<
,<=
,>
,>=
,et
IN.
Cette requte ramne les numro dadmission (NUMAD)des tudiants dont la note en
KED est plus petite que celle de ltudiant dont le numro dadmission est 100 pour le
mme cours (CODE_COURS)
SELECT NUMAD FROM RESULTATS
WHERE CODE_COURS='KED' AND NOTE <
(SELECT NOTE FROM RESULTATS
WHERE NUMAD=100 AND CODE_COURS='KED');
Quelle est-la requte qui ramne les noms des tudiants et non leur numro ?
- 30 -
Rponse
SELECT E.NUMAD, E.NOM,R.NOTE FROM RESULTATS R, ETUDIANTS E
WHERE E.NUMAD= R.NUMAD
AND CODE_COURS='KED'
AND NOTE <
(SELECT NOTE FROM RESULTATS
WHERE NUMAD=100 AND CODE_COURS='KED');
On utilise loperateur ANY pour que la comparaison se fasse pour toutes les
valeurs retourne. Le rsultat est vrai si au moins une des valeurs rpond la
comparaison
On utilise loperateur ALL pour que la comparaison se fasse pour toutes les
valeurs retourne. Le rsultat est vrai si toutes les valeurs rpondent la
comparaison
- 31 -
Pour la table rsultat suivante, les sorties des requtes avec ANY et ALL sont les
suivant :
22B
- 32 -
Ce type de sous-requte permet dinsrer des donnes dans une table partir dune autre
table. La sous requte est utilise la place de la clause VALUES de la requte principale
et peut retourner plusieurs rsultats.
23B
Ce type de sous requte permet de crer une table partir dune autre table. La nouvelle
table contient les valeurs de la sous-requte
EXEMPLE
La requte suivante permet de crer la table des notes du cours KED
CREATE TABLE NOTEKED (NUMADMISSION,NOTEKED)
AS SELECT NUMAD,NOTE FROM RESULTATS WHERE CODE_COURS='KED';
OU
CREATE TABLE NOTEKED (NUMADMISSION PRIMARY KEY ,NOTEKED)
AS SELECT NUMAD,NOTE FROM RESULTATS WHERE CODE_COURS='KED';
QUESTION
Quelle-est la requte qui permet DE crer une table NOTESKED qui va avoir comme
attributs NOMETUDIANT, PRENOMETUDIANT,TITRECOURS,NOTEKED
- 33 -
REPONSE
CREATE TABLE NOTESKED (NOMETUDIANT,
PRENOMETUDIANT,TITRECOURS,NOTEKED)AS
SELECT NOM, PRENOM,TITRE,NOTE
FROM ETUDIANTS E INNER JOIN RESULTAT R ON E.NUMAD=R.NUMAD
INNER JOIN COURS CR ON CR.CODE_COURS=R.CODE_COURS WHERE
R.CODE_COURS='KED' ;
Remarque : Parfois, il est utile de crer une table ayants les mmes attributs que la table
principale mais sans avoir les valeurs de celle-ci. Dans ce cas il suffit de mettre une
clause WHERE impossible dans la slection.
24B
Dans ce cas le rsultat retourn par la sous-requte doit contenir une seule range.
UPDATE RESULTATS SET NOTE =
(SELECT AVG(NOTE) FROM RESULTATS WHERE CODE_COURS ='KEG')
WHERE NOTE <60 AND CODE_COURS ='KEG';
Requtes corrles
25B
Question : comment avoir tous les tudiants qui sont dans le mme programme que
ltudiant dont le nom est PATOCHE
SELECT * FROM ETUDIANTS
WHERE CODEPRG = (SELECT CODEPRG FROM ETUDIANTS WHERE
NOM='PATOCHE');
- 34 -
Question
Comment peut-on avoir les tudiants (nom et prnoms) qui ont la mme note que
ltudiant numro 100 et dans le cours KED
Rponse
SELECT * FROM ETUDIANTS
WHERE NUMAD IN
(SELECT NUMAD FROM RESULTATS WHERE CODE_COURS ='KED' AND
NOTE =
(SELECT NOTE FROM RESULTATS WHERE CODE_COURS='KED' AND
NUMAD =100));
- 35 -
Le nombre de colonnes renvoyes par SELECT 1 doit tre le mme que celui
renvoy par SELECT 2
Exemple
SELECT NOM, PRENOM FROM ETUDIANTS
INTERSECT
SELECT NOM, PRENOM FROM ENSEIGNANTS
ORDER BY 1
Permet de ramener tous les tudiants qui sont en mme temps des enseignants.
Loprateur UNION
Cet oprateur renvoi lensemble des lignes des deux tables. Si des lignes sont
redondantes elles sont renvoyes une seule fois. Pour renvoyer toutes les lignes, utiliser
loption ALL
Les mmes contraintes qui sappliquent pour INTERSECT sappliquent pour UNION
- 36 -
Syntaxe
Instruction SELECT1
UNION [ALL]
Instruction SELECT 2
[ORDER BY].
Loprateur MINUS
Cet oprateur renvoi lensemble des lignes de la premire table MOINS les lignes de la
deuxime table.
Les mmes contraintes qui sappliquent pour INTERSECT sappliquent pour MINUS
Syntaxe
Instruction SELECT1
MINUS
Instruction SELECT 2
[ORDER BY].
- 37 -
7B
Des donnes hirarchiques sont des donnes stockes dans une table avec une relation
rcursive (relation sur la mme table ou entit) dans une cardinalit maximale est 1. La
table contient au moins deux colonnes : une colonne de cl primaire et une colonne
dfinissant la cl trangre (cl enfant) et qui rfre la cl primaire (cl parent). Un
exemple de la table EMPLOYES dans laquelle on souhaite mettre en vidence la
hirarchisation entre les employs (employs avec les responsables hirarchiques).
Exemple : Dans la table EMPLOYES, on voit bien les employs avec leur responsable
direct. Comme par exemple DUBOIS a son responsable qui est ROY , et ROY a son
responsable Cristophe .
Pour mettre en vidence la hirarchie dans une table lors dune slection, la commande
SELECT est accompagne de deux nouvelles clauses. CONNECT BY et START WITH
- 38 -
Cette requte va nous donner tous les employs sous lemploy Patoche
SELECT num, NOM,NUMRES,LEVEL
FROM EMPLOYES
START WITH NOM ='Patoche'
CONNECT BY PRIOR NUM = NUMRES;
CONNECT BY: cette clause est obligatoire, elle permet de connecter deux colonnes (cl
primaire et cl enfant) dans une mme table et indique au systme comment prsenter
linformation (dans notre cas, si on souhaite avoir les subordonnes ou les responsables)
PRIOR : indique le sens du parcours de la hirarchie (ou de larbre).
Selon quil soit plac gauche, on parcourt larbre vers le bas (on extrait les
subordonns), ou droite, on parcourt larbre vers le haut (on extrait les suprieurs)
SELECT num, NOM,NUMRES,LEVEL
FROM PERSONNE
START WITH NOM='DUBOIS'
CONNECT BY PRIOR NUM = NUMRES;
SELECT num, nom,numres,level
FROM PERSONNE
START WITH NOM='DUBOIS'
CONNECT BY NUM = PRIOR NUMRES;
- 39 -
- 40 -
8B
Dans ce qui suit, la table DUAL est utilise pour afficher certaines informations systme
(comme SYSDATE)
La table DUAL est une table avec une seule colonne et une seule ligne. Elle est accessible
par tous les usagers en lecture seule. Elle permet dtre une source de donnes lorsque la
source nest pas connue. On pourrait y extraire la prochaine valeur dune srie, la date
du jour ..
Oracle offre plusieurs fonctions pour manipuler des dates, des chanes de caractres et
des nombres. Ces fonctions seront utiles dans les situations suivantes :
26B
Fonctions et
Rles
Exemples
LENGTH :
Renvoie la
LENGTH
longueur
(colonne)
dune chaine
de caractre
UPPER
Conversion en
UPPER (colonne)
letter
syntaxes
majuscule
LOWER
Conversion en
Lower (colonne)
minuscule
- 41 -
INITCAP
Premire
(colonne)
letter en
majuscule
||
Concatenation
LPAD
remplir
LPAD (colonne,
gauche.
longueur,chaine
Elle permet
de remplissage)
de gnrer un
Colonne 1 ||
colonne 2
chaine de
longueur
dtermine, et
dont le dbut
la chaine
passe en
paramtre
RPAD
Fait la mme
chose que
LPAD sauf
que le
remplissage
se fait droite
LTRIM
Supprime une
LTRIM
chaine de
(colonne,chaine)
caractres au
dbut
RTRIM
Fait la mme
chose que
- 42 -
LTRIM
droit.
DECODE
Permet de
DECODE
dcoder des
DECODE (CODETYPE,1,'ROMAN',
(colonne, code1,
codes au
2,'ESSAI',3,'MMOIRE', 4, 'THESE')
chaine1,
moment de la
FROM LIVRES;
Code2, chaine2..)
slection.
SUBSTR
Permet
SUBSTR
dextraire une
(colonne,m,N) ou
portion
longueur 5.
SUBSTR (Chaine
spcifique
,m,N) ou
dune chane
partir de la fin
de caractres
REPLACE
Remplace
REPLACE
dans chaine1,
FROM LIVRES;
(chaine1 chaine2,
lachaine2 par
chaine3)
cahine3
employ)
INSTR
Retourne la
position dune
chaine dans
une autre.
- 43 -
27B
Fonctions et
Rles
Exemples
Obtenir la date du
syntaxes
SYSDATE
jour
ADD_MONTHS
Ajoute un nombre
ADD_MONTHS (date,
nb de mois une
FROM EMPRUNT
nb)
date. Si nb est
ngatif, on enlve
des mois
NEXT_DAY
Avance la date
jusquau jour
DUAL;
spcifi
LAST_DAY
Retourne la date
du dernier jour du
mois
MONTHS_BETWEEN
Retourne le
nombre de mois
28B
Fonctions et
Rles
Exemples
ROUND
Reoit deux
ROUND (nombre,
arguments : le
m)
nombre
arrondir et m
qui correspond
immdiatement suprieur
syntaxes
au nbre de
chiffres lors de
larrondi
- 44 -
TRUNC (nombre,
Supprime la
m)
partie
fractionnelle de
son argument
numrique
CEIL
Retourne
lentier
immdiatement
suprieur son
argument
FLOOR
Retourne
lentier
immdiatement
infrieur son
argument
POWER
lve nombre
POWER (nombre,
la puissance n
n)
SQRT
Calcule la
SQRT (nombre,n)
racine carre
dun nombre
MOD.
Calcule le
MOD
modulo dun
(nombre1,nombre2)
nombre
Fonctions de conversion
29B
- 45 -
Fonctions et
Rles
Exemples
TO_DATE
(chaine,
VALUES ('EX1C31',12,
modelededate)
syntaxes
TO_CHAR avec
les dates
(DATEEMPRUNT,'YYYY-MONTH-DD')
TO_CHAR
FROM EMPRUNT;
(valeur_date,
formatDate)
de caractres peuvent
tre utilises
TO_CHAR avec
les nombres
'$999,999.99')
TO_CHAR
un autre format..les
FROM SYEMP;
(nombre, format)
formats numriques
sont :
9 affiche une valeur
- 46 -
Inverse de la fonction
prcdente
VARCHAR2(10));
INSERT INTO EXEMPLE VALUES ('12.78');
SELECT TO_NUMBER (CHAINE 1,'99.99')
FROM EXEMPLE;
affiche 12,78 (ce qui est nombre)
30B
Formats
Exemples
Plages de
valeurs
DD
TO_CHAR (DATEEMPRUNT,'DD')
MM
TO_CHAR (DATEEMPRUNT,'MM-
Mois 1-12
DD')
YY
YYY
TO_CHAR (DATEEMPRUNT,'YY-MM-
Deux derniers
DD')
chiffres de lanne
TO_CHAR (DATEEMPRUNT,'YYY-
- 47 -
MM-DD')
YYYY
chiffres de lanne
TO_CHAR (DATEEMPRUNT,'YYYYMM-DD')
YEAR
TO_CHAR (DATEEMPRUNT,'YEAR-
Anne en
MM-DD')
majuscule
year
Anne en
minuscule
Year
Premire lettre en
majuscule
MON
3 premire letters
du mois
MONTH
TO_CHAR (DATEEMPRUNT,'YYYY-
Le mois en
MONTH-DD')
majuscule
month
Le mois en
minuscule
DAY
TO_CHAR (DATEEMPRUNT,'YYYY-
Jour de la
MONTH-DAY')
semaine
day
Jour de la
semaine en
minuscule
DDD
Numro du jour
dans lanne : de 1
366 (selon
lanne
Numro du jour
dans la semaine
WW
No de la semaine
dans lanne
- 48 -
Les vues
Dfinition
Une vue cest une table dont les donnes ne sont pas physiquement stockes mais se
rfrent des donnes stockes dans dautres tables. Cest une fentre sur la base de
donnes permettant chacun de voir les donnes c0mme il le souhaite.
On peut ainsi dfinir plusieurs vues partir dune seule table ou crer une vue partir de
plusieurs tables. Une vue est interprte dynamiquement chaque excution dune
requte qui y fait rfrence.
Avantages
Les vue permettent de protger laccs aux tables en fonction de chacun des utilisateurs.
On utilise une vue sur une table et on interdit laccs aux tables. Cest donc un moyen
efficace de protger les donnes
Les vues permettent de simplifier la commande SELECT avec les sous requtes
complexes. On peut crer une vue pour chaque sous-requte complexe, ce qui facilite sa
comprhension
Il est possible de rassembler dans un seul objet (vue) les donnes parpilles
Une vue se comporte dans la plus part des cas comme une table. On peut utiliser une vue
comme source dinformation dans les commandes SELECT, INSERT, UPDATE ou
DELETE. Une vue est cre laide dune sous-requte.
Syntaxe
CREATE [OR REPLACE ][FORCE] VIEW <nom_de_la_vue> AS <sou_requte> [WITH
CHECK OPTION]
OR REPLACE : commande optionnelle qui indique lors de la cration de la vue de
modifier la dfinition de celle-ci ou de la crer si elle nexiste pas
FORCE : permet de crer la vue mme si les sources de donnes nexistent pas.
WITH CHECK OPTION : cette option permet de contrler laccs la vue et par
consquent la table dont elle est issue.
- 49 -
Contraintes dutilisation
Vous ne pouvez pas :
Insrer dans une table partir dune vue, si la table contient des champs
NOT NULL et qui napparaissent dans la vue il yaura violation de
contraintes dintgrit
Une jointure
De manire gnrale, on peut dire que les commandes SQL INSERT, UPDATE et
DELETE ne peuvent sappliquer qua une vue utilisant une table avec restriction et
slection.
Exemple s
CREATE VIEW Eleves as
select numad, nom, prenom
from etudiants;
insert into Eleves values (100,'nom1','prn1');
CREATE VIEW ElevesDeMonteral as
select numad, nom, prenom,ville
from etudiant1 where Ville ='MONTREAL'
WITH CHECK OPTION;
insert into eleves values (21,'nom3','prn3','dallas');
Linstruction INSERT va renvoyer une erreur cause du WITH CHECK OPTION
- 50 -
- 51 -
Les synonymes :
Les synonymes est une autre dsignation pour les objets (vue, tables, squence..) de la
base de donnes. Il est utilis pour faciliter laccs un objet. Par exemple au lieu
daccder une table via un chemin daccs (saliha.employes) on utilise un synonyme.
Un synonyme peut tre public, ou priv. Par dfaut un synonyme est priv.
Syntaxe
CREATE [PUBLIC] SYNONYM <nom_du_sysnonyme> FOR <nom_objet>
La cration dun synonyme PUBLIC ne peut se faire que par ladministrateur.
Exemple
CREATE PUBLIC SYNONYM syemp FOR scott.emp;
Ainsi au lieu de faire :
SELECT * FROM scott.emp on peut faire SELECT * FROM syemp;
DROP PUBLIC SYNONYM <nom_synonyme>
La cration dun synonyme non public se fait comme suit
Syntaxe
CREATE SYNONYM <nom_du_sysnonyme> FOR <nom_objet>
Et la destruction dun synonyme non public se fait par :
DROP SYNONYM <nom_synonyme>
Pour modifier un synonyme, il faut le supprimer puis le recrer.
- 52 -
Les privilges :
La commande GRANT permet dattribuer des droits des utilisateurs sur vos objets.
La commande REVOKE permet de supprimer des privilges.
La commande GRANT
Syntaxe
On peut attribuer plusieurs privilges, mais il faut les sparer par une virgule
On peut prciser plusieurs colonnes, en autant quelles soient spares par une
virgule
WITH GRANT OPTION, permet lusager qui on vient dattribuer des droits
dattribuer les mmes droits dautres usagers sur le mme objet.
Exemple :
GRANT SELECT,INSERT ON etudiant TO mathieu
GRANT ALL on employe TO PUBLIC
GRANT SELECT ON department TO martin WITH GRANT OPTION.
La commande REVOKE
- 53 -
Les rles :
Un rle reprsente un ou plusieurs privilges. On cre des rles lorsquun ensemble de
privilges vont tre attribus plusieurs usagers. Il existe des rles dj prdfinis.
Le rle CONNECT. Ce rle permet un usager de se connecter la base de
donnes. Il na de sens que si dautres privilges lui sont accords.
Le rle RESOURCES : ce rle permet un utilisateur de crer ses propres objets.
Le rle DBA, ce rle permet dattribuer un usager des rles dadministration.
Cration dun ROLE
CREATE ROLE <nom_du_role>
Exemple
CREATE ROLE role1
Attribuer des privilges un ROLE
GRANT <privileges> ON <nom_objet>TO <nom_role>
Exemple
GRANT SELECT, UPDATE, INSERT ON etudiants TO role1
Attribuer un ROLE un utilisateur.
GTRANT <nom_role> TO <nom_usager>
GRANT role1 TO scott, martin, mathieu.
Dtruire un ROLE par DROP <nom_du role>
Les transactions
COMMIT: elle permet dofficialiser une mise jour (INSERT, UPDATE, DELETE) ou
une transaction (srie de commandes de manipulation de donnes effectues depuis le
derniers COMMIT) sur la base de donnes.
ROLLBACK [TO nom_save_point]: permet dannuler une transaction (un COMMIT).
SAVEPOINT : permet de fixer des points de sauvegarde.
Syntaxe : SAVEPOINT <nom_savepoint>.
- 54 -
Sources :
http://download.oracle.com/docs/cd/E11882_01/server.112/e10592/statements_6
HU
015.htm#i2067093
http://www.oracle.com/pls/db112/search
HU
http://download.oracle.com/docs/cd/E11882_01/server.112/e10713.pdf (chapitre
HU
UH
7)
SQL (introduction au SQL et SQL*Plus avec Oracle) manuel SQL de lenseignant
DENIS BRUNET
SQL, manuel pour le cours 420-551-93 de lenseignante Saliha Yacoub
- 55 -