ch4 BD

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 15

Le langage SQL :

Structured Query
Language

1- Introduction

SQL est un langage de quatrième génération (L4G), non procédural, conçu par IBM dans
les années 70. SQL est basée sur l'algèbre relationnelle (opérations ensemblistes et
relationnelles). SQL a été normalisé dès 1986 mais les premières normes, trop
incomplètes, ont été ignorées par les éditeurs de SGBD. La norme actuelle SQL-2 (appelée
aussi SQL-92) date de 1992. Elle est acceptée par tous les SGBD relationnels. Ce langage
permet l'accès aux données et se compose de trois sous-ensembles :
1. Le Langage de Définition de Données : LDD (Data Definition Language DDL) : Ce langage
permet la définition et la mise à jour de la structure de la base de données (tables,
attributs, vues, index,...).
2. Le Langage de Manipulation de Données : LMD (Data Manipulation Language DML) : Ce
langage permet de manipuler les données de la base et de les mettre à jour, il permet
aussi de rechercher des informations utiles en interrogeant la base de données.
3. Le Langage de Contrôle de Données : LCD (Data Control Language DCL) : Ce langage
permet de définir les droits d'accès pour les différents utilisateurs de la base de données,
donc il permet de gérer la sécurité de la base et de confirmer et d'annuler les transactions.

LDD LMD LCD


Create Select Grant
Alter Insert Revoke
Drop Update Commit
Delete Rollback

Tableau 1 Le langage SQL

2- Le Langage de Définition de Données

2.1- Création de la table (CREATE)


Syntaxe
CREATE TABLE nom_table
(Attribut1 Type [Définition de Contrainte],

Sameh BEN HAMIDA Page 1


Attribut2 Type [Définition de Contrainte],
...
...
Attributn Type [Définition de Contrainte]);

Types de données
 CHAR(n) : Chaîne de n caractères (1<= n <= 255) de longueur fixe (ajout de blancs
pour garder la longueur fixe)
 VARCHAR2(n) ou VARCHAR(n) : Chaîne de caractères de longueur variable n (1<=
n <= 2000).
 NUMBER(p,s) : Nombre représentant un entier relatif ou un réel dont le nombre
total de chiffre est p (appelé précision) et le nombre de décimales est s (appelé
échelle).
 LONG : Données de type chaîne de caractères de longueur variable pour mémoriser
de longs textes allant jusqu'à 2G0.
 DATE : Données de type date.
Contraintes d'intégrité
Une contrainte d'intégrité est une règle qui permet de contrôler la validité et la cohérence
des valeurs entrées dans les différentes tables de la base. Elle peut être définie sous deux
formes :
 Dans les commandes de création des tables.
 Au moment de la modification de la structure de la table.
Il existe des contraintes
 Sur une colonne : La contrainte porte sur une seule colonne. Elle suit la définition
