and DEPTNO - e-Learn Université Ouargla

Transcription

and DEPTNO - e-Learn Université Ouargla
SQL Oracle
S.EUSCHI
TP n°
n° 1
Master RCS
2013/
2013
/2014
1
Création de tables
Table DEPT
create table DEPT
( DEPTNO number(2
number(2) not null
constraint PK_DEPT primary key,
DNAME varchar2
varchar2(14
14),
),
LOC varchar2
varchar2 (13
13))
)
2
Création de tables
Table EMP
create table EMP
( EMPNO number(4
number(4) not null constraint PK_EMP
primary key ,
ENAME varchar2
varchar2(10
10),
),
JOB
varchar2 (9),
varchar2
MGR
number (4
(4),
HIREDATE DATE,
SAL
number (7
(7,2),
COMM
number (7
(7,2),
DEPTNO number (2
(2) constraint FK_DEPTNO
foreign key references DEPT (DEPTNO)
)
3
Not NULL : Valeurs nulles non permises à
l’insertion ou la modification
Numériques avec positions décimales :
SAL number
number((7,2) : 7 numériques dont 2
positions décimales
MGR number
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
: varchar
varchar2
2(n), les colonnes de valeurs
nulles n’occupent aucun espace sur le
disque.
4






La commande INSERT : Ajouter des lignes dans
une table
insert into DEPT values (30
(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
30;;
Recherche multiple
select ENAME,JOB,SAL from EMP where
JOB=‘MANAGER’ and SAL > 2800
2800;;
Recherche alternative
select ENAME,JOB,SAL from EMP where
JOB=‘MANAGER’ or SAL > 2800
2800;;
5





Négation
select ENAME,JOB,SAL from EMP where
JOB=‘MANAGER’ and DEPTNO != 30
30;;
L’opérateur BETWEEN (recherche dans une plage
de valeurs)
select ENAME,SAL from EMP where SAL between
1200 and 1400
1400;;
L’opérateur IN (dans une liste)
select * from DEPT where DEPTNO in (10
10,,30
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
desc;;
6


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
desc;;
7


Opérateurs et fonctions arithmétiques
+, -,*,/ , power, round, trunc
trunc,, abs
select ENAME,SAL,COMM,SAL+
ENAME,SAL,COMM,SAL+COMM from EMP
where JOB = ‘SALESMAN’;
Fonctions de chaines de caractères
|| : opérateur de concaténation , length, substr
substr,,
upper, lower
8
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
avg,,
count(*)
select DNAME,sum
DNAME,sum(SAL),
(SAL),avg
avg(SAL),count(*)
(SAL),count(*) from
EMP,DEPT where EMP.DEPTNO=DEPT.DEPTNO
group by DNAME;
Groupage sur plusieurs colonnes
select DNAME, JOB, sum(SAL),count(*), avg
avg(SAL)
(SAL)
from EMP,DEPT where
EMP.DEPTNO=DEPT.DEPTNO
group by DNAME,JOB;
9
Les fonctions de groupage

La clause having
select DNAME, JOB, sum(SAL),count(*),
avg(SAL)
avg
(SAL) from EMP,DEPT where
EMP.DEPTNO=DEPT.DEPTNO
group by DNAME,JOB
having count(*) >= 2;
10
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
(select avg
avg(SAL)
(SAL) from EMP);
11
La mise à jour de données



Ajouter des lignes (insert
(insert),
), modifier des lignes
(update
update),
), supprimer des lignes (delete
(delete))
La commande UPDATE
Exemple1
Exemple
1 : ajouter 100
100$
$ au salaire de chaque employé
ayant la fonction ‘CLERK’
update EMP set SAL = SAL + 100 where
JOB=‘CLERK’;
Exemple2
Exemple
2 : augmenter le salaire de 10 % et donner
une commission de 300
300$
$ à tous les employés du
département n°
n° 10
10’’
update EMP set SAL = SAL * 1.10
10,, COMM=300
COMM=300
where DEPTNO=10
DEPTNO=10;;
La commande INSERT
insert into DEPT values(50
values(50,, ‘SOFTWARE’,’PALO
ALTO’);
12
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
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°
n° 40 qui ne contient aucun
employé
Delete from DEPT where DEPTNO = 40
40;;
13
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
25%
% de
leur salaire.
4) Nombre d'employés du département n°
n° 10
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
10
élevé.
11)) Nom des employés gagnant plus que ‘ALLEN ’.
11
12)) Nom des employés occupant la même fonction que ‘ALLEN ’.
12
14