Vous êtes sur la page 1sur 55

Dpartement dinformatique

420 KED-LG, conception de bases de donnes

SQL dORACLE

Prpar par Saliha Yacoub

-1-

Table des matires


Prsentation du SGBD Oracle. ......................................................................4
9BArchitecture : .............................................................................................................. 4
10BLes commandes SQL................................................................................................ 5

1Bref historique ............................................................................................6


2Objets manipuls par Oracle .......................................................................7
3Dfinition de donnes .................................................................................8
11BCration de tables : La commande <CREATE TABLE> ........................................ 8
31BSyntaxe simplifie : .............................................................................................. 8
32BSyntaxe gnrale................................................................................................... 8
Dfinitions et exemples................................................................................................... 9
La contrainte de PRIMARY KEY .............................................................................. 9
La contrainte de FOREIGN KEY ............................................................................ 10
33BLa contrainte CHECK : ...................................................................................... 10
La contrainte DEFAULT .......................................................................................... 10
La contrainte NOT NULL......................................................................................... 11
La contrainte UNIQUE ............................................................................................. 11
12Types de donnes manipuls : .................................................................................. 12
13Modification de la dfinition dune table :la commande <ALTER TABLE> ......... 13
34Loption ADD ....................................................................................................... 13
35Loption MODIFY: ............................................................................................... 14
36Loption DROP ..................................................................................................... 14
14BSupprimer une table : la commande <DROP TABLE> ......................................... 14
15BRenommer une table : la commande <RENAME>............................................... 15
Cration dun index : La commande <CREATE INDEX> .......................................... 15

4Manipulation de donnes .......................................................................... 16


16La commande INSERT INTO .................................................................................. 16
37Cration de squence pour Insertion : ................................................................... 17
17La commande UPDATE .......................................................................................... 19
38BUtilisation de la clause WHERE ........................................................................ 20
18BLa commande DELETE ........................................................................................ 21
19BLa commande SELECT......................................................................................... 23

Quelques fonctions SQL ............................................................................. 25


20BLes fonctions agissant sur les groupes ................................................................... 25
Les fonctions MIN et MAX ...................................................................................... 25
39BLes fonctions AVG et SUM ............................................................................... 25
La fonction COUNT ................................................................................................. 25

5Requtes avec jointure .............................................................................. 27


40Produit cartsien.................................................................................................... 27
41BJointure simple: .................................................................................................. 28
42BJointure externe .................................................................................................. 28
43B ............................................................................................................................ 29
44BIMPORTANT: ................................................................................................... 29

6BRequtes imbriques (sous requtes) ...................................................... 30

Prpar par Saliha Yacoub

-2-

21BUtilisation dune sous-requte avec la clause WHERE ......................................... 30


22BUtilisation dune sous-requte avec linstruction INSERT .................................... 32
23BUtilisation dune sous-requte pour la cration de table ........................................ 33
24BUtilisation dune sous-requte avec la clause SET ................................................ 34
25BRequtes corrles.................................................................................................. 34

Requtes SELECT avec les oprateurs densembles ................................... 36


Loprateur INTERSECT ......................................................................................... 36
Loprateur UNION .................................................................................................. 36
Loprateur MINUS .................................................................................................. 37

7BGestion de linformation hirarchise ..................................................... 38


8BLes fonctions SQL .................................................................................. 41
26BManipulation des chanes de caractres : ............................................................... 41
27BLes fonctions sur les dates ...................................................................................... 44
28BLes fonctions sur les nombres ................................................................................ 44
29BFonctions de conversion ......................................................................................... 45
30BLes formats valides avec les dates.......................................................................... 47

Les vues ...................................................................................................... 49


Dfinition ...................................................................................................................... 49
Avantages ...................................................................................................................... 49
Contraintes dutilisation ................................................................................................ 50

Les synonymes : ......................................................................................... 52


Les privilges :........................................................................................... 53
Les rles : ...................................................................................................................... 54

Les transactions .......................................................................................... 54

Prpar par Saliha Yacoub

-3-

Prsentation du SGBD Oracle.

0B

Architecture :

9B

Par dfinition un systme de gestion des bases de donnes est un ensemble de


programmes destins grer les fichiers
Oracle est constitu essentiellement des couches suivantes :
1. Le noyau : dont le rle est de
a. Optimisation dans lexcution des requtes
b. Gestion des acclrateurs (index et Clusters)
c. Stockage des donnes
d. Gestion de lintgrit des donnes
e. Gestion des connexions la base de donnes
f.

Excution des requtes

2. Le dictionnaire de donnes : le dictionnaire de donnes doracle est une mtabase


qui dcrit dune faon dynamique la base de donnes. Il permet ainsi de dcrire
les objets suivants :
a. Les objets de la base de donnes (Tables, SYNONYMES, VUES,
COLONNES, )
b. Les utilisateurs accdant la base de donnes avec leurs privilges
(CONNECT, RESOURCE et DBA).
Ainsi toute opration qui affecte la structure de la base de donnes provoque
automatiquement une mise jour du dictionnaire.

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

