Академический Документы
Профессиональный Документы
Культура Документы
Avancées
M. ZOUHRI
Travaux dirigés
Travaux pratiques
Evaluation
Plan du cours
Bases de données : rappels et mise à
niveau
subdivisions.
SGBDR Oracle.
SQL déclaratif
La partie déclarative de SQL est, elle-même,
subdivisée en quatre parties:
Le DDL ( Data Definition Language ), c’est-à-dire les
ordres SQL permettant de créer (CREATE), modifier
(ALTER) ou supprimer (DROP) les objets de la base.
Le DML ( Data Manipulation Language ), c’est-à-dire
les ordres SQL permettant d’ajouter (INSERT), de
modifier (UPDATE), de supprimer (DELETE) ou
d’extraire des données.
Le DCL ( Data Control Language ), c’est-à-dire les
ROLLBACK).
Récapitulatif
Ensemble de commandes permettant de
SELECT récupérer les données contenues dans une ou
plusieurs tables de la base.
INSERT
Ensemble de commandes permettant de modifier
UPDATE
les données de la base.
DELETE
CREATE
ALTER
Ensemble de commandes permettant de modifier
DROP
la structure de la base.
RENAME
TRUNCATE
COMMIT Ensemble de commandes permettant
ROLLBACK d’administrer les changements effectués par les
SAVEPOINT commandes DML.
Communiquer avec un
SGBDR au Moyen de SQL
Saisie de l’ordre SQL
L’ordre est envoyé à
SQL>
SQL> SELECT
SELECT loc
loc la base de données
22 FROM
FROM service;
service;
Base de données
Affichage des
données
LOC
LOC
-------------
-------------
CASABLANCA
CASABLANCA
RABAT
RABAT
FES
FES
MEKNES
MEKNES
Tables Utilisées dans ce cours
NumEMP
NumEMP NomEmp
NomEmp Fonction
Fonction NumChef
NumChef Date_Emb
Date_Emb Salaire
Salaire COMM
COMM NumServ
NumServ
---------
--------- ----------
---------- ---------
--------- ---------
--------- ---------
--------- ---------
--------- ---------
--------- ---------
---------
7839
7839 RAIS
RAIS PRESIDENT
PRESIDENT 17-NOV-81
17-NOV-81 5000
5000 10
10
7698
7698 BILAL
BILAL MANAGER
MANAGER 7839
7839 01-MAY-81
01-MAY-81 2850
2850 30
30
7782
7782 ALLAL
ALLAL MANAGER
MANAGER 7839
7839 09-JUN-81
09-JUN-81 1500
1500 10
10
7566
7566 JONDI
JONDI MANAGER
MANAGER 7839
7839 02-APR-81
02-APR-81 2975
2975 20
20
7654
7654 MAATI
MAATI COMMERCIAL
COMMERCIAL 7698
7698 28-SEP-81
28-SEP-81 1250
1250 1400
1400 30
30
7499
7499 AMRAN
AMRAN COMMERCIAL
COMMERCIAL 7698
7698 20-FEB-81
20-FEB-81 1600
1600 300
300 30
30
EMPLOYE 7844 TOUYAR COMMERCIAL 7698 08-SEP-81 1500 0 30
7844 TOUYAR COMMERCIAL 7698 08-SEP-81 1500 0 30
7900
7900 JALAL
JALAL EMPLOYE
EMPLOYE 7698
7698 03-DEC-81
03-DEC-81 950
950 30
30
7521
7521 WARDANI
WARDANI COMMERCIAL
COMMERCIAL 7698
7698 22-FEB-81
22-FEB-81 1250
1250 500
500 30
30
7902
7902 FAOUZI
FAOUZI ANALYSTE
ANALYSTE 7566
7566 03-DEC-81
03-DEC-81 3000
3000 20
20
7369
7369 SMAHI
SMAHI EMPLOYE
EMPLOYE 7902
7902 17-DEC-80
17-DEC-80 800
800 20
20
7788
7788 SCALI
SCALI ANALYSTE
ANALYSTE 7566
7566 09-DEC-82
09-DEC-82 3000
3000 20
20
7876
7876 ADAM
ADAM EMPLOYE
EMPLOYE 7788
7788 12-JAN-83
12-JAN-83 1100
1100 20
20
7934
7934 MAHI
MAHI EMPLOYE
EMPLOYE 7782
7782 23-JAN-82
23-JAN-82 1300
1300 10
10
NumServ
NumServ NomServ
NomServ LOC
LOC
---------
--------- --------------
-------------- ----------
----------
SERVICE 10 COMPTABILITE
10 COMPTABILITE
CASA
CASA
20
20 RECHERCHE
RECHERCHE RABAT
RABAT
30
30 VENTES
VENTES FES
FES
40
40 PRODUCTION
PRODUCTION MEKNES
MEKNES
Ordres SQL basiques
Ordre SELECT
L’ordre SELECT sert à extraire les données de la
base de données
◦ SELECT what
◦ FROM where;
Opérateur Description
+ Addition
- Soustraction
* Multiplication
/ Division
SELECT
SELECT column1
column1 alias1,
alias1, column2
column2 alias2,
alias2, ……
FROM
FROM table;
table;
La clause WHERE
◦ La clause WHERE restreint la requête aux
enregistrements qui respectent les conditions. La
clause WHERE correspond à une sélection : elle
restreint les enregistrements (ou lignes). La clause
WHERE suit la clause FROM.
Opérateur Signification
= Égal à
> Inférieur à
>= Inférieur ou égal à
< Supérieur
<= Supérieur ou égal à
<> Différent de
Autres opérateurs de comparaison
Opérateur Signification
Compris entre … et …
BETWEEN … AND …
(bornes comprises)
Correspond à une
IN (liste)
valeur de la liste
Opérateur Signification
Retourne TRUE si les deux
AND
conditions sont VRAIES
Retourne TRUE si l’une au moins
OR
des conditions est VRAIE
Ramène la valeur TRUE si la
NOT condition qui suit l’opérateur est
FAUSSE
Ordonner la clause SELECT
La clause ORDER BY permet d’afficher les
enregistrements sélectionnés dans l’ordre croissant
ou décroissant.
ASC : ordre croissant (par défaut)
DESC : ordre décroissant
La clause ORDER BY se place à la fin de l’ordre
SELECT
Exemples de tri
SQL> SELECT nomemp, fonction, numserv, date_emb
2 FROM employé
3 ORDERR BY date_emb;
SQL> SELECT nomemp, fonction, numserv, date_emb
2 FROM employé
3 ORDERR BY date_emb DESC;
SELECT
SELECT table1.column,table2.column
table1.column,table2.column
FROM
FROM table1,table2
table1,table2
WHERE
WHERE table1.column1=table2.column2;
table1.column1=table2.column2;
Equi-jointure
Une équi-jointure est utilisée pour afficher des
données provenant de plusieurs tables lorsqu’une
valeur dans une colonne d’une table correspond
directement à une valeur d’une autre colonne dans
une autre table.
Les noms des colonnes doivent être qualifiés avec le
nom de la table ou l’alias de la table à laquelle elles
appartiennent afin d’éviter toute ambiguïté.
Exemples
SQL> SELECT employé.nomemp,service.nomserv
2 FROM employé,service
3 WHERE employé.numserv = service.numserv;
NUMEMP SALAIRE
--------- ---------
10 2450
10 5000
10 1300
20 800
20 1100 MAX(SALAIRE)
20 3000
"salaire maximum
20 3000 de la table ---------
20 2975 EMPLOYE" 5000
30 1600
30 2850
30 1250
30 950
30 1500
30 1250
Fonction de groupe
SELECT [column,]group_function(argument)
FROM table
[WHERE condition(s)]
[GROUP BY group_by_expression]
[ORDER BY column];
◦ COUNT ({ *|[DISTINCT|ALL]expr})
◦ MAX ([DISTINCT|ALL]expr)
◦ MIN ([DISTINCT|ALL]expr)
◦ SUM ([DISTINCT|ALL]n)
◦ VARIANCE ([DISTINCT|ALL]n)
Exemples
SQL> SELECT AVG(salaire), MAX(salaire),
2 MIN(salaire), SUM(salaire)
3 FROM employé
4 WHERE fonction LIKE ‘COMM%';
EMPLOYE
NumEmp Salaire
--------- ---------
10 2450
10 5000 2916.6667
10 1300 NumEmp AVG(Salaire)
20 800 "salaire
20 1100 moyen pour ------- ---------
20 3000 2175 chaque 10 2916.6667
20 3000 département
20 2175
20 2975 de la table
30 1600 EMP" 30 1566.6667
30 2850
30 1250 1566.6667
30 950
30 1500
30 1250
Création de groupe de données : clause GROUP
BY
SQL> SELECT !
numserv, count(NomEmp)
2 FROM
O N
employé;
N
Colonne
Colonne manquante
manquante dans
dans la
la clause
clause GROUP
GROUP BY
BY
Utilisation de la clause GROUP BY
SQL>
SQL> SELECT
SELECT numserv,
numserv, AVG(salaire)
AVG(salaire)
22 FROM
FROM employé
employé
33 WHERE
WHERE AVG(salaire)
AVG(salaire) >> 2000
2000
44 GROUP
GROUP BY
BY numserv;
numserv;
Exclusion de groupes : la clause
HAVING
Utilisez la clause HAVING pour restreindre les
groupes
Les lignes sont regroupées.
La fonction de groupe est appliquée.
Les groupes qui correspondent à la clause HAVING sont
affichés.
SELECT column, group_function
FROM table
[WHERE condition]
[GROUP BY group_by_expression]
[HAVING group_condition]
[ORDER BY column];
Utilisation de la clause HAVING
SQL> SELECT numserv, MAX(salaire)
2 FROM employé
3 GROUP BY numserv
4 HAVING MAX(salaire)>9000;
sous-interrogation
?
"Quel est le salaire de Faouzi ?"
Sous-requête
SELECT select_list
FROM table
WHERE expr operator
(SELECT select_list
FROM table);