Académique Documents
Professionnel Documents
Culture Documents
Le langage SQL
Pr A.AB ATAL 1
Le langage SQL
2
Aspect générale du langage SQL
SQL (Structured Query Longage : Langage d’interrogation
structuré) ) est un langage non procédural, il comporte
plusieurs commandes qui se repartissent en trois familles
fonctionnellement distinctes:
• Langage de manipulation des données (LMD):
sélectionner, insérer, modifier, ou supprimer des données
dans une table.
• Langage de définition des données(LDD): créer des tables
dans une BDR, ainsi d’en modifier ou de supprimer leur
structure.
• Langage de contrôle de données(LCD): gérer la sécurité
et les permissions au niveau des utilisateurs d’une BDR.
3
Les Ordres SQL
• GRANT
• REVOKE Langage de contrôle des données (LCD)
4
Tables utilisées dans le Cours
Table Emp Table Dept
Table SALGRADE
5
L’ordre Select
6
Écriture des Ordres SQL
7
Exécution de l’ordre SELECT
Base de données
Affichage des
données
LOC
LOC
-------------
-------------
NEW
NEW YORK
YORK
DALLAS
DALLAS
CHICAGO
CHICAGO
BOSTON
BOSTON
8
Exemple de SELECT
SQL> SELECT *
2 FROM dept;
9
Exemple de SELECT
SQL>
SQL> SELECT
SELECT deptno
deptno SQL> SELECT DISTINCT deptno
22 FROM
FROM emp;
emp; 2 FROM emp;
DEPTNO DEPTNO
--------- ---------
10 10
30 20
10 30
20
...
14 rows selected.
10
L’Alias de Colonne
11
Le littéral
12
Utilisation de littéral et d’Alias
13
Les opérateurs arithmétiques et logiques
14
Les opérateurs de comparaison
15
Utilisation des Opérateurs de Comparaison
ENAME SAL
---------- --------- Limite Limite
MARTIN 1250
TURNER 1500 inférieure supérieure
WARD 1250
ADAMS 1100
MILLER 1300
16
Utilisation des Opérateurs de Comparaison
17
Utilisation des Opérateurs de Comparaison
ENAME
----------
JAMES
WARD
18
Utilisation des Opérateurs de Comparaison
ENAME MGR
---------- ---------
KING
19
Utilisation des Opérateurs logiques
20
Utilisation des Opérateurs logiques
... WHERE ... NOT BETWEEN ... AND ...
... WHERE ... IS NOT IN ...
... WHERE ... NOT LIKE ...
... WHERE ... IS NOT NULL
ENAME JOB
---------- ---------
KING PRESIDENT
MARTIN SALESMAN
ALLEN SALESMAN
TURNER SALESMAN
WARD SALESMAN
21
Utilisation de l’opérateurs de Concaténation
Employee
Employee Details
Details
-------------------------
-------------------------
KING
KING is
is aa PRESIDENT
PRESIDENT
BLAKE
BLAKE is
is aa MANAGER
MANAGER
CLARK
CLARK is
is aa MANAGER
MANAGER
JONES
JONES is
is aa MANAGER
MANAGER
MARTIN
MARTIN is
is aa SALESMAN
SALESMAN
...
...
14
14 rows
rows selected.
selected.
22
Exemple de tri des enregistrements
SQL> SELECT ename, job, deptno, hiredate
2 FROM emp
3 ORDER BY hiredate DESC;
23
Exemple de tri des enregistrements
24
Types de Jointures en SQL
Equijointure
Equijointure Non-équijointure
Non-équijointure
Jointure
Jointure externe
externe Autojointure
Autojointure
25
Exemple d’équijointure
26
Exemple de non-équijointure
27
Exemple de Jointures Externes
28
Exemple de l’autojointures
WORKER.ENAME||'WORKSFOR'||MANAG
WORKER.ENAME||'WORKSFOR'||MANAG
-------------------------------
-------------------------------
BLAKE
BLAKE works
works for
for KING
KING
CLARK
CLARK works
works for
for KING
KING
JONES
JONES works
works for
for KING
KING
MARTIN
MARTIN works
works for
for BLAKE
BLAKE
...
...
13
13 rows
rows selected.
selected.
29
Fonction de regroupement de données
• AVG ([DISTINCT|ALL]n)
• COUNT ({ *|[DISTINCT|ALL]expr})
• MAX ([DISTINCT|ALL]expr)
• MIN ([DISTINCT|ALL]expr)
• SUM ([DISTINCT|ALL]n)
30
Utilisation des fonctions de regroupement
SQL> SELECT AVG(sal), MAX(sal),
2 MIN(sal), SUM(sal)
3 FROM emp
4 WHERE job LIKE 'SALES%';
COUNT(*)
---------
6
31
Utilisation des fonctions de regroupement
AVG(COMM)
---------
550
AVG(NVL(COMM,0))
----------------
157.14286
32
Création de Groupes de Données
EMP
DEPTNO SAL
--------- ---------
10 2450
10 5000 2916.6667
10 1300
20 800 "salaire DEPTNO AVG(SAL)
20 1100 moyen pour ------- ---------
20 3000 2175 chaque 10 2916.6667
20 3000 département
20 2975 de la table 20 2175
30 1600 EMP" 30 1566.6667
30 2850
30 1250 1566.6667
30 950
30 1500
30 1250
33
Exemple de création de groupes de données
DEPTNO AVG(SAL)
--------- ---------
10 2916.6667
20 2175
30 1566.6667
34
Exemple de création de groupes de données
35
Imbrication des Fonctions de Groupe
MAX(AVG(SAL))
-------------
2916.6667
36
Utilisation de la clause HAVING
37
Exemple de l’utilisation de HAVING
DEPTNO MAX(SAL)
--------- ---------
10 5000
20 3000
38
Exemple de l’utilisation de HAVING
JOB PAYROLL
--------- ---------
ANALYST 6000
MANAGER 8275
39
Les Sous-Interrogations
Syntaxe
SELECT select_list
FROM tables
WHERE expr operator (SELECT select_list
FROM tables );
Sous-interrogation
Sous-interrogation Sous-interrogation
Sous-interrogation
mono-ligne
mono-ligne multi-ligne
multi-ligne
Opérateurs mono-ligne Opérateurs multi-ligne
41
Exemple de Sous-Interrogations mono-ligne
ENAME
ENAME JOB
JOB
----------
---------- ---------
---------
MILLER
MILLER CLERK
CLERK
42
Exemple de Sous-Interrogations mono-ligne
ENAME
ENAME JOB
JOB SAL
SAL
----------
---------- ---------
--------- ---------
---------
SMITH
SMITH CLERK
CLERK 800
800
43
Exemple de Sous-Interrogations mono-ligne
44
Exemple de Sous-Interrogations multi-ligne
EMPNO
EMPNO ENAME
ENAME JOB
JOB
---------
--------- ----------
---------- ---------
---------
7654
7654 MARTIN
MARTIN SALESMAN
SALESMAN
7521
7521 WARD
WARD SALESMAN
SALESMAN
45
Exemple de Sous-Interrogations multi-ligne
EMPNO
EMPNO ENAME
ENAME JOB
JOB
---------
--------- ----------
---------- ---------
---------
7839
7839 KING
KING PRESIDENT
PRESIDENT
7566
7566 JONES
JONES MANAGER
MANAGER
7902
7902 FORD
FORD ANALYST
ANALYST
7788
7788 SCOTT
SCOTT ANALYST
ANALYST
46
Les Sous-Interrogations Synchronisées
Syntaxe: SELECT outer1, outer2, ...
FROM table1 alias1
WHERE outer1 operator (SELECT inner1
FROM table2 alias2
WHERE alias1.outer2 = alias2.inner1);
La sous-interrogation est exécutée pour chaque enregistrement
de la requête principale.
Nouvelle ligne candidate (requête externe)
47
Exemple de Sous-Interrogations Synchronisées
EMPNO
EMPNO SAL
SAL DEPTNO
DEPTNO
--------
-------- ---------
--------- ---------
--------- Opérateur mono.ligne
7839
7839 5000
5000 10
10 ou muti-ligne
7698
7698 2850
2850 30
30
7566
7566 2975
2975 20
20
...
...
66 rows
rows selected.
selected.
48
Les Sous-Interrogations Synchronisées et
l'Opérateur EXISTS
50
Exemple de l’utilisation de l’opérateur EXISTS
DEPTNO
DEPTNO DNAME
DNAME
---------
--------- ----------
----------
40
40 OPERATIONS
OPERATIONS
51
Les Opérateurs Ensemblistes
• Intersect
• Union / Union All
• Minus
Table Emp Table EMPHISTORY
52
Exemple de l'Opérateur UNION
Affichez le nom, le poste et le département de tous les
employés
SQL> SELECT ename, job, deptno
2 FROM emp
3 UNION
4 SELECT name, title, deptid
5 FROM emp_history;
53
Exemple de l'Opérateur INTERSECT
Affichez les différents noms, numéros et postes des
employés présents dans les tables EMP et EMPHISTORY.
ENAME
ENAME EMPNO
EMPNO JOB
JOB
----------
---------- ---------
--------- ---------
---------
ALLEN
ALLEN 7499
7499 SALESMAN
SALESMAN
CLARK
CLARK 7782
7782 MANAGER
MANAGER
SCOTT
SCOTT 7788
7788 ANALYST
ANALYST
54
Exemple de l'Opérateur MINUS
Affichez le nom,le numéro et le poste de tous les employés
ayant quitté la société.
SQL> SELECT name, empid, title
2 FROM emp_history
3 MINUS
4 SELECT ename, empno, job
5 FROM emp;
NAME
NAME EMPID
EMPID TITLE
TITLE
---------- ---------
---------- --------- ---------
---------
BALFORD
BALFORD 6235
6235 CLERK
CLERK
BRIGGS
BRIGGS 7225
7225 PAY
PAY CLERK
CLERK
JEWELL
JEWELL 7001
7001 ANALYST
ANALYST
SPENCER
SPENCER 6087
6087 OPERATOR
OPERATOR
...
...
66 rows
rows selected.
selected.
55