Prpar par Saliha Yacoub

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

Les commandes SQL

10B

Il existe principalement trois types de commandes SQL


1. les commandes de dfinition des donnes (LDD, langage de dfinition des
donnes)
Ces commandes permettent de crer ou de modifier un objet de la base de donnes :
CREATE, ALTER, DROP, MODIFY,
2. les commandes de manipulation des donnes (LMD,Langage de Manipulation
des Donnes)
Ces commandes permettent de faire la mise jour ou la consultation des donnes
dans une table de la base de donnes.
SELECT, UPDATE, INSERT, DELETE
3. les commandes de control de donnes (LCD) :
Exemple : GRANT et REVOKE

Prpar par Saliha Yacoub

-5-

Bref historique

1B

SQL pour Structured Query Language est un langage de dfinition de donnes

(DDL, Data Definition Language), de manipulation de donnes (LMD, Data


Manipulation Language) et de contrle de donnes (DCL, Data Control
Language)
Dveloppe chez IBM en 1970 par Donald Chamberlain et Raymond Boyce, cette
premire version a t conue pour manipuler et diter des donnes stockes dans la
base de donnes relationnelles.
En 1979 , Relational Software, Inc. (actuellement Oracle Corporation ) prsenta la
H

premire version commercialement disponible de SQL, rapidement imit par d'autres


fournisseurs.
SQL a t adopt comme recommandation par l'Institut de normalisation amricaine
( ANSI ) en 1986 , puis comme norme internationale par l' ISO en 1987 sous le nom de
H

ISO/CEI 9075 - Technologies de l'information - Langages de base de donnes - SQL.

Prpar par Saliha Yacoub

-6-

Objets manipuls par Oracle

2B

Oracle supporte plusieurs types dobjets, en voici quelques uns :


Les tables : objets contenant les donnes des utilisateurs ou appartenant au systme.
Une table est compose de colonnes (Champs ou attributs) et de lignes (enregistrements
ou occurrences)
Les vues : Une vue est une table virtuelle issue du modle externe contenant une partie
dune ou plusieurs tables. Les vues sont utilises pour ne permettre aux utilisateurs
dutiliser uniquement les donnes dont ils ont besoin
User : Utilisateurs du systme oracle. Chaque usager est identifi par un nom d,usager
et un mot de passe.
Les squences : gnrateur de numro unique
Synonymes : autre nom donn aux objets Table, vue, squence et schma.
Les procdures :programme PL/SQL prt tre executer
Les dclencheurs : procdure dclenche avant toute modification de la base de
donnes (TRIGGER)
Conseils Gnraux :
SQL nest pas sensible la casse, cependant il est conseill dutiliser les mots rservs
(commandes, le type de donnes ) en majuscules
Il ne faut pas oublier le point virgule la fin de chaque ligne de commande.
Utiliser les deux traits -- pour mettre une ligne en commentaire
Utiliser /* et */ pour mettre plusieurs lignes en commentaire
Utiliser des noms significatifs pour les objets que vous crez
Ne pas utiliser de mots rservs comme noms dobjets (tables, vue, colonne..)
Mettre une cl primaire pour chacune des tables que vous crez
Si vous avez contrler lintgrit rfrentielle, alors il faudra dterminer lordre
dans lequel vous allez crer vos tables.

Prpar par Saliha Yacoub

-7-

Dfinition de donnes

3B

Cration de tables : La commande <CREATE TABLE>

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

CREATE TABLE <nom_de_table> (<nom_de_colonne><type_de_donnes>);

Syntaxe gnrale

32B

CREATE TABLE <nom_de_table> (<nom_de_colonne> <type_de_donnes>


[DEFAULT <valeur>]
[
[CONSTRAINT <nom_de_contrainte>]
NULL
Ou
NOT NULL
OU
UNIQUE
OU
PRIMARY KEY
OU
FOREIGN KEY
ou
REFERENCES <Nom_de_Table><nom_de_colonne>
Ou
[ON DELETE CASCADE]
Ou
CHECK <nom_de_condition>
]
);

Prpar par Saliha Yacoub

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

La contrainte de PRIMARY KEY: permet de dfinir une cl primaire sur la table.


Lorsque la cl primaire est une cl primaire compose, la contrainte doit tre dfinie au
niveau de la table et non au niveau de la colonne. Les attributs faisant partie de la cl
doivent tre entre parenthse. La contrainte de PRIMARY KEY assure galement les
contraintes de NOT NULL et UNIQUE
Exemple 1 : Cl primaire au niveau de la colonne
CREATE TABLE Produit (codeProduit NUMBER
CONSTRAINT pk1 PRIMARY KEY,
NomProduit VARCHAR2(20) NOT NULL,
description VARCHAR2 (30));

Exemple2: Cl primaire au niveau de la table


