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