Académique Documents
Professionnel Documents
Culture Documents
EPI 2022/2023
Objectifs Du Cours
Ce cours permettra aux étudiants de concevoir et d’implanter une base de d
onnées en passant par les différents niveaux :
o conceptuel,
o logique
o et physique.
Il aura l’occasion de bien assimiler l’apport des SGBD pour gérer les donné
es
2
Plan du cours
Chapitre 1 : Introduction et Principaux Concepts Des Bd
Chapitre 2 : Un Modèle Conceptuel : Le Modèle EA
Chapitre 3 : Le Modèle Relationnel Des BD
Chapitre4 : La Normalisation
3
Chapitre 6 : Le Langage SQL
4
Chapitre3: Le Langage SQL
I. Introduction
II. Langage de définition de données LDD
III. Langage de manipulation de données LMD
IV. Langage de contrôle de données LCD
V. Langage d’Interrogation de données LID
5
I. Le langage SQL
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, Informix, SQLServer, ACCESS.
6
Architecture du SGBDR
7
II. Langage de Définition des Données
8
Partie II.1 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
I. La commande CREATE
9
I. La commande CREATE 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
Les lettres
10 minuscules et majuscules sont équivalentes
I. La commande CREATE TABLE: variante
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
I. La commande CREATE TABLE: variante
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
II. La commande ALTER TABLE
Cette commande permet de modifier la définition d ’une table.
ALTER TABLE table
ADD
MODIFY (colonne1 type1, colonne2 type2, …, colonnen typen)
DROP
13
II. La commande ALTER TABLE
14
III. La commande DROP TABLE
Exemple :
15
Partie II.2 Les types de données
Les principaux types de données sont les suivants:
I. Types numériques
16
Partie II.2 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
Partie II.3 Les contraintes
18
I. 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) NOT NULL,
CaCli INTEGER DEFAULT 0,
TypeCli VARCHAR(16) DEFAULT 'Particulier ’
…);
19
I. Les contraintes de domaine
CHECK(condition)
Exemples : CREATE TABLE clients
(…,
TypeCli VARCHAR(16) DEFAULT 'Particulier'
CHECK (TypeCli IN ('Particulier', 'Administration', 'PME'))
CONSTRAINT Type_Clients, …
20
I. Les contraintes de domaine
La déclaration d ’un domaine
Exemple : CREATE DOMAIN Qté NUMBER DEFAULT 0
CHECK (Value >= 0),
Cette clause permet de spécifier que différents attributs du schéma ont le même
ensemble de valeurs et satisfont les mêmes contraintes.
Définition des attributs dont les valeurs appartiennent au domaine Qté :
Stock_Art Qté , Qté_LigneCde Qté
...
De cette façon, Stock_Art et Qté_LigneCde héritent des propriétés de Qté, valeur
entière par défaut nulle, toujours positive ou nulle
La définition d ’un domaine peut comporter un nombre quelconque de contraintes
qui peuvent être modifiées par : ALTER DOMAIN
21
II. 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.
22
Remarques :
Tous les attributs d ’une clé segmentée doivent être spécifiés NOT NULL
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
23
III. 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);
Utilisation de FOREIGN KEY pour spécifier une clé étrangère constituée de plusieurs attributs
24
IV. Les assertions
Il s ’agit de contraintes non directement rattachées à une table. Elles sont utilisées
pour spécifier une contrainte portant sur plusieurs tables.
Exemple :
Les triggers et les procédures mémorisées complètent les contraintes d ’intégrité en permettant des
contrôles et des traitements plus complexes
27
La commande INSERT
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.
28
La commande INSERT: Exemple
29
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
UPDATE table
OU: SET col1, col2 , …) = (SELECT …)
WHERE prédicat
30
La commande UPDATE: Exemple
La clause WHERE est facultative
UPDATE STAGE
SET Nb-jours = 4
WHERE Type-Stage = ′TP′;
UPDATE STAGE
SET Nb-jours = 4
WHERE Type-Stage IN ( SELECT Num-St FROM PARTICIPATION);
31
La commande DELETE
L ’ordre DELETE permet de supprimer des lignes d ’une table
DELETE FROM table
WHERE prédicat
La clause WHERE indique quelles lignes doivent être supprimées.
Cette clause est facultative. Si elle n ’est pas précisée, TOUTES les lignes de la
table sont supprimées.
32
Chapitre3: Le Langage SQL
I. Introduction
II. Langage de définition de données LDD
III. Langage de manipulation de données LMD
IV. Langage de contrôle de données LCD
Les transactions dans SQL : COMMIT et ROLLBACK
33
Langage de contrôle de données LCD
Le langage SQL permet de contrôler l’accès aux bases de données selon les
permissions (appelées aussi droits ou privilèges) et les profils des utilisateurs. les
permissions sont définies par l'administrateur de la base de données (en anglais
DBA, DataBase Administrator). Ces opérations sont effectuées grâce à deux
clauses : GRANT permet d'accorder des droits à un ou plusieurs utilisateurs.
REVOKE permet de retirer certains droits à un ou plusieurs utilisateurs
D'autre part, il est possible de définir des rôles aux utilisateurs. Ces utilisateurs
auront le privilège d'accorder des permissions à d'autres utilisateurs
La clause GRANT
Permet au propriétaire d’une table( ou d’une vue) de donner à d’autres utilisateurs
des privilèges d’accès à celles-ci.
Syntaxe :
GRANT Liste_Privilège ON Table/ Vue TO Utilisateur [WITH GRANT OPTION];
34
Les privilèges
Les privilèges sont :
UPDATE : modification de lignes
INSERT : insertion de lignes
DELETE : suppression de lignes
SELECT : lecture
INDEX : création d’index
ALTER : modification de la structure de la table
ALL : Tous les droits
Exemple :
GRANT SELECT ON commande TO User1;
2- La clause REVOKE
Un utilisateur ayant accordé un privilège à un ou autres users peut l’annuler via la commande
REVOKE.
Syntaxe :
REVOKE Liste_Privilège ON Table/Vue FROM Utilisateur;
Exemple:
REVOKE SELECT ON client FROM User1;
35
Les transactions dans SQL : COMMIT et ROLLBACK
Dans la norme SQL, une transaction commence au début d'une session de travail
ou juste après la fin de la transaction précédente. Elle se termine par un ordre
explicite de validation (commit) ou d'annulation (rollback).
Certains SGBD ne respectent pas la norme et demandent une commande explicite
pour démarrer une transaction.
L'utilisateur peut à tout moment valider (et terminer) la transaction en cours par la
commande COMMIT. Les modifications deviennent alors définitives et visibles à
toutes les autres transactions.
L'utilisateur peut annuler (et terminer) la transaction en cours par la commande
ROLLBACK.
Toutes les modifications depuis le début de la transaction sont annulées.
36
Chapitre3: Le Langage SQL
I. Introduction
II. Langage de définition de données LDD
III. Langage de manipulation de données LMD
IV. Langage de contrôle de données LCD
V. Langage d’Interrogation de données LID
37
Interrogation : l’ordre SELECT
La syntaxe complète d’un ordre SELECT
38
L’ordre SELECT
L’ordre SELECT permet l’interrogation d’une base de données afin
d’afficher des données. Il permet :
La projection
La sélection
La jointure
40
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).
41
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;
42
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);
43
LIKE: exemple
LIKE: rechercher les valeurs qui vérifie une condition textuelle.
La condition de recherche peut contenir des caractères ou des entiers:
% indique zéro ou plusieurs caractères
Exemple :Afficher les clients dont la deuxième lettre des noms est 'a'.
SELECT *
FROM Client
44
IS[NOT]NULL:
IS[NOT]NULL: rechercher les valeurs dont certains champs contiennent des
valeurs nulles.
Exemple: Afficher les clients qui n'ont pas une adresse.
SELECT *
FROM Client
45
Opérateurs des prédicats pour la clause where
46
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]];
47
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;
48
Les jointures :
Une jointure a pour but d’afficher des informations issues de plusieurs tables.
Ce produit cartésien n’a aucun intérêt. Ce qui est normalement souhaité, c'est de
joindre les informations de diverses tables, en recollant les lignes des tables
suivant les valeurs qu'elles ont dans certaines colonnes.
49
Types de jointures:
Types de jointures:
Equijointure.
Auto-jointure
Non-équijointure
Jointure externe
50
Les jointures: Exemple
emp (num, nom, fonction, n_sup, embauche, salaire, comm, #n_dept)
dept(n_dept, nom,lieu)
Salgrade(grade, salmin,salmax)
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.
51
L’équijointure :
Appelé encore jointure simple ou naturelle, basé sur l’égalité des valeurs de deux
colonnes dans deux tables différentes.
Par exemple , une clé primaire d’une table et la clé étrangère qui lui correspond
dans une autre table.
52
L’équijointure : Exemple
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.
Réponse :
53
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
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
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
AVG,SUM,MAX,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
Utilisation de la fonction COUNT :
COUNT(*) ramène le nombre de ligne d’une table.
62
Utilisation de la fonction COUNT :
63
Utilisation de la fonction COUNT :
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 :
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.
68