CREATE TABLE Resultat(NumEtudiant NUMBER(10,0),
codeCours VARCHAR2(10),
Note NUMBER(5,2),
CONSTRAINT pk2 PRIMARY KEY(NumEtudiant,codeCours));

Prpar par Saliha Yacoub

-9-

La contrainte de FOREIGN KEY: cette contrainte indique que la valeur de


lattribut correspond une valeur dune cl primaire de la table spcifie.
La cl primaire de lautre table doit tre obligatoirement cre pour que cette contrainte
soit accepte. La cl primaire de lautre table et lattribut dfini comme cl trangre
doivent tre de mme type et de mme longueur
On peut galement prciser loption ON DELETE CASCADE qui indique que les
enregistrements (occurrences) soient dtruits lorsque lenregistrement correspondant
la cl primaire de la table rfrence est supprim. Si cette option nest pas prcise alors
aucun enregistrement ne sera supprim de la table qui contient la cl primaire
Exemple
CREATE TABLE programme (codePrg VARCHAR2(3)
CONSTRAINT pk3 PRIMARY KEY,
nomProg VARCHAR2(20));
CREATE TABLE etudiants (NumAd NUMBER CONSTRAINT pk4 PRIMARY KEY,
Nom VARCHAR2(20), Prenom VARCHAR2(20),
codePrg VARCHAR2(3),
CONSTRAINT fk1 FOREIGN KEY(codePrg) REFERENCES programme (codePrg) );

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.

La contrainte DEFAULT : indique la valeur par dfaut que prendra lattribut si


aucune valeur nest saisie.

Prpar par Saliha Yacoub

- 10 -

La contrainte NOT NULL : indique que la valeur de la colonne ou de lattribut est


obligatoire. Si cette contrainte nest pas prcise alors par dfaut la valeur est NULL.

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)
);

Prpar par Saliha Yacoub

- 11 -

Types de donnes manipuls :

12B

Le type de donnes reprsente la premire contrainte prciser lors de la cration de


table. Pour chaque attribut ou champs de la table, on doit prciser le type de donnes.
Les principaux types manipuls sont prsents dans le tableau suivant.
Type de donnes

Explications et exemple

VARCHAR2(n)

Chane de caractres de longueur variable. La taille maximale de


cette chane est dtermine par la valeur n et peut atteindre
4000 caractres (bytes). La longueur minimale est 1. la
prcision du n est obligatoire.
Exemple : NomPrograme VARCHAR2(20)

CHAR(n)

Chaine de caractres de longueur fixe allant de 1 2000


caractres (bytes). La chane est complte par des espace si elle
est plus petite que la taille dclare
Exemple CodeProgramme CHAR(3).

LONG

Donnes de type caractre pouvant stocker jusqu' 2 gigabytes


Exemple :Introduction LONG

NUMBER(n,d)

Pour dclarer un nombre sur maximum n chiffres (positions)


dont d chiffres (positions) sont rservs la dcimale. n peut
aller de 1 38.

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

Chane de caractres au format binaire pouvant contenir jusqu'


2 gigaoctet
Exemple :Photo LONG RAW

BLOB

Binary Large Object : Gros objet binaire pouvant aller jusqu' 4


gigaoctet :
Exemple Image BLOB

CLOB

A character large object : Chane de caractre de longueur


maximale allant jusqu' 4 gigaoctet :

Pour plus dinformation consulter :


http://download.oracle.com/docs/cd/E11882_01/server.112/e10592/sql_elements001.htm#i45441

HU

Prpar par Saliha Yacoub

- 12 -

Modification de la dfinition dune table :la commande

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

Prpar par Saliha Yacoub

- 13 -

ALTER TABLE Employes ADD CONSTRAINT emppk PRIMARY KEY


(NumEmp);
Permet dajouter une contrainte

de cl primaire sur la colonne Numemp de la table

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

ALTER TABLE Employes DROP Primary Key;


Ou
ALTER TABLE Employes DROP CONSTRAINT emppk;
ALTER TABLE Employes DROP COLUMN nom;
ALTER TABLE Employes RENAME COLUMN Salaire TO SalaireEmp;

Supprimer une table : la commande <DROP TABLE>

14B

La commande DROP permet de supprimer un objet de la b ase de donnes. (Table,


indexe, synonyme..)
DROP TABLE personne;

Prpar par Saliha Yacoub

- 14 -

Renommer une table : la commande <RENAME>

15B

Permet de renommer une table ou un objet de la base de donnes


Syntaxe

RENAME <Ancien_nom> TO <Nouveau_nom>;


RENAME Employes TO EmployesInfo;

Cration dun index : La commande <CREATE INDEX>


Un index est un objet permettant dacclrer laccs aux donnes. La cration du n index
sur une cl primaire se fait automatiquement par le systme. Pour crer un index sur un
champ autre que la cl primaire on utilise la commande CREATE INDEX.

CREATE [UNIQUE] INDEX Nom_Index ON Nom_Table(nomClonne) ;


