Académique Documents
Professionnel Documents
Culture Documents
1. Introduction
Le langage SQL (Structured Query Langage) est un langage structuré basé sur des
requêtes que le SGBD doit exécuter pour interagir avec la base de données. Les requêtes SQL
sont exécutées soit pour définir les données, ce qui correspond au Langage de Définition de
Données (LDD), soit pour manipuler les données, par le Langage de Manipulation de données
(LMD).
1
Université Abderrahmane Mira - Bejaia Année universitaire : 2022/2023
Faculté des Sciences Exactes Niveau : L3 RN SI
Département d'informatique Module : Bases de données
Nous allons utiliser cette base de données avec ses tables pour illustrer les exemples de
requêtes SQL de définition et de manipulation de données de ce cours.
Remarque : L’option IF NOT EXISTS est facultative. Elle permet d’éviter une erreur si la base
nom_bdd existe déjà. Si elle existe, cette base sera supprimée et créée de nouveau.
2
Université Abderrahmane Mira - Bejaia Année universitaire : 2022/2023
Faculté des Sciences Exactes Niveau : L3 RN SI
Département d'informatique Module : Bases de données
Dans la création de la table PERSONNES, nous avons défini chacune des colonnes de la relation
avec leurs types (domaines) respectifs. Le type VARCHAR correspond aux chaines de
caractères et sa taille doit être précisée contrairement à celle du type entier INT qui, par
défaut est égale à 11. L'expression PRIMARY KEY, définie pour la colonne IdPersonne indique
que cette dernière est une clé primaire.
3
Université Abderrahmane Mira - Bejaia Année universitaire : 2022/2023
Faculté des Sciences Exactes Niveau : L3 RN SI
Département d'informatique Module : Bases de données
Remarques :
1. Il est possible que la clé étrangère et la clé primaire à laquelle elle fait référence
portent le même nom de colonne (Au lieu de "Propriétaire", la colonne de la table
APPARTEMENTS serait définie comme "IdPersonne")
2. La clé étrangère doit être du même type que la clé primaire référencée.
4
Université Abderrahmane Mira - Bejaia Année universitaire : 2022/2023
Faculté des Sciences Exactes Niveau : L3 RN SI
Département d'informatique Module : Bases de données
Si la contrainte de clé étrangère n'a pas été définie lors de la création de la table, elle peut
être ajoutée dans une requête de modification à part, comme suit :
PERSONNES
IdPersonne Nom Prénom Tel Adresse Profession
0129 SALMI Riad 5552356 Bejaia Enseignant
0546 ATTIL Mohamed 5558795 Bejaia Architecte
APPARTEMENTS
IdAppart Propriétaire Localité Etat Type
ABE9856 0129 Bejaia Libre F3
CFK7431 0546 Sétif Occupé F5
SAJ2987 0129 Alger Occupé F4
5
Université Abderrahmane Mira - Bejaia Année universitaire : 2022/2023
Faculté des Sciences Exactes Niveau : L3 RN SI
Département d'informatique Module : Bases de données
Sachant que Propriétaire fait référence à IdPersonne, on considère les options d'intégrité
référentielle définies pour la clé étrangère "Propriétaire".
SUPPRESSION : On décide de supprimer la personne "SALMI Riad"
ON DELETE RESTRICT (Aucun changement dans les deux tables)
PERSONNES
IdPersonne Nom Prénom Tel Adresse Profession
0129 SALMI Riad 5552356 Bejaia Enseignant
0546 ATTIL Mohamed 5558795 Bejaia Architecte
APPARTEMENTS
IdAppart Propriétaire Localité Etat Type
ABE9856 0129 Bejaia Libre F3
CFK7431 0546 Sétif Occupé F5
SAJ2987 0129 Alger Occupé F4
APPARTEMENTS
IdAppart Propriétaire Localité Etat Type
ABE9856 NULL Bejaia Libre F3
CFK7431 0546 Sétif Occupé F5
SAJ2987 NULL Alger Occupé F4
APPARTEMENTS
IdAppart Propriétaire Localité Etat Type
CFK7431 0546 Sétif Occupé F5
6
Université Abderrahmane Mira - Bejaia Année universitaire : 2022/2023
Faculté des Sciences Exactes Niveau : L3 RN SI
Département d'informatique Module : Bases de données
ON DELETE NO ACTION
PERSONNES
IdPersonne Nom Prénom Tel Adresse Profession
0546 ATTIL Mohamed 5558795 Bejaia Architecte
APPARTEMENTS
IdAppart Propriétaire Localité Etat Type
ABE9856 0129 Bejaia Libre F3
CFK7431 0546 Sétif Occupé F5
SAJ2987 0129 Alger Occupé F4
APPARTEMENTS
IdAppart Propriétaire Localité Etat Type
ABE9856 0129 Bejaia Libre F3
CFK7431 0546 Sétif Occupé F5
SAJ2987 0129 Alger Occupé F4
ON UPDATE CASCADE
PERSONNES
IdPersonne Nom Prénom Tel Adresse Profession
7790 SALMI Riad 5552356 Bejaia Enseignant
0546 ATTIL Mohamed 5558795 Bejaia Architecte
APPARTEMENTS
IdAppart Propriétaire Localité Etat Type
ABE9856 7790 Bejaia Libre F3
CFK7431 0546 Sétif Occupé F5
SAJ2987 7790 Alger Occupé F4
7
Université Abderrahmane Mira - Bejaia Année universitaire : 2022/2023
Faculté des Sciences Exactes Niveau : L3 RN SI
Département d'informatique Module : Bases de données
APPARTEMENTS
IdAppart Propriétaire Localité Etat Type
ABE9856 NULL Bejaia Libre F3
CFK7431 0546 Sétif Occupé F5
SAJ2987 NULL Alger Occupé F4
ON UPDATE NO ACTION
PERSONNES
IdPersonne Nom Prénom Tel Adresse Profession
7790 SALMI Riad 5552356 Bejaia Enseignant
0546 ATTIL Mohamed 5558795 Bejaia Architecte
APPARTEMENTS
IdAppart Propriétaire Localité Etat Type
ABE9856 0129 Bejaia Libre F3
CFK7431 0546 Sétif Occupé F5
SAJ2987 0129 Alger Occupé F4
Exemple : Création de la table LOCATIONS avec le montant de chaque location qui doit être
unique
CREATE TABLE LOCATIONS {
IdAppart VARCHAR(15),
Locataire INT,
Date_début DATE,
8
Université Abderrahmane Mira - Bejaia Année universitaire : 2022/2023
Faculté des Sciences Exactes Niveau : L3 RN SI
Département d'informatique Module : Bases de données
Date_fin DATE,
Montant FLOAT UNIQUE,
PRIMARY KEY (IdAppart, Locataire),
FOREIGN KEY (IdAppart) REFERENCES APPARTEMENTS (IdAppart) ON DELETE RESTRICT ON
UPDATE CASCADE,
FOREIGN KEY (Locataire) REFERENCES PERSONNES (IdPersonne) ON DELETE RESTRICT ON
UPDATE CASCADE} ;
9
Université Abderrahmane Mira - Bejaia Année universitaire : 2022/2023
Faculté des Sciences Exactes Niveau : L3 RN SI
Département d'informatique Module : Bases de données
En cas d'oubli, la contrainte NOT NULL peut être ajoutée avec la commande suivante :
ALTER TABLE APPARTEMENTS MODIFY Localité VARCHAR(45) NOT NULL ;
Profession VARCHAR(30)} ;
10
Université Abderrahmane Mira - Bejaia Année universitaire : 2022/2023
Faculté des Sciences Exactes Niveau : L3 RN SI
Département d'informatique Module : Bases de données
Si la contrainte DEFAULT n'a pas été définie pendant la création de la table, elle peut être
ajoutée avec la commande suivante :
ALTER TABLE PERSONNES MODIFY Adresse VARCHAR(50) DEFAULT 'Oran';
11
Université Abderrahmane Mira - Bejaia Année universitaire : 2022/2023
Faculté des Sciences Exactes Niveau : L3 RN SI
Département d'informatique Module : Bases de données
Remarques :
1. Il est possible d'insérer les données sans indiquer les colonnes (Col , Col , … , Col ).
L'insertion se fera selon l’ordre utilisé pour la création de la table. Si aucune valeur n'est
saisie pour une colonne, celle-ci se verra affectée la valeur NULL ou une valeur par défaut
préalablement précisée.
2. Lors de l'insertion d'une valeur de type VARCHAR ou DATE, celle-ci est mise entre
guillemets simples. Les valeurs de type INT ne sont pas mises entre guillemets.
Exemple : Insertion de la personne SALMI Riad, un enseignant ayant l'identifiant 0129 qui
habite à Bejaia et dont le numéro de téléphone est 5552356.
INSERT INTO PERSONNES VALUES (0129, 'SALMI', 'Riad', 5552356, 'Bejaia', 'Enseignant') ;
12
Université Abderrahmane Mira - Bejaia Année universitaire : 2022/2023
Faculté des Sciences Exactes Niveau : L3 RN SI
Département d'informatique Module : Bases de données
13
Université Abderrahmane Mira - Bejaia Année universitaire : 2022/2023
Faculté des Sciences Exactes Niveau : L3 RN SI
Département d'informatique Module : Bases de données
14
Université Abderrahmane Mira - Bejaia Année universitaire : 2022/2023
Faculté des Sciences Exactes Niveau : L3 RN SI
Département d'informatique Module : Bases de données
FROM PERSONNES
WHERE Adresse ='Bejaia'
UNION
SELECT *
FROM PERSONNES
WHERE Métier = 'Architecte' ;
Intersection R∩S SELECT attr
FROM R
INTERSECT
SELECT attr
FROM S ;
Exemple : Afficher les identifiants d'appartements dont l'état est occupé et dont la localité
est Alger
SELECT IdAppart
FROM APPARTEMENTS
WHERE Etat='occupé'
INTERSECT
SELECT IdAppart
FROM APPARTEMENTS
WHERE Localité='Alger';
Différence R−S SELECT attr
FROM R
MINUS
SELECT attr
FROM S ;
Exemple : Afficher les propriétaires (IdPersonne, Nom, Prénom) qui ne sont pas locataires
SELECT IdPersonne, Nom, Prénom
FROM PERSONNES, APPARTEMENTS
WHERE IdPersonne = Propriétaire
MINUS
SELECT IdPersonne, Nom, Prénom
FROM PERSONNES, LOCATIONS
WHERE IdPersonne = Locataire ;
Jointure R ⟕45675 S SELECT *
FROM R, S
WHERE R. A = S. B9 ;
Exemple : Donner les identifiants des appartements loués par "Riad SALMI".
SELECT IdAppart
FROM LOCATIONS , PERSONNES
WHERE PERSONNES.Nom = 'SALMI' AND PERSONNES.Prénom= 'Riad' AND
LOCATIONS.Locataire = PERSONNES.IdPersonne ;
15
Université Abderrahmane Mira - Bejaia Année universitaire : 2022/2023
Faculté des Sciences Exactes Niveau : L3 RN SI
Département d'informatique Module : Bases de données
En utilisant la clause IN :
SELECT Nom, Prénom
FROM PERSONNES
WHERE IdPersonne IN SELECT Propriétaire
FROM APPARTEMENTS
WHERE Type ='F4;
Remarque : Cette structure imbriquée correspond à la jointure des tables PERSONNES et
APPARTEMENTS sur la base des valeurs identiques des attributs IdPersonne et Propriétaire.
16
Université Abderrahmane Mira - Bejaia Année universitaire : 2022/2023
Faculté des Sciences Exactes Niveau : L3 RN SI
Département d'informatique Module : Bases de données
Exemple 2 : Afficher les localités des appartements qui ne sont pas de type F1 et F2
SELECT Localité
FROM APPARTEMENTS
WHERE Type NOT IN ('F1', 'F2');
Exemple 1 : Trouver les numéros d'appartements dont le montant de location est le moins
élevé parmi tous les appartements de Bejaia
SELECT NumAppart
FROM LOCATIONS
WHERE Montant <= ALL (SELECT Montant
FROM LOCATIONS
17
Université Abderrahmane Mira - Bejaia Année universitaire : 2022/2023
Faculté des Sciences Exactes Niveau : L3 RN SI
Département d'informatique Module : Bases de données
Remarque : Le montant est inférieur ou égal aux montants de location de tous les
appartements situés à Bejaia.
Exemple 2 : Trouver les numéros d'appartements dont le montant de location est moins élevé
que celui d'un appartement situé à Bejaia
SELECT NumAppart
FROM LOCATIONS
WHERE Montant < ANY (SELECT Montant
FROM LOCATIONS
WHERE NumAppart IN (SELECT NumAppart
FROM APPARTEMENTS
WHERE Localité = 'Bejaia')) ;
Remarque : Le montant de location est inférieur à au moins celui d'un appartement de Bejaia.
18
Université Abderrahmane Mira - Bejaia Année universitaire : 2022/2023
Faculté des Sciences Exactes Niveau : L3 RN SI
Département d'informatique Module : Bases de données
LIKE ‘%a’ : le caractère “%” permet de rechercher toutes les chaines de caractère qui se
terminent par un “a”.
LIKE ‘a%’ : ce modèle permet de rechercher toutes les lignes de “colonne” qui commencent
par un “a”.
LIKE ‘%a%’ : ce modèle est utilisé pour rechercher tous les tuples contenant la lettre “a”.
LIKE ‘_a%' : le modèle permet de rechercher les tuples qui contiennent la lettre "a" en
deuxième position.
Exemple : Trouver toutes les personnes dont le prénom contient la lettre "i"
SELECT *
FROM PERSONNES
WHERE Prénom LIKE '%i%';
Remarque : Pour la même valeur de la colonne Localité, on compte tous les appartements qui
y sont situés.
19
Université Abderrahmane Mira - Bejaia Année universitaire : 2022/2023
Faculté des Sciences Exactes Niveau : L3 RN SI
Département d'informatique Module : Bases de données
SELECT idAppart
FROM LOCATIONS
HAVING Montant = (SELECT MAX (Montant)
FROM LOCATIONS) ;
Exemple 2 : Donner le montant payé par "Riad SALMI" pour toutes ses locations
SELECT SUM (LOCATIONS.Montant)
FROM PERSONNES, LOCATIONS
20
Université Abderrahmane Mira - Bejaia Année universitaire : 2022/2023
Faculté des Sciences Exactes Niveau : L3 RN SI
Département d'informatique Module : Bases de données
Exercice :
Soit le schéma de relations d’une base de données relative à la gestion de fourniture de pièces
à des projets.
Fournisseurs (numF, nomF, statut, villeF)
Pièces (numP, nomP, couleur, poids, villeP)
Projets (numProj, nomProj, villeProj)
Fournitures (numF, numP, numProj, Quantité)
Dr GADOUCHE H.
21