Partie II
Base de données
SQL
[Link]
PLAN
v Introduction SGBD et Modèle Relationnel
v Le basic de SQL*PLUS
§ Connexion / Déconnexion
§ Commandes de base
§ Exécution des scripts SQL
v Langage SQL
§ Langage DDL
§ Langage DML
§ Langage DCL
v Conclusion
10/12/18 2 GHERABI Noreddine
Introduction - BD
Travailler directement sur un fichier présente plusieurs
inconvénients :
• Manipulation de données lourde et compliquée. Il faut
être expert en programmation
• Le programmeur doit connaître la localisation physique
des fichiers, la structure physique des enregistrements, le
mode d’accès à ces fichiers
• Toute modification de la structure des enregistrements
(ajout d’un champ par exemple) entraîne la réécriture de
tous les programmes qui manipulent ces fichiers
10/12/18 3 GHERABI Noreddine
Introduction - BD
Problèmes
§ Difficultés de gestion
§ Incohérence des données
§ Coûts élevés
§ Maintenance difficile
§ Gestion de pannes ???
§ Partage des données ???
§ Confidentialité ???
10/12/18 4 GHERABI Noreddine
Introduction - BD
Solution
Utilisateur
Base de
données
Applications
10/12/18 5 GHERABI Noreddine
Introduction - BD
Définition : une base de données est un ensemble d’informations,
(fichiers), partagé par plusieurs utilisateurs.
Ces informations sont interrogées et mises à jour par l’intermédiaire
d’un logiciel.
v Modélisation des données
Ø Eliminer la redondance de données
Ø Centraliser et organiser correctement les données
v Logiciel «Système de Gestion de Bases de Données»
v Factorisation des modules de contrôle des applications
v Interrogation, cohérence, partage, gestion de pannes, etc…
Ø Administration des données
10/12/18 6 GHERABI Noreddine
Résumé - BD
Définition : une base de données est un ensemble structuré
de données (1) enregistrées sur des supports accessibles par
l ’ordinateur (2) pour satisfaire simultanément plusieurs
utilisateurs (3) de manière sélective (4) en un temps
opportun(5).
v (1) : Organisation et description de données
v (2) : Stockage sur disque
v (3) : Partage des données
v (4) : Confidentialité
v (5) : Performance
10/12/18 7 GHERABI Noreddine
Le Basic De SQL*PLUS
[Link]
Introduction
Dans notre monde ou tous change rapidement, de
nouvelles technologies apparaissent d’une façon
inimaginable .
La plupart des applications commencent à opter
pour une implémentation basé sur le graphisme avec des
interfaces utilisateur.
Cependant, SQL*Plus d’ORACLE , quoique très utilisé,
est toujours basé sur une ligne de commande.
10/12/18 9 GHERABI Noreddine
Introduction
SQL*Plus est l’outils ORACLE pour communiquer avec
une base de données et cela depuis pas mal de temps .
C’est une application Client/Serveur qui vous
permet de :
§ Ecrire et exécuter facilement et rapidement des
commandes SQL ainsi que des blocs PL/SQL.
§ Exécuter des requêtes d’administration de la base de
données.
§ Produire des états / rapport de résultats
10/12/18 10 GHERABI Noreddine
Connexion /Déconnexion
Connexion
q A Partir Du menu Démarrer :
Après avoir trouver le groupe ORACLE, Chercher l’icône
SQL*Plus et cliquer Dessus
q A partir de l’invite de commande :
Lancer l’environnement DOS :
Puis exécuter la commande sqlplus
10/12/18 SQL*Plus -M. GHERABI Noreddine 11
Connexion /Déconnexion
Dans les deux cas ,il vous serai demandé d’entrer un Nom
d’Utilisateur et un Mot De Passe.
Mais on peut aussi exécuter directement :
C:\>sqlplus SCOTT/TIGER
Si tous se passe bien vous aurez le prompt
SQL>
Déconnexion:
Un simple EXIT ou QUIT suffit pour arrêter SQL*PLUS
10/12/18 12
Commandes de Base
SQL*PLUS supporte trois types de commandes :
§ Commandes SQL*PLUS :
Ils sont utilisés afin de choisir des options de SQL*PLUS ,des états,
éditer des fichiers ou le tampon de commande. Ils n’interagissent
pas avec la base de données. Ils ne nécessitent pas d’être terminés
avec un ; (mais il est accepté quand même !!)
§ Commandes SQL :
Ce sont les commandes pour agir sur la base de données .
§ Blocs PL/SQL :
Ce sont les scripts en PL/SQL .
10/12/18 13 SQL*Plus -M. GHERABI
Noreddine
Langage SQL
Structured Query Language (SQL)
10/12/18 14 SQL*Plus -M. GHERABI
Noreddine
Langage SQL
SQL est un langage d'interrogation de bases de données
relationnelles ). Il permet certes de manipuler les bases de
données, mais aussi d'administrer ces dernières.
v DDL Data Definition Language
Permet de définir une base de données et ses éléments.
v DML Data Management Language
Permet de gérer, manipuler les éléments d'une base de données.
v DCL Data Control language
Permet d'effectuer des contrôles sur les données.
10/12/18 15 SQL*Plus -M. GHERABI
Noreddine
Les commandes DDL
v La commande CREATE
v La commande DESCRIBE
v La commande ALTER
v La commande DROP
v La commande RENAME
10/12/18 16 GHERABI Noreddine
Les commandes DDL
La commande CREATE: Permet de créer un objet dans la base de données
Syntaxe:
CREATE TABLE nomtable
(
Nomcol1 typecol1 (Taille1) ,
Nomcol2 typecol2 (Taille2) ,
Nomcol3 typecol3 (Taille3)..
)
10/12/18 17 GHERABI Noreddine
Les commandes DDL
Exemple : La commande CREATE
CREATE TABLE Emp
(Id number,
Nom varchar2(50),
Prenom varchar2(50),
Poste varchar2(20),
Sal number
);
10/12/18 18 GHERABI Noreddine
Les commandes DDL
q Les types de données utilisables
Un type chaîne de caractères à longueur fixe (n
char(n)
caractères).
Un type chaîne de caractères à longueur
varchar(n)
variable mais ne dépassant pas n caractères.
number(n,d) Un type numérique à n chiffres et à d décimales
Un type permettant de représenter des dates.
date Attention la syntaxe diffère selon le pays ('jj/
mm/aa' ou 'jj-mm-aa').
long Un type texte de taille maximum 2 Go.
raw Un type binaire (256 octets maximum).
long raw Idem mais jusqu'à 2 Go.
10/12/18 19 GHERABI Noreddine
Les commandes DDL
q Les contraintes supportées par Oracle
null Des cellules de la colonne peuvent ne pas contenir de valeur.
Toutes les cellules de la colonne doivent contenir une valeur
not null
du type mentionné et respectant les contraintes apposées.
Les valeurs d'une telle colonne servent à accéder efficacement
primary key une entrée de la table. Il est clair que chaque valeur doit être
unique.
Les valeurs de cette colonne sont en fait des références sur des
references entrées d'une autres table. C'est par ce mécanisme que l'on
relie des informations dispersées sur plusieurs tables.
permet de vérifier que la valeur saisie pour un champ n'existe
Unique
pas déjà dans la table
check(exp) Toute valeur de la colonne doit vérifier cette condition.
10/12/18 20 GHERABI Noreddine
Les commandes DDL
Contrainte Primary key: Cette commande permet de définir une clé
primaire
Syntaxe:
CREATE TABLE nomtable
(Nomcol1 typecol1 PRIMARY KEY )
Ou :
CREATE TABLE nomtable
(Nomcol1 typecol1,
Constraint Nom_de_contrainte PRIMARY
KEY(NomCol1) )
10/12/18 21 GHERABI Noreddine
Les commandes DDL
Exemple : PRIMARY KEY
CREATE TABLE Emp
(Id number PRIMARY KEY,
Nom varchar2(50));
Ou :
CREATE TABLE Emp
(Id number ,
Nom varchar2(50),
Constraint pk_emp PRIMARY KEY(id));
10/12/18 22 GHERABI Noreddine
Les commandes DDL
Contrainte Foreign key: Cette commande permet de définir une
clé etrangère
Syntaxe:
CREATE TABLE nomtable
( Nomcol1 typecol1,
Nomcol2 typecol2,
Constraint Nom_de_contrainte Foreign key(Nomcol2)
references Table_pere(NomCol2) )
10/12/18 23 GHERABI Noreddine
Les commandes DDL
Exemple : Foreign key
CREATE TABLE client
(Id number PRIMARY KEY,
Nom varchar2(50),
Id_commande number,
Constraint FK_client Foreign key(id_commande)
references commande(id_commande));
10/12/18 24 GHERABI Noreddine
Les commandes DDL
Contrainte Chech: Cette commande permet de définir une
condition sur une colonne
Syntaxe:
CREATE TABLE nomtable
( Nomcol1 typecol1,
Nomcol2 typecol2,
Constraint nom_contrainte Chech (Condition))
10/12/18 25 GHERABI Noreddine
Les commandes DDL
Exemple : check
CREATE TABLE client
(Id number PRIMARY KEY,
Nom varchar2(50),
salaire number,
Constraint ck_client check(salaire>1500));
10/12/18 26 GHERABI Noreddine
Les commandes DDL
Contrainte NOT NULL: Cette commande permet de d’interdir
les valeurs nulles
Syntaxe:
CREATE TABLE nomtable
( Nomcol1 typecol1 NOT NULL,
Nomcol2 typecol2,
)
10/12/18 27 GHERABI Noreddine
Les commandes DDL
Exemple : NOT NULL
CREATE TABLE client
(Id number PRIMARY KEY,
Nom varchar2(50),
salaire number NOT NULL,
);
10/12/18 28 GHERABI Noreddine
Les commandes DDL
Exemple : Résumé
CREATE TABLE Emp
(Id number PRIMARY KEY,
Nom varchar2(15),
Prenom varchar2(15),
Poste varchar2(15) NOT NULL,
Sal number, CONSTRAINT csal_emp CHECK(sal
BETWEEN 0 AND 30000));
10/12/18 29 GHERABI Noreddine
Les commandes DDL
Contrainte default : Cette contrainte permet d'indiquer le contenu d'une zone quand
elle n'est pas indiquée lors de l'insertion d'une ligne dans la table.
Syntaxe:
CREATE TABLE nomtable
( Nomcol1 typecol1 Default (‘Valeur par defaut’),
Nomcol2 typecol2,
)
10/12/18 30 GHERABI Noreddine
Les commandes DDL
Exemple : Default
CREATE TABLE client
(Id number PRIMARY KEY,
Nom varchar2(50),
salaire number NOT NULL,
etat varchar2(10) Default (‘Marie’)
);
10/12/18 31 GHERABI Noreddine
Les commandes DDL
Définir une valeur par défaut : La clause DEFAULT doit être suivie par la
valeur à affecter. Cette valeur peut être un des types suivants:
§ Constante numérique
§ Constante alphanumérique (chaîne de caractères)
§ Le mot clé NULL
§ Le mot clé CURRENT_DATE (date de saisie)
§ Le mot clé CURRENT_TIME (heure de saisie)
§ Le mot clé CURRENT_TIMESTAMP (date et heure de
saisie)
10/12/18 32 GHERABI Noreddine
Les commandes DDL
La commande DESCRIBE
Cette commande permet de donner une description sur une table (le nom du
champ, le type du champ et la contrainte appliquée sur le champ)
Syntaxe:
DESCRIBE nomtable
10/12/18 33 GHERABI Noreddine
Les commandes DDL
Exemple : Describe
DESCRIBE Emp ;
Nom de la colonne Null? Type
------------------------------ -------- ----
ID NOT NULL NUMBER
NOM VARCHAR2(15)
PRENOM VARCHAR2(15)
POSTE NOT NULL VARCHAR2(15)
SAL NUMBER
10/12/18 34 GHERABI Noreddine
Les commandes DDL
La commande ALTER: Cette commande permet d'altérer (de
modifier) une structure déjà existante
Syntaxe:
ALTER TABLE nom table
ADD nomNouvelleCol typeColonne,
DROP COLUMN nomColEn,
MODIY nomcolAChanger
nouveau_type_de_données NULL ou NOT NULL
ADD CONSTRAINT nom Contrainte …
DROP CONSTRAINT nom Contrainte
10/12/18 35 GHERABI Noreddine
Les commandes DDL
Exemples: Alter
v ALTER TABLE client
ADD CIN number NOT NULL;
v ALTER TABLE client
DROP COLUMN salaire;
v ALTER TABLE client
MODIFY salaire varchar2(20),
v ALTER TABLE client
DROP CONSTRAINT ck_client ;
10/12/18 36 GHERABI Noreddine
Les commandes DDL
La commande DROP: Cette commande permet supprimer une table
dans une base de données
Syntaxe:
DROP TABLE nom table;
DROP TABLE nom table CASCADE CONSTRAINTS
Exemple : DROP
DROP TABLE client;
10/12/18 37 GHERABI Noreddine
Les commandes DDL
La commande RENAME: Cette commande permet de renommer une table
dans une base de données
Syntaxe:
RENAME table1 TO Table2;
Renommer table1 par un autre nom table2
Exemple : RENAME
RENAME client TO personne ;
10/12/18 38 GHERABI Noreddine
Les commandes DML
(Data Manipulation Language)
q La commande INSERT
q La commande UPDATE
q La commande DELETE
q La commande SELECT
10/12/18 39 GHERABI Noreddine
Les commandes DML
La commande INSERT: Cette commande permet d’insérer des nouvelles
données a la base de données
Syntaxe:
INSERT INTO <nom table>
values (val1, val2, val3,..., valn)
INSERT INTO <nom table> (col1, col2, col3,...., coln)
values (val1, val2, val3, ..........,
valn)
10/12/18 40 GHERABI Noreddine
Les commandes DML
Exemple: INSERT
v Insert into client values(‘alami’,’adil’,’20’) ;
v Insert into client(nom,prenom,age)
values(‘alami’,’adil’,’20’) ;
10/12/18 41 GHERABI Noreddine
Les commandes DML
La commande UPDATE: Les données peuvent être automatiquement
modifiées par la commande UPDATE
Syntaxe:
UPDATE <nom table>
SET <colonne1> = <expression>,
<colonne2> = <expression2>
WHERE condition
10/12/18 42 GHERABI Noreddine
Les commandes DML
Exemple: UPDATE
v Update client Set age=age +5
Where nom=‘alami’;
v Update client Set Nom=‘Nadime’
Where age>25;
10/12/18 43 GHERABI Noreddine
Les commandes DML
La commande DELETE: On peut supprimer un enregistrement en
utilisant la commande delete et selon une condition.
Syntaxe:
Delete from <nom table>
WHERE condition
10/12/18 44 GHERABI Noreddine
Les commandes DML
Exemples: DELETE
v Delete from client Where nom=‘alami’;
v Delete from client Where age>25;
v Delete from client where age between 20 and 40;
10/12/18 45 GHERABI Noreddine
Les commandes DML
La commande SELECT: La commande select permet d’extraire les
informations d’une table.
Syntaxe:
v SELECT * FROM <nom de table>
v SELECT <col 1> , <col 2> , <col N> FROM <nom de
table>
10/12/18 46 GHERABI Noreddine
Les commandes DML
Exemples: SELECT
v Select * from client;
v Select nom,prenom from client;
10/12/18 47 GHERABI Noreddine
Les commandes DML
Les opérateurs:
10/12/18 48 GHERABI Noreddine
Les commandes DML
Exemple: Opérateurs
10/12/18 49 GHERABI Noreddine
Les commandes DML
Concaténation: l’opérateur || permet de concaténer deux ou plusieurs
valeurs des champs
Exemple :
Select nom || ‘est un ‘ || fonction as ‘’ détails employés ’’
from Employe;
détails employés
Alami est un ingénieur
Anouari est un directeur
Saloumi est un technicien
…
…
10/12/18 50 GHERABI Noreddine
Les commandes DML
Les clauses SELECT:
1. From
2. Where
3. ORDER BY
4. GROUP BY
5. DISTINCT
10/12/18 51 GHERABI Noreddine
Les commandes DML
Exemples:
– Select * from client where num=10;
– Select * from client ORDER BY nom asc;
– Select DISTINCT nom From client;
10/12/18 52 GHERABI Noreddine
Les commandes DML
Clause: Group by __ Having en utilisant la clause HAVING en
conjonction avec la clause GROUP BY. La clause HAVING filtre des
groupes de lignes.
v Select sum(prix) from produit group by libelle having
sum(prix)>1000’;
10/12/18 53 GHERABI Noreddine
Les commandes DML
q Les fonctions de regroupement
AVG(exp) calcule une moyenne.
COUNT(exp) calcule le nombre d'éléments
SUM(exp) calcule la somme d’une colonne
MAX(), MIN(exp) calcule le minimum et le maximum
10/12/18 54
GHERABI Noreddine
Les commandes DML
Les fonctions scalaires Avec la clause WHERE, il nous est possible
d'utiliser les prédicats suivants :
§ ALL
§ ANY
§ BETWEEN , NOT BETWEEN
§ EXISTS, NOT EXISTS
§ IN , NOT IN
§ LIKE , NOT LIKE
10/12/18 55 GHERABI Noreddine
Les commandes DML
Les fonctions scalaires :Between
SELECT nom, surnom FROM client
WHERE age BETWEEN 20 and 50
équivaut à :
SELECT nom, surnom FROM client
WHERE age >= 20 and age <= 50
10/12/18 56 GHERABI Noreddine
Les commandes DML
Les fonctions scalaires : IN
v SELECT nom, surnom FROM client
WHERE age in( 20,30,50);
v SELECT nom, surnom FROM client
WHERE nom IN (‘Abid' ,‘Essaidi');
10/12/18 57 GHERABI Noreddine
Les commandes DML
Les fonctions scalaires : LIKE
v SELECT nom, surnom,age FROM client
WHERE nom LIKE ‘alami‘;
v SELECT nom, surnom,age FROM client
WHERE nom LIKE ‘a%‘;
v SELECT nom, surnom,age FROM client
WHERE nom LIKE ‘%m‘;
10/12/18 58 GHERABI Noreddine
Les commandes DML
Les fonctions scalaires : ANY
doit être précédé de =,!=,>,>=,<,<= expression >= ANY(val1, val2, ..,
valn)
vraie si expression est = à n’importe qu’elle valeur valide de la liste
v SELECT nom,prenom FROM client WHERE
nom = ANY (SELECT nom FROM fournisseur).
10/12/18 59 GHERABI Noreddine
Les commandes DML
Les fonctions scalaires : ALL
doit être précédé de =,!=,>,>=,<,<= expression >= ALL (val1, val2, ..,
valn)
vraie si expression est >= à toutes les valeurs valide la liste
v SELECT nom,prenom FROM client WHERE
age > ALL (SELECT age FROM fournisseur).
10/12/18 60 GHERABI Noreddine
Les commandes DML
Les fonctions scalaires : EXISTS
requête vraie si la requête rend au moins une ligne.
v SELECT nom, surnom,age FROM client
WHERE EXISTS (SELECT * from personne )
10/12/18 61 GHERABI Noreddine
Les commandes DML
Jointure entre les tables
La jointure permet de compléter les colonnes d'une table par
des colonnes provenant d'autres tables avec lesquelles on a des
critères de jointure c'est à dire des données de même nature qui
permettent de faire une liaison, une relation.
10/12/18 62 GHERABI Noreddine
Les commandes DML
Jointure: Exemples
v Select [Link],[Link] from client,produit
where [Link]=[Link];
v Select [Link],[Link] from client,produit
where [Link]=[Link] and [Link]
like ‘a%’;
10/12/18 63 GHERABI Noreddine
Les commandes DML
Jointure: exemple de jointure entre 3 tables
Sélectionner la liste des clients qui ont achetés un produit du
fourinsseur « anouari »
v Select [Link] from client cl,produit pr, fournisseur fr
where [Link]=[Link]
and [Link]=[Link]
and [Link] =‘anouari’;
10/12/18 64 GHERABI Noreddine
Les commandes DML
Jointure avec IN
v Select nom from client
where num in (select num from produit);
10/12/18 65 GHERABI Noreddine
Les commandes DML
Union
SELECT LIB FROM PRODUIT
WHERE COUL = “Rouge“
UNION
SELECT LIB FROM PRODUIT
WHERE QTES < 10 ;
10/12/18 66 GHERABI Noreddine
Les commandes DML
Intersection :
SELECT LIB FROM PRODUIT
WHERE COUL = “Rouge“
INTERSECT
SELECT LIB FROM PRODUIT
WHERE QTES < 10 ;
10/12/18 67 GHERABI Noreddine
Les commandes DML
Quelques fonctions prédéfinies
Ø Les fonctions numériques
Ø Les fonctions sur chaînes de caractères
Ø Les fonctions sur les dates
10/12/18 68 GHERABI Noreddine
Les commandes DML
q Les fonctions numériques
ABS(n) retourne la valeur absolue de n.
SIGN(n) retourne le signe de n (-1, 0 ou 1).
CEIL(n) plus petit entier plus grand ou égal à n
FLOOR(n) plus grand entier inférieur ou égal à n
MOD(m,n) calcule le reste de la division entière de m par n.
POWER(m,n) calcule la valeur de m élevé à la puissance n
SQRT(n) retourne la racine carrée de n.
10/12/18 69
GHERABI Noreddine
Les commandes DML
q Les fonctions sur chaînes de caractères
LENGTH(ch) retourne la longueur de la chaîne.
UPPER(ch) met la chaîne de caractères en majuscule.
LOWER(ch) met la chaîne de caractères en minuscule.
met la première lettre de la chaîne en majuscule, le reste en
INITCAP(ch)
minuscule.
complémente la chaîne à gauche :
LPAD(ch,l,sch)
LPAD('ESSAI',10,"#@") = '#@#@#ESSAI'
complémente la chaîne à droite :
RPAD(ch,l,sch)
RPAD('ESSAI',10,"_") = 'ESSAI_____'
renvoit la sous chaîne spécifiée :
SUBSTR(ch,d,l)
SUBSTR('Dominique’,2,5) = 'omin'
10/12/18 70
GHERABI Noreddine
Les commandes DML
q Quelques fonctions sur les dates
LAST_DAY(date) retourne le dernier jour dans le mois.
MONTHS_BETWEEN(d1,d2) calcul le nombre de mois entre deux dates.
ADD_MONTHS(date,n) ajoute n mois à la date.
(MM) Retourne le mois d’une date
TO_CHAR(date,’MM’) (YYYY) Retourne l’année
(DD) Retourne le jour
10/12/18 71
GHERABI Noreddine
Les Vues
Il est possible d'avoir une vue partielle d'une table ou de plusieurs tables.
Une vue se comporte comme une table mais ne contient pas de données.
Ses données sont extraites d'autres tables ou vues. Une vue comporte
plusieurs avantages :
Ø Un utilisateur peut n'être intéressé que par certaines colonnes et certaines
lignes d'une table donnée. La vue lui permet de ne voir que ces lignes et
ces colonnes.
Ø Le propriétaire d'une table peut désirer n'en autoriser qu'un accès limité, à
d'autres utilisateurs. La vue lui permet de le faire. Les autres utilisateurs
qu'il aura nommés n'auront accès qu'à la vue qu'il aura définie.
GHERABI Noreddine 72
Les Vues
q Création d’une vue
v CREATE VIEW nom_vue
AS SELECT colonne1, colonne2, ... FROM table WHERE condition
crée la vue nom_vue. Celle-ci est une table ayant pour structure colonne1,
colonne2, ... de table et pour lignes, les lignes de table vérifiant condition
(toutes les lignes s'il n'y a pas de condition)
Exemple :
create view V_Client as select nom,prenom,age
from client where ville=’Casablanca';
73
GHERABI Noreddine
Les Vues
q Mise à jour d’une vue
Il est possible de mettre à jour une vue comme on le fait pour une table.
Toutes les tables d'où sont extraites les données de la vue sont affectées
par cette mise à jour.
Exemples :
§ Delete from V_Client where age > 30;
§ Update V_Client set age=23 where nom =‘anouari’;
74
GHERABI Noreddine
Les Vues
q Supprimer une vue
Pour supprimer une vue en utilisant la commande DROP utilisée pour la
suppression des tables
DROP VIEW nom_vue
Exemple :
§ DROP VIEW V_Client;
75
GHERABI Noreddine
Les Vues
q Liste des vues
v describe user_views
v select view_name from user_views
76
GHERABI Noreddine
Les commandes DCL
Dans cette partie on va voir comment un administrateur gère les
utilisateurs de la base. Nous allons voir comment créer un
utilisateur et comment lui donner des droits, des restrictions.
1. Création d'un utilisateur
2. Suppression d'un utilisateur
3. Assigner des privilèges système à un utilisateur
4. Assigner des privilèges Objets à un utilisateur
5. Créer des rôles et leur assigner des privilèges
6. Suppression des privilèges
10/12/18 GHERABI Noreddine 77
Les commandes DCL
Ø Création d'un utilisateur
Syntaxe :
CREATE USER name IDENTIFIED BY password;
Exemple :
CREATE USER admin IDENTIFIED BY admin01;
10/12/18 78 GHERABI Noreddine
Les commandes DCL
Ø Suppression d'un utilisateur
Syntaxe :
DROP USER name CASCADE;
Exemple :
DROP USER admin CASCADE;
10/12/18 79 GHERABI Noreddine
Gestion des utilisateurs
Ø Modification du status d'un utilisateur:
Syntaxe :
v ALTER USER user ACCOUNT LOCK;
v ALTER USER user ACCOUNT UNLOCK;
10/12/18 80 GHERABI Noreddine
Les commandes DCL
Affectation d'un privilège
Il existe deux grandes familles de privilèges :
- Les privilèges dits systèmes.
- Les privilèges définis sur les schéma (objects)
10/12/18 81
SQL*Plus -M. GHERABI Noreddine
Affectation des privilèges
Les privilèges systèmes: Les privilèges systèmes, sont plus
généraux dans le sens où ils s'utilisent sur un ensemble
d'objets
v CREATE SESSION
v ALTER ANY (TABLE ...),
v CREATE ANY (TABLE, ...),
v CREATE USER,
v DROP ANY TABLE,
v GRANT ANY (ALL PRIVILEGES, DBA, CONNECT ..
v UNLIMITED TABLESPACE
10/12/18 82 GHERABI Noreddine
Affectation des privilèges
Les privilèges systèmes
Affectation des privilèges
Les privilèges systèmes
Syntaxe :
GRANT Option
TO utilisateur;
WITH ADMIN OPTION;
Exemple :
GRANT CREATE SESSION TO adil WITH ADMIN
OPTION;
GRANT DROP User TO said;
10/12/18 84 GHERABI Noreddine
Affectation des privilèges
Les privilèges définis sur les schéma objects: Par défaut, un
utilisateur ne peut utiliser que ses propres schéma objects.
Pour qu'il puisse en utiliser d'autres, il faut lui donner ce privilège. De
plus, ne donne pas un privilège qui veut : il faut obligatoirement avoir le
droit de donner ce privilège (soit en étant propriétaire des données, soit en
ayant reçu le privilège en question avec l'instruction GRANT).
Syntaxe :
GRANT Option
ON Table
TO utilisateur;
WITH GRANT OPTION;
10/12/18 85 GHERABI Noreddine
Affectation des privilèges
Les privilèges objets
Affectation des privilèges
Les privilèges objets
Exemples :
GRANT Select
ON Client
TO nour;
GRANT Select,update(col1,col2),delete
ON Client
TO nour,adil;
10/12/18 87 GHERABI Noreddine
RÔLES ET PRIVILÈGES
Ø Création des rôles
Syntaxe:
v CREATE ROLE Compta;
Exemples :
v GRANT SELECT, INSERT, UPDATE, DELETE ON
FACTURE TO Compta ;
Affectation d’un rôle a un utilisateur
v GRANT Compta TO nom_utilisateur ;
10/12/18 88 GHERABI Noreddine
RÔLES ET PRIVILÈGES
Ø Les rôles standards
Trois rôles existent en standard
CONNECT
RESOURCE
DBA
GRANT connect TO nom_utilisateur ;
select * from DBA_SYS_PRIVS where grantee='CONNECT' ;
select * from DBA_SYS_PRIVS where grantee='RESOURCE' ;
select * from DBA_SYS_PRIVS where grantee='DBA' order by PRIVILEGE
RÔLES ET PRIVILÈGES
Ø Suppression des rôles
Syntaxe:
v DROP ROLE Nom_Role;
Exemple :
v DROP ROLE Compta;
10/12/18 90 GHERABI Noreddine
RETIRER DES PRIVILÈGES
Ø Suppression des privilèges
Syntaxe:
v Privileges systèmes :
REVOKE Option FROM Utilisateur;
v Privilèges objets
REVOKE Option ON table
FROM Utilisateur;
10/12/18 91 GHERABI Noreddine
RETIRER DES PRIVILÈGES
Ø Suppression des privilèges
Exemples:
v SYSTEME
REVOKE Create table
FROM nour;
v OBJET
REVOKE Select ON Client
FROM nour;
10/12/18 92 GHERABI Noreddine
RETIRER DES PRIVILÈGES
Ø Liste des rôles et privilèges assignés à un utilisateur
La liste des rôles assignés à un utilisateur s'obtient via les vues:
DBA_ROLE_PRIVS et USER_ROLE_PRIVS
SQL> select * from DBA_ROLE_PRIVS where grantee = ‘user' ;
La liste des privilèges objet assignés à un utilisateur s'obtient en interrogeant
les vues :
DBA_TAB_PRIVS, ALL_TAB_PRIVS et USER_TAB_PRIVS
SQL> select * from DBA_TAB_PRIVS where grantee = ‘user' ;