Exemple
CREATE INDEX index1 ON ETUDIANTS(nom), cre un index sur la colonne nom de
la table ETUDIANTS.
CREATE INDEX index2 ON ETUDIANTS(nom, prenom) cre un index sur les
colonnes nom et prnom de la table ETUDIANTS.
Remarque :
Un index ne peut tre cr que sur une table (pas une vue).
Les index UNIQUE applique les contraintes dunicit
Ne jamais crer trop dindex
Crer des index sur une colonne ayant une petite plage de valeurs inutiles
Un index se crer sur maximum 16 colonnes.

Prpar par Saliha Yacoub

- 15 -

Manipulation de donnes

4B

La commande INSERT INTO

16B

Syntaxe 1 : la syntaxe qui suit permet dinsrer des valeurs pour toute une range (une
ligne ou un enregistrement) dans une table

INSERT INTO <nom_de_table> VALUES (<liste de valeurs>);


Exemple
INSERT INTO EmployesInfo VALUES (20,'Fafar','Patrice',40000);
Syntaxe 2

INSERT INTO <nom_de_table>(<nom_de_colonne>) VALUES


(<liste_de_valeurs>);
Exemple
INSERT INTO EmployesInfo (NumEmp, NOM) VALUES (12,'Lebeau');
La commande INSERT est la premire commande excute aprs avoir cr une table.
Cette commande permet de saisir des donnes dans une table une range la fois.
Lors de linsertion des donn dans lensemble des colonnes de la tables (toutes
les colonnes), il nest pas ncessaire de prciser les noms de celles-ci. Voir
syntaxe 1
Si des valeurs dans certaines colonnes ne doivent pas tre saisies (contiennent
des valeurs par dfaut) alors la prcision des colonnes dans lesquelles la saisie
doit seffectuer est obligatoire. Noter que les valeurs saisir doivent tre dans le
mme ordre de la spcification des colonnes. Voir syntaxe 2
Une valeur de type caractre (CHAR ou VARCHAR2 ) doit tre mise entre
apostrophes. Si la chaine de caractre contient des apostrophes, ceux-ci doivent
tre doubls.

Prpar par Saliha Yacoub

- 16 -

Le type numrique (NUMBER) est saisi en notation standard. La virgule


dcimale est remplace par un point lors de la saisie
Le type date doit tre saisie selon la norme amricaine (JJ-MMM-AA pour 12 jan
99) et entre apostrophes. Pour saisir une date dans nimporte quel format, il faut
sassurer de la convertir dans le format avec la fonction TO_DATE
Lorsque la valeur dune colonne nest pas connue et que celle-ci possde une
contrainte de NOT NULL, alors on peut saisir le NULL entre apostrophe comme
valeur pour cette colonne.
Il est possible dutiliser une expression arithmtique dans la commande INSERT
condition que cette colonne soit de type numrique.
Il est possible dutiliser des insertions partir dune table existante (commande
SELECT et une sous-requte ----- voir plus loin)
Il est possible dutiliser des squences pour linsertion automatique dun numro
squentiel pour une colonne
Aprs les insertions, il est recommande dexcuter la commande COMMIT (
voir plus loin)

Cration de squence pour Insertion :

37B

CREATE SEQUENCE <Nom_de_sequence> INCREMENT BY


<intervalle>
START WITH <value_de_depart>
MAXVALUE <valeur_maximale>
MINVALUE <valeur_minimale>
CYCLE
Exemple 1

CREATE SEQUENCE seq1


START WITH 10
MAXVALUE 100
INCREMENT BY 10;
Prpar par Saliha Yacoub

- 17 -

Et on utilise le INSERT comme suit:

INSERT INTO EmployesInfo (numemp, nom) VALUES


(seq1.nextval, 'Simpson');
Lemploy (10, Simpson) est insr (si cest la premire fois quon utilise la squence
seq1)

INSERT INTO EmployesInfo (numemp, nom) VALUES


(seq1.nextval, 'Blues');
Lemploy (20, Blues) est insr (si cest la deuxime fois quon utilise la squence
seq1)

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.

Prpar par Saliha Yacoub

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

UPDATE <nom_de _table> SET


<nom_de_colonne>=<nouvelle_valeur>;
La commande UPDATE permet deffectuer des modifications des donnes sur une
seule table. Cette modification peut porter sur une ou plusieurs lignes.
(Enregistrement)
Lors de la modification des donnes, les contraintes dintgrit doivent tre
respectes. Il est impossible de modifier une valeur de la cl primaire si cette valeur
est rfre par une valeur de la cl trangre
De plus, il faut tenir compte de s valeur dfinie par les contraintes CHECK et NOT
NULL

Prpar par Saliha Yacoub

- 19 -

Il est possible dutiliser une expression arithmtique dans la commande UPDATE


condition que cette colonne soit de type numrique.
Il est possible dutiliser des modifications partir dune table existante
(commande SELECT et une sous-requte ----- voir plus loin)