de la colonne. Ces contraintes sont :
- NOT NULL : Spécifie que pour toute occurrence, la colonne doit avoir une valeur.
- UNIQUE : Toutes les valeurs de la colonne sont distinctes.
- PRIMARY KEY : La colonne est une clé primaire pour la table et elle peut être remplacée
par UNIQUE et NOT NULL.
- REFERENCES table(colonne) : Il s'agit d'une contrainte d'intégrité fonctionnelle par
rapport à une clé ; chaque valeur de la colonne doit exister dans la table dont la colonne
est référencée. On utilise cette contrainte pour les clés étrangères.
- CHECK : C'est une contrainte associée à une condition qui doit être vérifiée par toutes
les valeurs de la colonne (domaine des valeurs de l'attribut).
 Sur une table : La contrainte porte sur un ensemble de colonnes d'une même table,
une virgule sépare la définition d'une contrainte de table des définitions des
colonnes.
Ces contraintes sont :
- UNIQUE (coli, colj,...) : L'unicité porte sur le n-uplet des valeurs.
- PRIMARY KEY (coli, colj,...) : Clé primaire de la table (clé composée).
- FOREIGN KEY (coli, colj,...) REFERENCES table (colm,coln,...) [ON DELETE CASCADE] :
Désigne une clé étrangère sur plusieurs colonnes. L'option ON DELETE CASCADE indique
que la suppression d'une ligne de la table de référence va entraîner automatiquement la
suppression des lignes référencées.

Exemple
Soit la base de données relationnelle suivante:
F (NF, Nomf, Ville) -- Cette relation désigne l'ensemble des fournisseurs.
P (NP, Libp, Coul, Poids) -- Cette relation désigne l'ensemble des pièces.

Sameh BEN HAMIDA Page 2


J (NJ, Desig, Ville, Datdeb) -- Cette relation désigne l'ensemble des projets.
FPJ (NF, NP, NJ, Qte)
Toutes les manipulations concernant les commandes SQL seront faites sur cette base de
données.
Application :
 Création de la table F en donnant à sa clé NF les propriétés NOT NULL et UNIQUE.
CREATE TABLE F
(NF VARCHAR2(4) NOT NULL UNIQUE,
Nomf VARCHAR2(15),
Ville VARCHAR2(10));
NB : Chaque instruction SQL doit se terminer par un « ; ».
 Création de la table P en définissant la contrainte pk_NP de clé primaire équivalente
à l'attribution des propriétés NOT NULL et UNIQUE.
CREATE TABLE P
(NP VARCHAR2(4) CONSTRAINT pk_NP PRIMARY KEY,
Libp VARCHAR2(15),
Coul VARCHAR2(10),
Poids NUMBER(6,3));
 Création de la table J sans définir de contrainte ni de propriétés sur la clé, ceci sera
défini ultérieurement par la commande ALTER TABLE.
CREATE TABLE J
(NJ VARCHAR2(4),
Desig VARCHAR2(10),
Ville VARCHAR2(10),
DatDeb DATE);
 Création de la table FPJ en spécifiant la contrainte de clé primaire et l'une des
contraintes de clé étrangère.
CREATE TABLE FPJ
(NF VARCHAR2(4),
NP VARCHAR2(4),
NJ VARCHAR2(4),
Qte NUMBER(5),
CONSTRAINT pk_FPJ PRIMARY KEY (NF,NP,NJ),
CONSTRAINT fk_NF FOREIGN KEY (NF) REFERENCES F(NF));

2.2- Modification de la structure d'une table (Alter table)

a. Ajout d'un attribut :


Permet d'ajouter un attribut à la structure initiale de la table.

Syntaxe
ALTER TABLE Nom_Table
ADD Attribut Type ;

Sameh BEN HAMIDA Page 3


Exemple
 Ajout de l'attribut DatFin à la table J.
ALTER TABLE J
ADD DatFin DATE;
 Ajout des attributs PU NUMBER(5.3) et Qtes NUMBER(5) à la table P.
ALTER TABLE P
ADD PU NUMBER(5,3);
ALTER TABLE P
ADD Qtes NUMBER(5);

b. Agrandissement de la taille d'un attribut :


Permet d'agrandir la taille d'un attribut.

Syntaxe
ALTER TABLE Nom_Table
MODIFY Attribut Nouveau_Type ;

Exemple
 Modification de la taille de l'attribut Desig à VARCHAR2(15).
ALTER TABLE J
MODIFY Desig VARCHAR2(15);

c. Ajout de contrainte :
Permet d'ajouter une contrainte au niveau d'une table.

Syntaxe
ALTER TABLE Nom_Table
ADD CONSTRAINT Nom_Contrainte Définition de la contrainte ;

Exemple
 Ajout de la contrainte de PRIMARY KEY sur l'attribut NJ de la table J.
ALTER TABLE J
ADD CONSTRAINT pk_NJ PRIMARY KEY (NJ);
 Ajout des contraintes de clés étrangères sur la table FPJ.
ALTER TABLE FPJ
ADD CONSTRAINT fk_NP FOREIGN KEY (NP) REFERENCES P(NP);
ALTER TABLE FPJ
ADD CONSTRAINT fk_NJ FOREIGN KEY (NJ) REFERENCES J(NJ);
 Ajout de la contrainte CHECK sur l'attribut Qte (Qte > 0) de la table FPJ et Qtes
(Qtes>0) de la table P.
ALTER TABLE FPJ

Sameh BEN HAMIDA Page 4


ADD CONSTRAINT ck_Qte CHECK (Qte > 0);
ALTER TABLE P
ADD CONSTRAINT ck_Qts CHECK (Qtes > 0);

2.3- Suppression d'une table (DROP TABLE)


Syntaxe
DROP TABLE Nom_Table;
Exemple
 Supprimer la table J
Drop table J ;

2.4- Manipulation des vues

Une vue est une perception logique sur les données d'une ou plusieurs tables ou vues. Elle
est définie à partir d'une requête d'interrogation du langage de manipulation de données
et hérite les mêmes caractéristiques que les objets auxquels elle se réfère (type,
contrainte,...).

a. Création de vue :
Permet de créer une vue à partir d'une requête.

Syntaxe
CREATE VIEW Nom_Vue [(Attr1, Attr2,...)]
AS SELECT ...;
NB : La spécification des noms des colonnes de la vue sont facultatives ; par défaut, les
colonnes de la vue ont pour noms ceux des colonnes résultat du SELECT.

Exemple
 Création de la vue VF_Sousse représentant les fournisseurs de la ville de Sousse.
CREATE VIEW VF_Sousse
AS SELECT *
FROM F
WHERE Ville = ‘Sousse';

b. Suppression d'une vue :


Permet de supprimer une vue.

Syntaxe
DROP VIEW Nom_Vue;

Exemple
 Supprimer la vue VF

Sameh BEN HAMIDA Page 5


DROP VIEW VF ;

c. Utilisation des vues :


L'extraction de données, à partir d'une vue, est réalisée comme s'il s'agit d'une table. Mais,
la manipulation de données à partir d'une vue est soumise à trois règles qui sont les
suivantes :
 Si la vue dérive de plusieurs tables, ou si la définition contient la clause GROUP BY,
la clause DISTINCT ou encore une fonction de groupe, alors les opérations UPDATE,
INSERT et DELETE sont interdites.
 Si un attribut de la vue est défini comme une expression, cet attribut ne peut subir
d'UPDATE, et l'INSERT est interdite sur la vue.
 Si un attribut déclaré NOT NULL dans la table de base n'est pas repris dans la vue,
aucun INSERT ne sera possible sur cette vue.

3- Langage de Manipulation de Données

Ce langage nous permet de rechercher, de modifier, d'ajouter et de supprimer les données


d'une table à travers des requêtes SQL.

3.1- Interrogation de la base : SELECT


La commande SELECT, comprenant des clauses, permet de créer des requêtes pour
extraire des données des tables.

Syntaxe
SELECT liste_attributs
FROM liste_tables
WHERE condition
GROUP BY attributs
HAVING condition_groupe
ORDER BY attribut_tri ;

a. Sélection :
Permet de sélectionner un ensemble de données d'une ou de plusieurs tables.

Syntaxe
SELECT [DISTINCT] Attr1, Attr2, ..., Attrn
FROM Nom_Table1, Nom_Table2,..., Nom_Tablen
WHERE Condition;

Exemple
 Donner la liste des fournisseurs.
SELECT *
FROM F;

Sameh BEN HAMIDA Page 6


NB : ‘*' remplace l'ensemble de tous les attributs de la table.
 Donner le numéro et le nom des fournisseurs de la ville de Sousse.
SELECT NF, Nomf
FROM F
WHERE Ville = 'Sousse';
NB : les opérateurs arithmétiques qui peuvent être utilisés dans la clause WHERE sont :
=, >, <, >=, <=, <>
 Donner l'ensemble des pièces qui ont été utilisées dans les projets (NP seulement).
SELECT DISTINCT NP
FROM FPJ;
NB : DISTINCT est utilisé pour éliminer les duplications, par défaut on obtient tous les
tuples (ALL).
 Donner la liste des projets dont la date de début > ‘01/01/2004'.
SELECT *
FROM J
WHERE DatDeb > '01/01/2004';
 Donner la liste des pièces dont le prix est compris entre 10 et 50.
SELECT *
FROM P
WHERE PU BETWEEN 10 AND 50;
 Donner la liste des fournisseurs dont les noms commencent par ‘B'.
SELECT *
FROM F
WHERE Nomf LIKE 'B%';
NB : LIKE permet l'utilisation des jokers (%) et (-) :
(%) remplace n caractères
(-) remplace 1 caractère
 Donner les numéros et désignation des projets dont les dates de début ou de fin se
trouvent parmi les dates suivantes : ('10-12-00','10-12-04','13-02-03','11-03-04').
SELECT NJ,Desig
FROM J
WHERE DatDeb IN ('10-12-00','10-12-04','13-02-03','11-03-04')
OR DatFin IN ('10-12-00','10-12-04','13-02-03','11-03-04');
NB :
1. les opérateurs logiques sont :NOT, AND et OR. Ils permettent de combiner plusieurs
expressions logiques dans WHERE.
2. Il existe aussi l'opérateur NOT IN.
 Donner les numéros de projets qui n'ont pas de désignation.
SELECT NJ
FROM J
WHERE Desig IS NULL;

b. Sélection avec jointure :


Il s'agit ici de sélectionner es données provenant de plusieurs tables ayant un ou plusieurs
attributs communs. Cette jointure sera assurée grâce aux conditions spécifiées dans la
clause WHERE.

Sameh BEN HAMIDA Page 7


Syntaxe
SELECT [DISTINCT] Attr1, Attr2, ..., Attrn
FROM Nom_Table1, Nom_Table2
WHERE Nom_Table1.Attrj = Nom_Table2.Attrj
AND Condition2
...;

Exemple
 Donner les libellés des pièces utilisées dans le projet de numéro ‘J002'.
SELECT DISTINCT Libp
FROM P,FPJ
WHERE P.NP = FPJ.NP
AND NJ='J002';
On peut exprimer cette jointure autrement :
SELECT Libp
FROM P
WHERE NP IN (SELECT NP
FROM FPJ
WHERE NJ = ‘J002');
 Donner les pièces (toutes les informations) utilisées dans les projets qui ont
démarré au cours de l'année 2003 et qui sont fournies par des fournisseurs de
Tunis.
SELECT DISTINCT P.NP, Libp, coul, Poids, PU, Qtes
FROM P,J, FPJ,F
WHERE P.NP = FPJ.NP
AND F.NF = FPJ.NF
AND J.NJ = FPJ.NJ
AND F.Ville ='Tunis'
AND DatDeb BETWEEN '01/01/03' AND '31/12/03';
NB : Dans certaines requêtes, on est obligé de renommer soit des tables, soit des attributs.
 Donner les libellés des pièces qui ont un prix unitaire supérieurs à celui de la pièce
‘Robinet'.
SELECT P.Libp
FROM P, P P1
WHERE P.PU > P1.PU AND P1.Libp ='Robinet';

c. Groupement :
Il est possible de grouper des lignes de données ayant une valeur commune à l'aide de la
clause GROUP BY et des fonctions de groupe qui sont :

AVG Moyenne
SUM Somme

Sameh BEN HAMIDA Page 8


MIN Minimum
MAX Maximum
COUNT (*) Nombre de lignes
COUNT([DISTINCT] Nombre de valeurs non
Attr) nulles de l'attribut
VARIANCE Variance
STDDEV Ecart type

Syntaxe
SELECT Attr1, Attr2,..., Fonction_Groupe
FROM Nom_Table1, Nom_Table2,...
WHERE Liste_Condition
GROUP BY Liste_Groupe
HAVING Condition ;

Exemple
 Donner le nombre de fournisseurs par projet.
SELECT NJ, COUNT(DISTINCT(NF)) Nbfrs
FROM FPJ
GROUP BY NJ;
 Donner le nombre de fournisseurs par projet en spécifiant les désignations et les
villes des projets.
SELECT FPJ.NJ, Desig, Ville, COUNT(DISTINCT(NF)) Nbfr
FROM FPJ, J
WHERE FPJ.NJ = J.NJ
GROUP BY FPJ.NJ, Desig, Ville;
 Donner la quantité totale commandée par pièce.
SELECT NP, SUM(Qte)
FROM FPJ
GROUP BY NP;
 Donner le total des dépenses par projet.
SELECT NJ,SUM(PU*Qte) Depense
FROM P,FPJ
WHERE FPJ.NP = P.NP
GROUP BY NJ;
 Donner les pièces dont les prix unitaires dépasse la moyenne des prix.
SELECT *
FROM P
WHERE PU > (SELECT AVG(PU) FROM P);
 Donner les projets dont le nombre de fournisseurs dépasse 4.
SELECT NJ, Count(DISTINCT NF)
FROM FPJ
GROUP BY NJ
HAVING Count(DISTINCT NF) > 4;

Sameh BEN HAMIDA Page 9


d. Tri :
Les lignes constituant le résultat d'un SELECT sont obtenues dans un ordre quelconque. La
clause ORDER BY précise l'ordre dans lequel la liste des lignes sélectionnées sera donnée.

Syntaxe
SELECT Attr1, Attr2,..., Attrn
FROM Nom_Table1, Nom_Table2,...
WHERE Liste_Condition
ORDER BY Attr1 [ASC], Attr2 DESC;
NB : L'ordre de tri par défaut est croissant (ASC).

Exemple
 Donner les pièces des projets de Sousse suivant l'ordre décroissant de leurs
quantités totales.
SELECT FPJ.NP, Libp, SUM(Qte) TotQt
FROM P, FPJ, J
WHERE P.NP = FPJ.NP
AND J.NJ = FPJ.NJ
AND Ville = 'Sousse'
GROUP BY FPJ.NP, Libp
ORDER BY TotQt DESC ;

e. Union :
L'opérateur UNION permet de fusionner deux sélections de tables pour obtenir un ensemble
de lignes égal à la réunion des lignes des deux sélections. Les lignes communes
n'apparaîtront qu'une seule fois.

Syntaxe
Requête1
UNION
Requête2 ; Avec Requête1 et Requête2 de même structure.

Exemple
 Donner l'ensemble des fournisseurs des projets de Tunis et de Monastir.
SELECT F.NF, Nomf
FROM F, FPJ, J
WHERE F.NF=FPJ.NF AND J.NJ= FPJ.NJ AND J.Ville='Tunis'
UNION
SELECT F.NF, Nomf
FROM F, FPJ, J
WHERE F.NF=FPJ.NF AND J.NJ= FPJ.NJ AND J.Ville='Monastir';

Sameh BEN HAMIDA Page 10


f. Intersection :
L'opérateur INTERSECT permet d'obtenir l'ensemble des lignes communes à deux
requêtes.

Syntaxe
Requête1
INTERSECT
Requête2 ;
Avec Requête1 et Requête2 de même structure.

Exemple
 Donner l'ensemble des pièces communes aux projets J001 et J003.
SELECT P.NP, Libp
FROM P, FPJ
WHERE P.NP=FPJ.NP AND NJ='J001'
INTERSECT
SELECT P.NP, Libp
FROM P, FPJ
WHERE P.NP=FPJ.NP AND NJ='J003' ;

g. Différence :
L'opérateur MINUS permet d'obtenir les lignes de la première requête et qui ne figurent
pas dans la deuxième.

Syntaxe
Requête1
MINUS
Requête2 ;
Avec Requête1 et Requête2 de même structure.

Exemple
 Donner l'ensemble des pièces qui n'ont pas été utilisées dans des projets.
SELECT NP, Libp
FROM P
MINUS
SELECT P.NP, Libp
FROM P, FPJ
WHERE P.NP=FPJ.NP;

Sameh BEN HAMIDA Page 11


3.2- Insertion de données : INSERT

Syntaxe
INSERT INTO Nom_Table [(Attr1, Attr2,..., Attrn)]
VALUES (Val1, Val2,..., Valn);
Permet d'insérer un tuple à la fois.
Ou
INSERT INTO Nom_Table (Attr1, Attr2,..., Attrn)
SELECT...;
Permet d'insérer plusieurs tuples à partir d'une ou plusieurs autres tables.3.2- Insertion de
données
Exemple
 Remplissage de la table F.
INSERT INTO F VALUES('F001','BATAM','Tunis');
INSERT INTO F VALUES('F002','BATIMENT','Tunis');
INSERT INTO F VALUES('F003','AMS','Sousse');
INSERT INTO F VALUES('F004','GLOULOU','Sousse');
INSERT INTO F VALUES('F005','PRODELEC','Tunis');
INSERT INTO F VALUES('F006','ELECTRON','Sousse');
INSERT INTO F VALUES('F007','SBATIM','Sousse');
INSERT INTO F VALUES('F008','SANITAIRE','Tunis');
INSERT INTO F VALUES('F009','SOUDURE','Tunis');
INSERT INTO F VALUES('F010','MELEC','MONASTIR');
INSERT INTO F VALUES('F011','MBATIM','MONASTIR');
INSERT INTO F VALUES('F012','BATFER','Tunis');
 Remplissage de la table P.
INSERT INTO P VALUES('P001','Robinet','Gris',5,18,1200);
INSERT INTO P VALUES('P002','Prise','Blanc',1.2,1.5,1000);
INSERT INTO P VALUES('P003','Cable','Blanc',2,25,1500);
INSERT INTO P VALUES('P004','Peinture','Blanc',25,33,900);
INSERT INTO P VALUES('P005','Poignée','Gris',3,12,1300);
INSERT INTO P VALUES('P006','Serrure','Jaune',2,47,1250);
INSERT INTO P VALUES('P007','Verrou','Gris',1.7,5.5,2000);
INSERT INTO P VALUES('P008','Fer','Noir',50,90,800);
 Remplissage de la table J.
INSERT INTO J VALUES('J001','ISET','Sousse','10/12/2000','10/12/2004');
INSERT INTO J VALUES('J002','ISG','Sousse','13/02/2003','13/02/2004');
INSERT INTO J VALUES('J003','ISET','Tunis','15/01/2003','15/01/2005');
INSERT INTO J VALUES('J004','METS','Sousse','03/09/2003','03/09/2004');
INSERT INTO J VALUES('J005','FSEG','Monastir','11/03/2000','11/03/2004');
 Remplissage de la table FPJ.
INSERT INTO FPJ VALUES('F001','P001','J001',100);
INSERT INTO FPJ VALUES('F001','P002','J001',50);
INSERT INTO FPJ VALUES('F001','P003','J001',20);
INSERT INTO FPJ VALUES('F001','P004','J002',25);

Sameh BEN HAMIDA Page 12


INSERT INTO FPJ VALUES('F001','P005','J002',10);
INSERT INTO FPJ VALUES('F001','P006','J003',13);
INSERT INTO FPJ VALUES('F001','P007','J004',150);
INSERT INTO FPJ VALUES('F001','P008','J004',15);
INSERT INTO FPJ VALUES('F002','P001','J002',40);
INSERT INTO FPJ VALUES('F002','P003','J003',10);
INSERT INTO FPJ VALUES('F002','P005','J005',20);
INSERT INTO FPJ VALUES('F003','P001','J002',12);
INSERT INTO FPJ VALUES('F003','P006','J004',35);
INSERT INTO FPJ VALUES('F004','P001','J003',22);
INSERT INTO FPJ VALUES('F004','P007','J004',11);
INSERT INTO FPJ VALUES('F005','P001','J004',18);
INSERT INTO FPJ VALUES('F006','P001','J003',8);
INSERT INTO FPJ VALUES('F006','P003','J004',14);
INSERT INTO FPJ VALUES('F006','P006','J004',23);
INSERT INTO FPJ VALUES('F006','P007','J005',42);
INSERT INTO FPJ VALUES('F007','P001','J001',5);
INSERT INTO FPJ VALUES('F007','P001','J002',18);
INSERT INTO FPJ VALUES('F007','P002','J003',17);
INSERT INTO FPJ VALUES('F007','P004','J004',10);
INSERT INTO FPJ VALUES('F007','P004','J005',20);
INSERT INTO FPJ VALUES('F008','P001','J002',6);
INSERT INTO FPJ VALUES('F009','P001','J003',50);
INSERT INTO FPJ VALUES('F009','P005','J004',21);
INSERT INTO FPJ VALUES('F010','P001','J001',2);
INSERT INTO FPJ VALUES('F011','P001','J002',65);
INSERT INTO FPJ VALUES('F011','P002','J002',19);
INSERT INTO FPJ VALUES('F011','P003','J002',56);
INSERT INTO FPJ VALUES('F012','P001','J001',7);
INSERT INTO FPJ VALUES('F012','P004','J005',50);

3.3. Modification des données : UPDATE


Syntaxe
UPDATE Nom_Table
SET Attr1 = Expr1, Attr2 = Expr2
WHERE Condition;

Exemple
 Modifier le Poids de la Pièce de numéro P002 à 1.
UPDATE P
SET Poids = 1
WHERE NP = 'P002';
 Augmenter la quantité en stock des différentes pièces de 10%.
UPDATE P
SET Qtes = 1.1 * Qtes;

Sameh BEN HAMIDA Page 13


3.4- Suppression de données : DELETE
Syntaxe
DELETE FROM Nom_Table
WHERE Condition ;

4- Langage de Contrôle de Données

4.1- Validation de transaction

Une transaction est un ensemble de modifications de la base qui forment un tout indivisible.
L'utilisateur peut à tout moment valider la transaction en cours par la commande COMMIT.
Une transaction commence au début d'une session de travail ou juste après la fin de la
transaction précédente. Tant qu'une transaction n'est pas validée, les insertions,
modifications et suppressions qu'elle a effectuées n'apparaissent pas aux autres
transactions.
NB : Un EXIT provoque automatiquement un COMMIT.

4.2- Annulation de transaction

On peut annuler la transaction en cours par la commande ROLLBACK. Toutes les


modifications depuis le début de la transaction sont annulées. Ce mécanisme est utilisé
pour assurer l'intégrité de la base en cas de fin anormale d'une tâche.

4.3- Privilèges d'accès à la base

Oracle permet à plusieurs utilisateurs de travailler en sécurité sur la même base. Chaque
donnée peut être accessible à un seul utilisateur ou partageable entre plusieurs utilisateurs.
 GRANT : Permet au propriétaire d'une table ou vue de donner à d'autres utilisateurs
des droits d'accès à celles ci.
Syntaxe
GRANT Liste_Privilège ON Table/Vue TO Utilisateur [WITH GRANT OPTION];

Les privilèges sont :

SELECT Droit de lecture


INSERT Droit d'insertion de lignes
UPDATE Droit de modification de lignes
UPDATE (Attr1, Attr2,...) Droit de modification de lignes
limité à certains attributs
DELETE Droit de suppression de lignes
ALTER Droit de modification de la
structure de la table
INDEX Droit de création d'index
ALL Tous les droits

Sameh BEN HAMIDA Page 14


Exemple
GRANT SELECT ON P TO User1;

 REVOKE : Un utilisateur ayant accordé un privilège peut l'annuler à l'aide de la


commande REVOKE.
Syntaxe
REVOKE Liste_Privilège ON Table/Vue FROM Utilisateur;

NB : Si on enlève un privilège à un utilisateur, ce même privilège est automatiquement


retiré à tout autre utilisateur à qui il l'aurait accordé.

Sameh BEN HAMIDA Page 15

Vous aimerez peut-être aussi