Vous êtes sur la page 1sur 12

SQL Oracle

S.EUSCHI

TP n° 2
3 eme LMD SI
2017/2018
1
Changement dynamique de la description d’une
table
 La commande alter table add ou modify
Ajouter une nouvelle colonne à une table existante,
ajouter une contrainte ou modifier une colonne
existante (type de données, longueur, contrainte
d’intégrité colonne,…)
 Créer une table PROJ

create table PROJ


( PROJNO number(3) not null constraint PK_PROJ
primary key ,
PNAME varchar2(5),
BUDGET number(7,2)
)
2
 Ajouter ces lignes dans PROJ
Insert into PROJ values(101,’ALPHA’,96000);
Insert into PROJ values(102,’BETA’,82000);
Insert into PROJ values(103,’GAMMA’,15000);
Commit; -- Valider la transaction
Select * from PROJ;
 Ajouter une colonne PROJNO à la table EMP

alter table EMP add PROJNO number(3);


alter table EMP add constraint FK_PROJNO foreign key
(PROJNO) references PROJ (PROJNO) enable;
 Affecter les employés aux projets

-- Les employés du dept 20 ont le projet 101


update EMP set PROJNO=101 where DEPTNO=20;
-- les autres employés au projet 102
update EMP set PROJNO=102 where DEPTNO!=20; 3
 Afficher les employés avec leurs noms de projet
Select ENAME,JOB,DEPTNO,PNAME from EMP,PROJ
where EMP.PROJNO=PROJ.PROJNO;
 Changer la valeur budget du projet 103 de 15000
à 105000
Update PROJ set BUDGET=105000 where
PROJNO=103;
 Erreur : largeur de colonne insuffisante

 Augmenter la taille de la colonne BUDGET

 Alter table PROJ modify BUDGET number(8,2);

 Update PROJ set BUDGET=105000 where


PROJNO=103;
 1 row updated

 Select * from PROJ;

4
Les vues (les requêtes storées)
Une vue est une fenêtre sur la table de la base de
données
Une vue est une table virtuelle, la table a une existence
physique mais la vue est une structure logique basée
sur une ou pls tables.
Les vues permettent de :
- Simplifier l’accès aux données (éviter d’interroger des

tables complexes)
- Sécuriser les données (limiter les accès aux données)

5
Exemple1 : créer une vue basée sur la table EMP donnant
le n°, nom et fonction des employés du département 10
:
create or replace view EMP10 as select EMPNO,
ENAME,JOB from EMP where DEPTNO=10;
select * from EMP10;
Exemple 2 : créer une vue jointure basée sur les tables
EMP et PROJ affichant le n°, nom employé et nom de
son projet : :
create or replace view PERSONNEL as select EMPNO,
ENAME,PNAME from EMP,PROJ where
EMP.PROJNO=PROJ.PROJNO;
select * from PERSONNEL;

6
Indépendance de données
 Structure permettant des relations plusieurs à
plusieurs
Exemple : Un employé travaille dans pls projets, un
projet peut avoir plusieurs employés
EMP 0,n PROJ
0, n
#EMPNO Est affecté #PROJNO
Workhrs

 Créer une table PE


create table PE
( EMPNO number(4) not null ,
PROJNO number(3) not null ,
WORKHRS number(4), 7

constraint PK_PE primary key(EMPNO,PROJNO));


 Affecter les employés au projets:
 insert into PE values(7369,101,0);
 insert into PE values(7369,102,0);
 insert into PE values(7499,101,0);
 insert into PE values(7521,101,0);
 insert into PE values(7566,101,0);
 insert into PE values(7698,102,0);
 ….
 Commit; -- valider les insertions
 La colonne PROJNO de EMP est inutile
après la création de PE
 update EMP set PROJNO = null;
 Supprimer la vue PERSONNEL
 drop view PERSONNEL;
8
 Créer la nouvelle vue PERSONNEL avec la
table PE:
 Create or replace view PERSONNEL as
select ENAME,JOB,PNAME from emp,
proj, pe where EMP.EMPNO=PE.EMPNO
and PE.PROJNO=PROJ.PROJNO;
 Si on a un programme qui utilise la vue PERSONNEL,
il continue à s’exécuter normalement
 Select * from PERSONNEL order by ENAME;

9
Partage de données et sécurité
 SQL comporte des commandes LDD permettant:
• d’attribuer les privilèges d’accès sur des tables ou
des vues à d’autres utilisateurs (GRANT)
• De restituer des privilèges déjà attribués aux
utilisateurs (REVOKE)
 Exemple1 : autoriser l’utilisateur SCOTT à
interroger la vue PERSONNEL
 grant SELECT on PERSONNEL to SCOTT;
 connect SCOTT/TIGER
 select * from CoursBDA.PERSONNEL;

10
 Exemple2 : autoriser tous les utilisateurs
d’interroger la table EMP à l’exception des
colonnes SAL et COMM
 Créer une vue basée sur la table EMP :
 create or replace view EMPS as select
EMPNO,ENAME,JOB,MGR,HIREDATE,DEPTNO
from EMP;
• Autoriser l’interrogation de cette vue par tous les
utilisateurs:
 grant SELECT on EMPS to public;

 La commande REVOKE
On peut restituer un privilège qu’on a déjà attribué à
un utilisateur
 revoke SELECT on PERSONNEL from SCOTT;
11
Les privilèges objets
Privilèges Privilèges Privilèges Privilèges
table view procedure sequence

Select Select Execute alter

Insert Insert select

Update Update

Delete Delete

Alter

Index

12

Vous aimerez peut-être aussi