Utilisation de la clause WHERE

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.

UPDATE <nom_de _table> SET


<nom_de_colonne>=<nouvelle_valeur>
WHERE <condition>;
Liste des oprateurs utiliss dans la condition :
Oprateurs

Signification

Exemple

galit

UPDATE employesinfo SET


salaire = salaire
+(salaire*0.5)
WHERE nom ='Fafar';

<> ou != ou ^=

Ingalit ou diffrent

>

Plus grand

<

Plus petit

>=

Plus grand ou gal

<=

Plus petit ou gal

LIKE

Si la valeur est comme une

UPDATE employesinfo SET

chaine de caractres. Le % est

salaire = salaire

utilis pour dbuter ou

+(salaire*0.5)

complter la chaine de

WHERE nom like 'Faf%';

caractre.
NOT LIKE

Si la valeur nest pas comme


une chaine de caractres. Le %
est utilis pour dbuter ou

Prpar par Saliha Yacoub

- 20 -

complter la chaine de
caractre.
IN

gal une valeur dans une liste

UPDATE employesinfo SET


salaire = salaire
+(salaire*0.5)
WHERE nom IN ('Fafar',
'Simpson','Lebeau');

NOT IN

Nest pas gal une valeur dans


une liste

IS NULL

Si la valeur retourne est NULL

UPDATE employesinfo SET


salaire =10000.99
WHERE salaire is NULL;

IS NOT NULL

Si la valeur retourne est nest


pas NULL

BETWEEN x AND Y

Si la valeur est comprise entre x

UPDATE employesinfo set

et y

salaire = salaire
+(salaire*0.5)
WHERE salaire BETWEEN
9000 AND 16000 ;

NOT BETWEEN x

Si la valeur nest pas comprise

AND y

entre x et y

ANY

Si au moins une valeur rpond


la comparaison

ALL

Si toutes les valeurs rpondent


la comparaison

EXISTS

Si la colonne existe

NOT EXISTS

Si la colonne nexiste pas

UPDATE employes SET NOMEMP ='BIDON', SALAIRE = 44000 WHERE


NUMEMP =10;

La commande DELETE

18B

La commande DELETE permet de supprimer de la base de donnes une ou plusieurs


ranges dune table.

Prpar par Saliha Yacoub

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

Supprimer dabord les ranges de la table enfants qui rfrent la cl primaire,


puis supprimer la cl primaire.

Dsactiver la contrainte dintgrit rfrentielle (cl trangre). Cette action


est irrversible. Supprimer ensuite la cl primaire.

Modifier la contrainte dintgrit rfrentielle en ajoutant loption ON


DELETE CASCADE

Syntaxe

DELETE FROM <nom_de _table>;


Cette syntaxe permet de dtruire TOUS les enregistrements dune table

DELETE FROM <nom_de _table>


WHERE <condition>;
Cette syntaxe permet de dtruire les enregistrements dune table rpondant la
condition spcifie dans la clause WHERE
Exemples :
DELETE FROM employesinfo WHERE NUMEMP =30;
DELETE FROM employesinfo WHERE NOM IN ('Blues','Simpson');
Avant toute opration COMMIT, faire un SELECT afin de vrifier que nous navons
pas fait des suppressions par erreur. Utiliser un ROLLBACK dans le cas dune
suppression par erreur.

Prpar par Saliha Yacoub

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

SELECT <nom_de colonne1,nom_de_colonnen>


FROM <nom_de table>
WHERE <condition>
ORDER BY <nom_de_colonne>;
La clause ORDER BY spcifie le tri des donnes aprs extraction. Si lordre de
tri nest pas prcis alors le tri est par dfaut croissant.
Pour avoir un tri dcroissant il faut ajouter loption DESC.
Le tri peut se faire selon plusieurs colonnes, il faut les sparer par des virgules
Dans la commande SELECT, le joker * indique que toutes les colonnes seront
slectionnes.
Loption AS permet de changer le nom de colonnes pour laffichage uniquement.

Exemples
SELECT * FROM employes;

SELECT empno, ename, job


FROM EMPLOYES;
SELECT empno, ename, job
FROM EMPLOYES ORDER BY ename, job;

Prpar par Saliha Yacoub

- 23 -

SELECT empno, ename, job


FROM EMPLOYES ORDER BY ename DESC, job;
SELECT * FROM EMPLOYES ORDER BY 1,2;
Le tri se fait selon la colonne 1, puis la colonne 2
SELECT empno, ename, job
FROM EMPLOYES
WHERE SAL >2500
ORDER BY ename ;

Prpar par Saliha Yacoub

- 24 -

Quelques fonctions SQL:


Les fonctions agissant sur les groupes

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';

Les fonctions AVG et SUM

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

La fonction COUNT : cette fonction permet de compter le nombre de lignes


