Vous êtes sur la page 1sur 15

SQL Oracle

S.EUSCHI

TP n° 1
Master RCS
2013/2014

1
Création de L’utilisateur
User coursBDA
-- Create the user
create user CoursBDA identified by RCS
default tablespace USERS
-- QUOTA 20M ON users
temporary tablespace TEMP
-- QUOTA 10M ON temp
profile DEFAULT;
-- Grant/Revoke system privileges
grant connect to CoursBDA;
grant dba to CoursBDA;
grant resource to CoursBDA;
-- Grant/Revoke system privileges
grant unlimited tablespace to CoursBDA; 2
Création de tables
Table DEPT
create table DEPT
( DEPTNO number(2) not null
constraint PK_DEPT primary key,
DNAME varchar2(14),
LOC varchar2 (13)
)

3
Création de tables
Table EMP
create table EMP
( EMPNO number(4) not null constraint PK_EMP
primary key ,
ENAME varchar2(10),
JOB varchar2 (9),
MGR number (4),
HIREDATE DATE,
SAL number (7,2),
COMM number (7,2),
DEPTNO number (2) constraint FK_DEPTNO
foreign key references DEPT (DEPTNO)
)
4
Not NULL : Valeurs nulles non permises à
l’insertion ou la modification
Numériques avec positions décimales :
SAL number(7,2) : 7 numériques dont 2
positions décimales
MGR number(4) : 4 numériques sans
position décimale
Chaine de caractères de longueur fixe :
char(n)
Chaine de caractères de longueur variable
: varchar2(n), les colonnes de valeurs
nulles n’occupent aucun espace sur le
disque.
5
 La commande INSERT : Ajouter des lignes dans
une table
insert into DEPT values (30, ‘Sales’,’Chicago’);
 Sélection de toutes les colonnes d’une table
select * from DEPT;
 Sélection de colonnes spécifiques
select DNAME, DEPTNO from DEPT;
 La clause where : Sélection de lignes spécifiques
select * from EMP where DEPTNO = 30;
 Recherche multiple
select ENAME,JOB,SAL from EMP where
JOB=‘MANAGER’ and SAL > 2800;
 Recherche alternative
select ENAME,JOB,SAL from EMP where
JOB=‘MANAGER’ or SAL > 2800;
6
 Négation
select ENAME,JOB,SAL from EMP where
JOB=‘MANAGER’ and DEPTNO != 30;
 L’opérateur BETWEEN (recherche dans une plage
de valeurs)
select ENAME,SAL from EMP where SAL between
1200 and 1400;
 L’opérateur IN (dans une liste)
select * from DEPT where DEPTNO in (10,30);
 Tri de lignes : la clause order by
select SAL, JOB, ENAME from EMP where DEPTNO
= 30 order by SAL;
 Tri décroissant :
select SAL, JOB, ENAME from EMP where DEPTNO
= 30 order by JOB, SAL desc;
7
 La clause distinct
select JOB from EMP;
select distinct JOB from EMP;
 Requête jointure
Trouver le nom du département et sa
localisation de l’employé ALLEN
select ENAME,DNAME,LOC from EMP,DEPT
where EMP.DEPTNO=DEPT.DEPTNO and
ENAME=‘ALLEN’;
Jointure et tri de toutes les lignes
select DNAME, ENAME,JOB,SAL from
EMP,DEPT where
EMP.DEPTNO=DEPT.DEPTNO
order by DNAME,SAL desc;
8
 Opérateurs et fonctions arithmétiques
+, -,*,/ , power, round, trunc, abs
select ENAME,SAL,COMM,SAL+COMM from EMP
where JOB = ‘SALESMAN’;
 Fonctions de chaines de caractères
|| : opérateur de concaténation , length, substr,
upper, lower

9
Les fonctions de groupage
 La clause group by
Le salaire maximum de chaque département
select DEPTNO, max(SAL) from EMP
group by DEPTNO;
Autres fonctions de groupage : min, sum, avg,
count(*)
select DNAME,sum(SAL),avg(SAL),count(*) from
EMP,DEPT where EMP.DEPTNO=DEPT.DEPTNO
group by DNAME;
 Groupage sur plusieurs colonnes
select DNAME, JOB, sum(SAL),count(*), avg(SAL)
from EMP,DEPT where
EMP.DEPTNO=DEPT.DEPTNO
group by DNAME,JOB; 10
Les fonctions de groupage
 La clause having
select DNAME, JOB, sum(SAL),count(*),
avg(SAL) from EMP,DEPT where
EMP.DEPTNO=DEPT.DEPTNO
group by DNAME,JOB
having count(*) >= 2;

11
Les sous requêtes
 Requêtes imbriquées, la clause where d’une requête
peut contenir une autre requête appelée sous requête
Exemple : liste des employés ayant la même fonction
que JONES
select ENAME, JOB from EMP
Where JOB = (select JOB from EMP where
ENAME=‘JONES’);
La sous requête est exécutée avant la requête
principale
 Un autre exemple : liste des employés ayant un salaire
> à la moyenne des salaires de tous les emplyés
select ENAME, SAL from EMP
Where SAL > (select avg(SAL) from EMP);
12
La mise à jour de données
 Ajouter des lignes (insert), modifier des lignes
(update), supprimer des lignes (delete)
 La commande UPDATE
Exemple1 : ajouter 100$ au salaire de chaque employé
ayant la fonction ‘CLERK’
update EMP set SAL = SAL + 100 where
JOB=‘CLERK’;
Exemple2 : augmenter le salaire de 10 % et donner
une commission de 300$ à tous les employés du
département n° 10’
update EMP set SAL = SAL * 1.10, COMM=300
where DEPTNO=10;
 La commande INSERT
insert into DEPT values(50, ‘SOFTWARE’,’PALO
13
ALTO’);
La mise à jour de données
 Création d’une table à partir d’une table existante
Inserer dans la table promotion les employés ayant une
commission > 25% de leurs salaires
create table PROMOTION
(ENAME,JOB,SAL,COMM) as select ENAME, JOB,
SAL, COMM from EMP
where COMM > 0.25 * SAL;
 La commande DELETE
Effacer le département n° 40 qui ne contient aucun
employé
Delete from DEPT where DEPTNO = 40;

14
Interrogation de la base de données
 Exprimer en SQL les requêtes suivantes:
1) Nom (ENAME), salaire (SAL), commission (COMM),
salaire+commission de tous les vendeurs (CLERK).
2) Nom des vendeurs par ordre décroissant de la commission et
salaire.
3) Nom des vendeurs dont la commission est inférieure à 25% de
leur salaire.
4) Nombre d'employés du département n° 10.
5) Nombre d'employés ayant une commission non nulle.
6) Nombre de fonctions (JOB) différentes.
7) Salaire moyen par fonction (sans tenir compte des commissions).
8) Total des salaires du département SALES.
9) Nom des employés avec le nom de leur département.
10) Nom, fonction et salaire de l'employé ayant le salaire le plus
élevé.
11) Nom des employés gagnant plus que ‘ALLEN ’.
12) Nom des employés occupant la même fonction que ‘ALLEN ’. 15

Vous aimerez peut-être aussi