Académique Documents
Professionnel Documents
Culture Documents
EPI 2022/2023
Objectifs Du C ours
⦁ Il aura l’occasion de bien assimiler l’apport des SGBD pour gérer les données
2
Plan du cours
3
Chapitre 4 : Le Langage SQL
4
Le Langage S Q L
I. Introduction
II. Langage de définition de données LDD
III. Langage de manipulation de données LMD
IV.Langage d’Interrogation de données LID
V.Langage de contrôle de données LCD
5
Le langage S Q L
⦁ SQL signifie «Structured Query Language »ou Langage d ’interrogation structuré.
⦁ SQL est un langage complet de gestion de bases de données relationnelles. Il a été conçu par IBM
dans les années 70 et est devenu le langage standard des SGBDR.
⦁ SQL est utilisé par les principaux SGBDR : DB2, Oracle, SQLServer, ACCESS.
6
Architecture du S G B D R
7
Langage de Définition des Données
8
Langage de Définition des Données
⦁ Le Langage de Définition des Données est la partie de SQL qui permet de décrire les
tables et autres objets manipulés par les SGBD.
I. La commande CREATE
II. La commande ALTER TABLE
9
La commande C R E A T E TABLE
L ’ordre
CREATE TABLE permet de créer une table en définissant le nom, le type de
chacune des colonnes de la table.
Table est le nom que l ’on donne à la table. Colonnei est le nom d ’une colonne.
Typei est le type des données contenues dans Colonnei
Exemple :
CREATE TABLE MINI_STAGE(
Numéro NUMBER(3) PRIMARY KEY,
Nom VARCHAR2(15) NOT NULL)
AS SELECT Num-Stage, Libellé-Stage FROM STAGE;
Il faut évidemment que les définitions des colonnes de la table créée et du résultat de
la sélection soient compatibles en type et en taille.
11
La commande C R E A T E TABLE
❑ On peut également spécifier le mot-clé AS et l ’interrogation directement derrière le
nom de la table.
❑ Dans ce cas, les noms de colonnes de la table créée auront les mêmes noms, types et
tailles que celles de l ’interrogation :
❑ Exemple :
12
La commande ALTER TABLE
Cette commande permet de modifier la définition d ’une table.
ALTER TABLE table
ADD
MODIFY (colonne1 type1, colonne2 type2, …, colonnentypen)
DROP
13
La commande D R O P TABLE
❑ Cette commande permet de supprimer une table de la base de données.
Exemple :
14
Les types de données
⦁ Les principaux types de données sont les suivants:
I. Types numériques
15
Les types de données
Type de données Syntaxe Description
Alphanumérique CHAR(n) Chaîne de caractères de longueur fixe n (n<16383)
17
Les contraintes de domaine
❑ Il s ’agit de définir l ’ensemble des valeurs que peut prendre un attribut.
❑ Ces contraintes sont décrites dans la définition d ’un attribut, directement après son type et sa
longueur.
✓ NOT NULL : on impose que l ’attribut possède une valeur
✓ DEFAULT : on spécifie une valeur par défaut dont le type doit correspondre au type
de l ’attribut
✓ UNIQUE : interdit qu'une colonne contienne deux valeurs identiques
❑ Exemple :
CREATE TABLE clients
(numCli …
nomCli VARCHAR(25) N OT N ULL,
CaCli INTEGER DEFAULT 0,
TypeCli VARCHAR(16) DEFAULT 'Particulier ’
…);
18
Les contraintes de domaine
❑ CHECK(condition)
Exemples : CREATE TABLE clients
(…,
TypeCli VARCHAR(16) DEFAULT 'Particulier'
CHECK (TypeCli IN ('Particulier', 'Administration', 'PME'))
CONSTRAINT Type_Clients, …
19
Les contraintes d’intégrité d’entité
⦁ Elles spécifient la clé primaire d ’une table via la clause PRIMARY KEY.
⦁ Une clé primaire doit toujours avoir une valeur déterminée et unique pour la table.
⦁ Quand une clé primaire est constituée de plusieurs attributs (clé segmentée), la clause
PRIMARY KEY est placée après la définition des attributs, séparée par une virgule.
⦁ PRIMARY KEY peut aussi être séparée de la définition des attributs même
s ’il n ’y a qu’ un seul attribut
21
Les contraintes d ’intégrité référentielle
REFERENCES nom_table_référencée (clé candidate)
Exemples :
CREATE TABLE Commandes
(NumCde NUMBER PRIMARY KEY,
DateCde DATE NOT NULL,
NumCli NUMBER NOT NULL REFERENCES clients,
MagCde NUMBER NOT NULL REFERENCES magasin);
22
Le Langage S Q L
I. Introduction
II. Langage de définition de données LDD
III. Langage de manipulation de données LMD
⦁ III.1 La commande INSERT
⦁ III. 2La commande UPDATE
⦁ III.3 La commande DELETE
IV.Langage d’interrogation de données LID
V.Langage de contrôle de données LCD
23
La com m a nde IN S E R T
❑ INSERT: Ajout de lignes dans une table
❑La liste des noms de colonnes est optionnelle. Si elle est omise, Oracle prend par
défaut l ’ensemble des colonnes de la table dans l ’ordre où elles ont été données lors de
la création de la table.
❑Si une liste de colonnes est spécifiée, les colonnes ne figurant pas dans la liste auront la
valeur NULL.
24
La commande INSERT: Exemple
25
La commande UPDATE
Cette commande permet de modifier les valeurs d ’un ou de plusieurs champs, dans une
ou plusieurs lignes existantes d ’une table.
UPDATE table
SET col1 = exp1, col2 = exp2, …
WHERE prédicat
26
La com m a nde UPDATE: Exemple
La clause WHERE est facultative
UPDATE STAGE
SET Nb-jours = 4
WHERE Type-Stage = ′TP′;
27
La commande D E L E T E
❑ L ’ordre DELETE permet de supprimer des lignes d ’une table
28
Le Langage S Q L
I. Introduction
II. Langage de définition de données LDD
III. Langage de manipulation de données LMD
IV.Langage d’Interrogation de données LID
V.Langage de contrôle de données LCD
29
Interrogation : l’ordre S E L E C T
⦁ La syntaxe complète d’un ordre SELECT
30
L’ordre S E L E C T
⦁ L’ordre SELECT permet l’interrogation d’une base de données afin d’afficher
des données.
⦁ La clause SELECT contient la liste de colonnes qui vont être affichées comme
résultat.
⦁ La clause FROM spécifie la ou les tables dans laquelle , la recherche va être
effectuée.
⦁ La clause WHERE spécifie une condition de sélection de quelques
enregistrements de l’ensemble de données de la table.
31
L’ordre S E L E C T : E X E M P LE
⦁ Exemple :
Afficher le nom et le salaire de tous les employés :
⦁ Réponse :
Select last_name, salary
From emp ;
⦁ Exemple :
Afficher les jobs des employés de département 20
⦁ Réponse :
Select job_id
From emp
Where department_id=20
32
L’interrogation avec prédicats(conditions):
🞂
SELECT*|[DISTINCT]colonne| expression[alias],…
FROM table;
[WHERE condition(s)];
⦁ WHERE : indique qu’une ligne doit valider une condition avant d’être retournée.
⦁ condition: peut être composé de nom de colonne, expression, des valeurs constantes et des
opérateurs de comparaison.
⦁ condition: est composée de colonnes, d’expressions, de constantes liées deux à deux entre des
opérateurs:
✓ de comparaison(>,=,<,>=,<=,<>);
✓ logiques(NOT, AND ou OR);
✓ intégrés(BETWEEN, IN, LIKE, ISNULL).
33
Between: exemple
⦁ Between: extraire des lignes en se basant sur un intervalle de valeurs.
⦁ Exemple: Afficher les clients qui ont un crédit entre 50 et 250'.
🞂
SELECT *
FROM Client
WHERE creditC >=50 AND creditC<=200;
⦁ Ou bien:
🞂
SELECT *
FROM Client
WHERE creditC BETWEEN 50 AND 200;
34
In: Exemple
⦁ In: extraire des lignes en se basant sur une liste de valeurs.
⦁ Exemple: Afficherlesproduitsdontlaquantitéenstockestégaleà20,40oubien50.
SELECT *
FROM Produit
WHERE QteS=20 OR QteS=40 OR QteS=50;
⦁ Ou bien:
SELECT *
FROM Produit
WHERE QteS IN (20,40,50);
35
LIKE: exemple
LIKE: rechercher les valeurs qui vérifie une condition textuelle.
La condition de recherche peut contenir des caractères ou des entiers:
Exemple :Afficher les clients dont la deuxième lettre des noms est 'a'.
SELECT *
FROM Client
36
IS[NOT]NULL:
⦁ IS[NOT]NULL: rechercher les valeurs dont certains champs contiennent des
valeurs nulles.
SELECT *
FROM Client
37
Opérateurs des prédicats pour la clause where
38
Tri des données :Order by
⦁ Le Tri : Trier les lignes retournées avec ORDER BY
⦁ Syntaxe:
🞂 SELECT expr FROM table
[WHERE condition(s)]
[ORDERBY{column,expr}[ASC|DESC]];
🞂
39
Tri des données :Order by
⦁ Exemple: Rechercher la liste des produits en triant le résultat avec le plus cher:
Select *
from Produit
Order by PU DESC;
⦁ Exemple: Rechercher le prix total des produits en triant le résultat par le montant le plus
faible
Select codP, Lib, PU*QteS AS "total"
from Produit
Order by total;
40
Les jointures
Les jointures en SQL permettent d’associer plusieurs tables dans une même requête. Cela permet
d’exploiter la puissance des bases de données relationnelles pour obtenir des résultats qui combinent les
données de plusieurs tables de manière efficace
En général, les jointures consistent à associer des lignes de 2 tables en associant l’égalité des valeurs
d’une colonne d’une première table par rapport à la valeur d’une colonne d’une seconde table.
Les jointures
Les jointures: Exemple
⦁ emp (num, nom, fonction, n_sup, embauche, salaire, comm, #n_dept)
⦁ dept(n_dept, nom,lieu)
Exemple : Afficher le nom de l’employé et le nom de son département.
Emp
num Nom …. N_dept
Dept
N_dept Nom ….
Dans cet exemple, le nom de l’employé se trouve dans la table « emp », tandis que le nom de
département se trouve dans « dept ». c’est la colonne n_dept qui existe dans les deux tables
qui va assurée leur liaison.
43
Les jointures
Il y a plusieurs méthodes pour associer 2 tables ensemble. Voici la liste des différentes techniques
qui sont utilisées :
Les jointures
➢INNER JOIN : jointure interne pour retourner les enregistrements quand la condition est
vraie dans les 2 tables.
Les jointures
LEFT JOIN (ou LEFT OUTER JOIN) : jointure externe pour retourner tous les enregistrements de la
table de gauche (LEFT = gauche) même si la condition n’est pas vérifiée dans l’autre table.
Les jointures
Les jointures
RIGHT JOIN (ou RIGHT OUTER JOIN) : jointure externe pour retourner tous les enregistrements
de la table de droite (RIGHT = droite) même si la condition n’est pas vérifiée dans l’autre table.
Les jointures
Les jointures
FULL JOIN (ou FULL OUTER JOIN) : jointure externe pour retourner les résultats quand la
condition est vraie dans au moins une des 2 tables.
Les jointures
Les jointures
➢ SELF JOIN : permet d’effectuer une jointure d’une table avec elle-même comme si c’était une
autre table.
➢ NATURAL JOIN : jointure naturelle entre 2 tables s’il y a au moins une colonne qui porte le
même nom entre les 2 tables SQL
Les jointures
CROSS JOIN : jointure croisée permettant de faire le produit cartésien de 2 tables. En d’autres mots,
permet de joindre chaque ligne d’une table avec chaque ligne d’une seconde table. Attention, le nombre
de résultats est en général très élevé.
Auto-jointure :
⦁ L’auto-jointure est une liaison d’une table à elle-même.
⦁ C'est-à-dire, utiliser la même table deux fois, la première pour cherche une valeur X à
partir de données, et la deuxième est de trouver le résultat final à partir de X.
54
Auto-jointure: Exemple
⦁ Exercice : afficher le nom du directeur de l’employé numéro 7800
⦁ Réponse :
⦁ select emp.nom
⦁ from emp e, emp p
⦁ where e.num = 7800 and e.n_sup = p.num ;
Emp e
num Nom N_sup …. N_dept
7800 Tounsi_Med 6200
Emp p
num Nom N_sup … N_dept
6200 Sellami Ali
55
Auto-jointure: Exemple
⦁ Le serveur Oracle exécute cet ordre en trois étapes :
1. Parcourir la colonne «num »de la table « emp » en cherchant la valeur 7800.
2. - Lire la valeur « num_sup » de cet employé :6200
3. - Chercher 6200 dans la colonne « num » et lire le nom de directeur dans la colonne «
nom »
Emp e
num Nom N_sup …. N_dept
7800 Tounsi_Med 6200
Emp p
num Nom N_sup … N_dept
6200 Sellami Ali
56
Les fonctions disponibles
Les différentes fonctions disponibles sous Oracle:
❖ Fonctions arithmétiques
❖ Fonctions Date
❖ Fonctions de conversion
❖ Fonctions diverses
❖ Fonctions de groupe
57
Les fonctions de groupe:
🞂
⦁ Les fonctions de groupe sont utilisées pour afficher des informations sur un
ensemble d'enregistrement.
58
Les fonctions de groupe
⦁ Le tableau suivant présente les principales fonctions.
⦁ L’option DISTINCT évite les duplicatas alors que ALL les prend en compte (par
défaut).
⦁ À l’exception de COUNT, toutes les fonctions ignorent les valeurs NULL (il faudra
utiliser NVL pour contrer cet effet).
59
Les fonctions de groupe
⦁ Les fonctions de groupe agissent sur des groupes de lignes et donne un résultat par
groupe:
60
A V G , S U M , M A X ,MIN :
⦁ AVG et SUM sont utilisées avec les données numériques.
Exemple : select AVG(sal), SUM (sal), MIN(sal), MAX (sal)
from employés ;
⦁ MIN et MAX s’utilisent avec tout type de données.
61
U tilisation de la fonction C O UNT :
COUNT(*) ramène le nombre de ligne d’une table.
62
U tilisation de la fonction C O UNT :
63
U tilisation de la fonction C O UNT :
Exercice : afficher le nombre d’employé de département 10, qui ont une commision :
Réponse :
SQl> Select count(comm)
From emp
Where deptno = 10 ;
64
Utilisation de la fonction NVL :
⦁ la fonction NVL force la prise en compte des valeurs NULL dans les fonctions de
groupe en remplaçant la valeur NULL par une autre valeur.
⦁ Exemple :
SQL> Select AVG( NVL ( comm , 0 ))
From emp ;
65
La clause Group by
⦁ Elle réarrange la table résultat en un nombre minimum de groupes, tels que, à
l’intérieur de chaque groupe, l’attribut spécifié possède la même valeur pour chaque
tuple.
⦁ Lorsqu’on spécifie une clause GROUP BY, les fonctions de groupe sont calculées
pour chaque groupe.
66
La clause Group by
⦁ Cette clause permet l ’affichage de l ’attribut commun aux tuples d ’un groupe, suivi
de l ’affichage de la valeur des fonctions appliquées au groupe.
67
Restriction de groupes, HAVING
⦁ On ne peut pas utiliser la clause WHERE pour limiter les groupes. La clause
HAVING permet ceci.
68