(ranges) qui rpondent un critre. La clause GROUP BY peut tre utilise ou non
Si une colonne est prsente dans la clause SELECT alors elle doit tre prsente dans la
clause GROUP BY
La clause GROUP BY: cette clause permet d'indiquer au systme de regrouper des
enregistrements selon des valeurs distincts qui existent pour les colonne spcifies. La
clause HAVING permet de mieux cibler les enregistrements spcifis.

Prpar par Saliha Yacoub

- 25 -

Exemples
SELECT CODEPRG, COUNT(CODEPRG)
FROM ETUDIANTS
GROUP BY CODEPRG;

SELECT CODEPRG, COUNT(CODEPRG)


FROM ETUDIANTS
GROUP BY CODEPRG
HAVING CODEPRG ='420';

Cette requte calcule le nombre total dtudiants.


SELECT COUNT(*)
FROM ETUDIANTS;
Les requtes avances (jointures, sous requtes et gestion des informations hirarchise)

Prpar par Saliha Yacoub

- 26 -

Requtes avec jointure

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;

. (il y a une suite la sortie de la requte)

Prpar par Saliha Yacoub

- 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

Jointure externe droite:Dans la jointure externe droite, des enregistrements de table de


la premire table seront ramens mme si ceux-ci n'ont pas d'occurrences dans la
deuxime table.
Jointure externe gauche: Dans la jointure externe gauche des enregistrements de table
de deuxime table seront ramens mme si ceux-ci n'ont pas d'occurrences dans la
premire table.

Prpar par Saliha Yacoub

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

Prpar par Saliha Yacoub

- 29 -

Requtes imbriques (sous requtes)

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 :

La clause WHERE dune instruction UPDATE,DELETE et SELECT

La clause FROM de linstruction SELECT

La clause VALUES de linstruction INSERT INTO

La clause SET de linstruction UPDATE

Linstruction CREATE TABLE.

Utilisation dune sous-requte avec la clause WHERE

21B

Ce type de sous-requte permet de comparer une valeur de la clause WHERE avec le


rsultat retourn par une sous-requte, dans ce cas on utilise les oprateurs de
comparaison suivant :

=,

!=

,<

,<=

,>

,>=

,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 ?

Prpar par Saliha Yacoub

- 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 IN lorsque la sous requte retourne plus quune range


(plus quun enregistrement)
Exemple1 : la requte suivante ramne tous les tudiants qui nont pas de notes
SELECT NUMAD,NOM, PRENOM
FROM ETUDIANTS
WHERE NUMAD NOT IN
(SELECT NUMAD FROM RESULTATS);

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

On utilise loprateur EXISTS est similaire loprateur IN pour dterminer


lexistence ou non de lignes. EXISTS teste si la requte intrieur retourne des
valeurs.
Exemple
SELECT * FROM clients WHERE EXISTS (SELECT numclient FROM commande);

Prpar par Saliha Yacoub

- 31 -

Pour la table rsultat suivante, les sorties des requtes avec ANY et ALL sont les
suivant :

SELECT NUMAD FROM RESULTATS


WHERE NOTE >ALL
(SELECT NOTE FROM RESULTATS WHERE CODE_COURS ='KEG') ;
Donne le rsultat

SELECT NUMAD FROM RESULTATS


WHERE NOTE >ANY
(SELECT NOTE FROM RESULTATS WHERE CODE_COURS ='KEG') ;

Utilisation dune sous-requte avec linstruction INSERT

22B

Prpar par Saliha Yacoub

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

INSERT INTO COURS_DU_SOIR


(SELECT * FROM COURS
WHERE CODE_COURS ='KEG');
Ou pour insrer toutes les lignes de la table COURS dans COURS_DU_SOIR
INSERT INTO COURS_DU_SOIR
(SELECT * FROM COURS);

Utilisation dune sous-requte pour la cration de table

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

Prpar par Saliha Yacoub

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

Utilisation dune sous-requte avec la clause SET

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');

Prpar par Saliha Yacoub

- 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));

Prpar par Saliha Yacoub

- 35 -

Requtes SELECT avec les oprateurs


densembles
Loprateur INTERSECT : cet oprateur permet de ramener lintersection des
donnes entre deux tables. Les deux commandes SELECT doivent avoir le mme nombre
de champs, et des champs de mme type et dans le mme ordre.
Syntaxe:
Instruction SELECT1
INTERSECT
Instruction SELECT 2
[ORDER BY].

Le nombre de colonnes renvoyes par SELECT 1 doit tre le mme que celui
renvoy par SELECT 2

Le type de donnes SELECT 1 doit tre le mme que celui de SELECT 2

La clause optionnelle ORDER BY doit se faire selon un numro de colonne et non


selon le nom.

SELECT 1 et SELECT 2 ne peuvent contenir des clauses ORDER BY.

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

Prpar par Saliha Yacoub

- 36 -

Syntaxe
Instruction SELECT1
UNION [ALL]
Instruction SELECT 2
[ORDER BY].

SELECT NOM, PRENOM FROM ETUDIANTS


UNION
SELECT NOM, PRENOM FROM ENSEIGNANTS
ORDER BY 1
Permet de ramener tous les tudiants et tous les enseignants. Les enseignants qui sont
en mme temps des tudiants sont ramens une seule fois.

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].

Prpar par Saliha Yacoub

- 37 -

Gestion de linformation hirarchise

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

SELECT NUM, NOM,NUMRES,LEVEL


FROM EMPLOYES
START WITH NUM =10
CONNECT BY PRIOR NUM = NUMRES;
Cette requte nous donne tous les employs sous lemploy dont le numro est 10.

Prpar par Saliha Yacoub

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

Prpar par Saliha Yacoub

- 39 -

Dans le premier cas, nous avons ramen les subordonnes de DUBOIS


Dans le deuxime cas, nous avons ramen tous les responsables de DUBOIS.
START WITH : cette clause est optionnelle, elle indique, pour quelle occurrence (dans
notre cas pour quel employ) on doit slectionner les subordonnes
La pseudo colonne LEVEL est ajoute pour montrer le niveau de hirarchie entre les
enregistrements.

Prpar par Saliha Yacoub

- 40 -

Les fonctions SQL

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 :

Pour convertir des chaines dun format un autre

Pour gnrer des tats

Pour excuter des requtes

Manipulation des chanes de caractres :

26B

Fonctions et

Rles

Exemples

LENGTH :

Renvoie la

SELECT LENGTH (titre), titre FROM livres '

LENGTH

longueur

(colonne)

dune chaine

SELECT titre FROM livres WHERE

de caractre

LENGTH (titre) < 10;

UPPER

Conversion en

SELECT UPPER(titre) FROM livres;

UPPER (colonne)

letter

syntaxes

majuscule

SELECT * FROM LIVRES WHERE UPPER(TITRE)


='ENVOYE'

LOWER

Conversion en

Lower (colonne)

minuscule

SELECT LOWER (TITRE) FROM lIVRES;


SELECT * FROM LIVRES WHERE LOWER(TITRE)
='envoye'

Prpar par Saliha Yacoub

- 41 -

INITCAP

Premire

(colonne)

letter en

SELECT initcap (TITRE) FROM lIVRES;

majuscule
||

Concatenation

SELECT NOM || PRENOM FROM ETUDIANTS;

LPAD

remplir

SELECT LPAD(TITRE ,20,'*') FROM LIVRES; Ici la

LPAD (colonne,

gauche.

longueur totale de la chane est de 40 caractres. Le dbut

longueur,chaine

Elle permet

de la chane est **************

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

SELECT RPAD(TITRE ,20,'*') FROM LIVRES;

chose que
LPAD sauf
que le
remplissage
se fait droite
LTRIM

Supprime une

LTRIM

chaine de

(colonne,chaine)

caractres au

SELECT LTRIM (TITRE,'LE') FROM LIVRES;

dbut

RTRIM

Fait la mme
chose que

Prpar par Saliha Yacoub

- 42 -

LTRIM
droit.
DECODE

Permet de

SELECT TITRE, AUTEUR, CODETYPE,

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

SELECT SUBSTR (titre, 1,5)FROM livres.

SUBSTR

dextraire une

partir de la position 1, on extrait une chane de

(colonne,m,N) ou

portion

longueur 5.

SUBSTR (Chaine

spcifique

Si le nombre m est ngatif alors la recherche se fera

,m,N) ou

dune chane

partir de la fin

de caractres

Si le nombre N nest pas prcis, alors tous les caractres


aprs m seront pris

REPLACE

Remplace

SELECT titre, REPLACE (titre, 'MATOU', 'GOUROU')

REPLACE

dans chaine1,

FROM LIVRES;

(chaine1 chaine2,

lachaine2 par

UPDATE Fonctions SET Titre = REPLACE (Titre, agent,

chaine3)

cahine3

employ)

INSTR

Retourne la

SELECT TITRE,COTE, INSTR (TITRE, 'ME')

position dune

FROM LIVRES WHERE COTE

chaine dans

LIKE 'A%' OR COTE LIKE 'C%';

une autre.

Prpar par Saliha Yacoub

- 43 -

Les fonctions sur les dates

27B

Fonctions et

Rles

Exemples

Obtenir la date du

SELECT SYSDATE FROM DUAL;

syntaxes
SYSDATE

jour
ADD_MONTHS

Ajoute un nombre

SELECT ADD_MONTHS (DATEEMPRUNT,2)

ADD_MONTHS (date,

nb de mois une

FROM EMPRUNT

nb)

date. Si nb est
ngatif, on enlve
des mois

NEXT_DAY

Avance la date

SELECT NEXT_DAY(SYSDATE,3 )FROM

jusquau jour

DUAL;

spcifi
LAST_DAY

Retourne la date

SELECT LAST_DAY(SYSDATE )FROM DUAL;

du dernier jour du
mois
MONTHS_BETWEEN

Retourne le

SELECT MONTHS_BETWEEN (SYSDATE,

nombre de mois

DATEEMPRUNT) FROM EMPRUNT;

entre deux date

Les fonctions sur les nombres

28B

Fonctions et

Rles

Exemples

ROUND

Reoit deux

SELECT ROUND ( AVG(SAL),3) FROM SYEMP;

ROUND (nombre,

arguments : le

SELECT ROUND (2.78,1) FROM DUAL;

m)

nombre

A pour rsultat 2.8

arrondir et m

Si m nest pas fourni, on arrondi au chiffre

qui correspond

immdiatement suprieur

syntaxes

au nbre de
chiffres lors de
larrondi

Prpar par Saliha Yacoub

- 44 -

TRUNC (nombre,

Supprime la

SELECT TRUNC (2.78,1) FROM DUAL;

m)

partie

A pour rsultat 2.7

fractionnelle de
son argument
numrique
CEIL

Retourne
lentier
immdiatement
suprieur son
argument

FLOOR

Retourne

SELECT CEIL (2.78), FLOOR(2.78) FROM DUAL;

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

Prpar par Saliha Yacoub

- 45 -

Fonctions et

Rles

Exemples

TO_DATE

Convertie une chaine de

INSERT INTO EMPRUNT

(chaine,

caractre en une date

VALUES ('EX1C31',12,

modelededate)

selon le modle dfini. Le

TO_DATE ('10-09-02', 'YY-MM-DD'));

syntaxes

modle de date doit tre


dans un format valide.

SELECT * FROM Commandes WHERE


SYSDATE - TO_DATE(datecommande) > 10;
Ici date commande a t cree avec le type
varchar2

TO_CHAR avec

Converti une date pour

SELECT DATEEMPRUNT, TO_CHAR

les dates

affiche la date selon un

(DATEEMPRUNT,'YYYY-MONTH-DD')

TO_CHAR

format prdfini. Les

FROM EMPRUNT;

(valeur_date,

fonctions sur les chanes

formatDate)

de caractres peuvent
tre utilises

select dateemprunt FROM EMPRUNT


WHERE SUBSTR (to_char
(dateemprunt,'YYYY-MONTH-DD'),4 )
LIKE '%SEP%';

TO_CHAR avec

Utilise pour afficher des

SELECT SAL, TO_CHAR (SAL,

les nombres

valeurs numrique sous

'$999,999.99')

TO_CHAR

un autre format..les

FROM SYEMP;

(nombre, format)

formats numriques
sont :
9 affiche une valeur

Prpar par Saliha Yacoub

- 46 -

numrique sans les zro


non significatif. Autant
de 9 que de chiffres.
0 utilis comme le 9, sauf
que les zros non
significatifs sont affichs
$ affiche le symbole $
devant le nombre
, affiche une virgule la
position indique.
Sparateur de miliers.
. (point) affiche un point
la position indique.
(point dcimal)
TO_NUMBER

Inverse de la fonction

CREATE TABLE EXEMPLE (CHAINE

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)

Les formats valides avec les dates

30B

Formats

Exemples

Plages de
valeurs

DD

TO_CHAR (DATEEMPRUNT,'DD')

Jours : 1-31 selon


le mois

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-

Les trois derniers

Prpar par Saliha Yacoub

- 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

Suite voir http://www.techonthenet.com/oracle/functions/to_char.php

Prpar par Saliha Yacoub

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

Prpar par Saliha Yacoub

- 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

Insrer ou mettre jour dans la vue si la colonne en question est un rsultat


calcul.

Insrer ou mettre jour (INSERT, UPDATE et DELETE) si la vue contient


les clauses GROUP BY ou DISTINCT.

Utiliser une vue comme source de donnes pour INSERT, UPDATE et


DELETE si elle dfinie avec :

Une jointure

Une opration densemble

Une clause GROUP BY, CONNECT BY, DISTINCT de


lordre SELECT

Une fonction de groupe (SUM, MAX)

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

Prpar par Saliha Yacoub

- 50 -

Dtruire une VUE :


DROP VIEW nom_de_vue permet de supprimer la vue

RENAME ancien_nom TO nouveau_NOM renomme une vue.

Prpar par Saliha Yacoub

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

Prpar par Saliha Yacoub

- 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

GRANT <privilege>[ou ALL] ON <no_objet> TO <nom_usager>


[ou PUBLIC][WITH GRANT OPTION]
Les privilges sont : SELECT, INSERT, UPDATE, DELETE, ALTER, INDEX,
REFERENCES ou (tout ce la et donc ALL)

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.

PUBLIC permet dattribuer les droits TOUS.

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

REVOKE <privilege>[ou ALL] ON <no_objet> FROM <nom_usager>


[ou PUBLIC]
EXEMPLE
REVOKE INSERT ON etudiant FROM Mathieu
REVOKE ALL ON employe TO PUBLIC.

Prpar par Saliha Yacoub

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

Prpar par Saliha Yacoub

- 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

Prpar par Saliha Yacoub

- 55 -