Académique Documents
Professionnel Documents
Culture Documents
Semestre Autonome
S5
Pr S.MOQQADDEM
AU: 2021/2022
UNIVERSITE IBN TOFAIL ENCGK
– 12. Qui habite, dans un immeuble de plus de 10 étages avec un appartement de plus
de 100 m2?
– Π Nom_occ (σ(Nb_etage>10 ^ Superficie>100)(
(Occupant Nom_imb Nom_imb (Immeuble Nom_imb Nom_imb Appartemen t))))
Plan du cours:
I Concepts généraux
II Le modèle E-A
IV L’algèbre relationnelle
V Langage SQL
V Langage SQL
V. Langage SQL
V.1. Présentation du langage SQL
SQL signifie "Structured Query Language", soit en français
"Langage de requêtes structuré "
V. Langage SQL
V.1. Présentation du langage SQL
V. Langage SQL
V.1. Présentation du langage SQL
Malgré la normalisation ISO, il existe plusieurs variantes de
SQL sur le marché car chaque éditeur de SGBDR tente
d’étendre le standard pour accroître l’attrait commercial de
son produit
On distingue 3 types de requêtes: Actions (Création et
m.à.j), Sélections (Interrogation) et Contrôle (définir des
permissions pour les utilisateurs).
Chaque requête SQL doit obligatoirement se terminer par
un Point Virgule.
Pr S.MOQQADDEM AU: 2021/2022
UNIVERSITE IBN TOFAIL ENCGK
V. Langage SQL
V.1. Présentation du langage SQL
SQL, C’est à la fois:
Langage de définition de données (LDD) : définir, modifier et
supprimer des structures de données dans les tables
(CREATE, ALTER..)
Langage de manipulation des données (LMD) : entrer une
nouvelle ligne, modifier des lignes existantes, supprimer des
lignes dans la base de données (INSERT, UPDATE…)
Langage de contrôle de données (LCD) : gère les droit
d’accès à la base et aux structure qu’elle contient
Pr S.MOQQADDEM AU: 2021/2022
UNIVERSITE IBN TOFAIL ENCGK
V. Langage SQL
V.1. Présentation du langage SQL
Utilisation de SQL :
En mode interactif :
L’utilisateur écrit textuellement une commande SQL et
récupère le résultat immédiatement.
En mode intégré :
Une commande SQL est mélangée avec les instructions
d’un programme en langage de haut niveau tel que C,
C++, Visual basic, ...
Pr S.MOQQADDEM AU: 2021/2022
UNIVERSITE IBN TOFAIL ENCGK
V. Langage SQL
V.2. Types de données
INTEGER ou INT : entiers signés.
TEXT(p) ou CHAR(p) : chaîne de caractères de longueur fixe de p
caractères.
VARCHAR (p): chaîne de caractères de longueur variable de p
caractères maximum.
DATE, TIME, DATETIME: dates et/ou heures.
LOGICAL : valeur logique « oui » ou « non ».
DECIMAL(p, q) : nombres décimaux de p chiffres dont q après le
point décimal (par défaut, q = 0).
FLOAT : nombre réel en virgule flottante(il y a aussi Single pour
simple et Double pour réel double).
CURRENCY, MONEY : Monétaire.
COUNTER : Compteur (NuméroAuto).
Pr S.MOQQADDEM AU: 2021/2022
UNIVERSITE IBN TOFAIL ENCGK
V. Langage SQL
V.2. Types de données
Expressions de contraintes d'intégrité en SQL
Une contrainte d'intégrité est une clause permettant d’obliger la
modification de tables, faite par l'intermédiaire de requêtes
d'utilisateurs, afin que les données saisies dans la base soient
conformes aux données espérées (assurer la cohérence des
données dans une base) est:
INTÉGRITÉ DE DOMAINE
INTÉGRITÉ DE RELATION(DE CLÉ)
INTÉGRITÉ DE RÉFÉRENCE
Pr S.MOQQADDEM AU: 2021/2022
UNIVERSITE IBN TOFAIL ENCGK
V. Langage SQL
V.2. Types de données
Expressions de contraintes d'intégrité en SQL
Ces contraintes doivent être exprimées dès la création de la table grâce
aux mots clés suivants:
NULL / NOT NULL : valeurs non obligatoires/obligatoires.
DEFAULT (Valeur) : pour définir une valeur par défaut*
CHECK (Condition): pour contrôler la validité des valeurs*
UNIQUE : permet de vérifier que la valeur saisie pour un
champ n'existe pas déjà dans la table.
PRIMARY KEY : clé primaire.
FOREIGN KEY : clé étrangère.
CONSTRAINT : permet de donner un nom à une contrainte ce qui
permet de la manipuler.
Pr S.MOQQADDEM AU: 2021/2022
UNIVERSITE IBN TOFAIL ENCGK
V. Langage SQL
V.2. Types de données
V. Langage SQL
V.2. Types de données
Expression de contraintes d'intégrité: DEFAULT
Le langage SQL permet de définir une valeur par défaut lorsqu'un champ
de la base n'est pas renseigné grâce à la clause DEFAULT.
Cela permet notamment de faciliter la création de tables, ainsi que de
garantir qu'un champ ne sera pas vide.
La clause DEFAULT doit être suivie par la valeur à affecter. Cette
valeur peut être un des types suivants :
constante numérique
constante alphanumérique (chaîne de caractères)
le mot clé USER (nom de l'utilisateur)
le mot clé NULL
le mot clé CURRENT_DATE (date de saisie)
le mot clé CURRENT_TIME (heure de saisie)
le mot clé CURRENT_TIMESTAMP (date et heure de saisie)
Pr S.MOQQADDEM AU: 2021/2022
UNIVERSITE IBN TOFAIL ENCGK
V. Langage SQL
V.2. Types de données
Expression de contraintes d'intégrité
CHECK (Condition): pour contrôler la validité des valeurs
Il est possible de faire un test sur un champ grâce à la
clause CHECK() comportant une condition logique portant sur une
valeur entre les parenthèses. Si la valeur saisie est différente de NULL,
le SGBD va effectuer un test grâce à la condition logique.
UNIQUE : Tester l'unicité d'une valeur
La clause UNIQUE permet de vérifier que la valeur saisie pour un
champ n'existe pas déjà dans la table. Cela permet de garantir que toutes
les valeurs d'une colonne d'une table seront différentes.
Pr S.MOQQADDEM AU: 2021/2022
UNIVERSITE IBN TOFAIL ENCGK
V. Langage SQL
V.2. Types de données
Expressions de contraintes d'intégrité en SQL
PRIMARY KEY :
• Colonne PRIMARY KEY= Clé Primaire de la table.
• Identifie chaque ligne(enregistrement)de la table de manière unique.
• Une clé primaire ne doit pas accepter:
Les valeurs identiques répétitives
Les valeurs NULL
FOREIGN KEY(clé étrangère)
• Une clé étrangère est toujours liée à une clé primaire
• Elle doit respecter la contrainte d’intégrité référentielle: la valeur
d’une clé étrangère doit toujours être également une des valeurs de la
clé référencée(clé primaire)
Pr S.MOQQADDEM AU: 2021/2022
UNIVERSITE IBN TOFAIL ENCGK
V. Langage SQL
V.2. Types de données: Conventions
Les conventions relatives aux noms des tables et des champs varient quelque
peu d'un SGBD à l'autre:
Le nombre de caractères ne doit pas être trop grand (64 dans Access, 18 à
30 dans d'autres SGBD);
Seuls les lettres, les chiffres et le caractère de soulignement sont autorisés.
Access admet les caractères accentués. Il admet aussi l'espace, mais le nom
du champ doit être écrit entre crochets;
Certains SGBD nécessitent que le nom d'un champ commence par une
lettre, mais ce n'est pas le cas d'Access;
Les termes faisant partie du vocabulaire du langage SQL sont interdits
("date" par exemple). Ce sont les mots réservés.
Pr S.MOQQADDEM AU: 2021/2022
UNIVERSITE IBN TOFAIL ENCGK
V. Langage SQL
V.3. Requêtes d’action
Requêtes d’actions: Sont des requêtes qui permettent de créer des
tables, d’ajouter, de supprimer des enregistrements d’une table, …
Création d’une Base de données : Cette opération donne comme
résultat une BD vide ne contenant aucune table.
CREATE DATABASE permet de créer une nouvelle BD.
Création d’une table : Cette opération donne comme résultat une
table vide ne contenant aucun enregistrement. Il faut préciser :
Le nom de la table;
La description de ses colonnes : nom, type de
données et contraintes.
CREATE TABLE permet de créer une nouvelle table.
Pr S.MOQQADDEM AU: 2021/2022
UNIVERSITE IBN TOFAIL ENCGK
V. Langage SQL
V.3. Requêtes d’action
Création de table :
Syntaxe SQL pour créer une nouvelle table :
CREATE TABLE Nom_table (
Nom_champ1 type_1,
Nom_champ2 type_2 ,
…,
Nom_champN type_N );
V. Langage SQL
V.3. Requêtes d’action
Création de table :
Syntaxe SQL pour créer une nouvelle table :
CREATE TABLE Nom_table (
Nom_champ1 type_1 contrainte_1,
Nom_champ2 type_2 contrainte_2 ,
…,
Nom_champN type_N contrainte_N );
V. Langage SQL
V.3. Requêtes d’action
Création de table :
Syntaxe SQL pour créer une nouvelle table avec une clé
primaire simple :
CREATE TABLE Nom_table (
champ1 type [CONSTRAINT nom_contrainte] PRIMARY KEY,
champ2 type [NOT NULL],
…,
…….,
champN type [NOT NULL] );
Pr S.MOQQADDEM AU: 2021/2022
UNIVERSITE IBN TOFAIL ENCGK
V. Langage SQL
V.3. Requêtes d’action
Création de table :
Syntaxe SQL pour créer une nouvelle table avec une clé
primaire composée :
CREATE TABLE Nom_table (
champ1 type [NOT NULL],
champ2 type [NOT NULL],
…,
champN type,
PRIMARY KEY (champ1, champ2,…) );
V. Langage SQL
V.3. Requêtes d’action
Création de table :
Syntaxe SQL pour créer une nouvelle table avec une clé
primaire composée :
CREATE TABLE Nom_table (
champ1 type [NOT NULL],
champ2 type [NOT NULL],
…, champN type,
[CONSTRAINT nom_contrainte1] PRIMARY KEY (champ1,
champ2,…) );
V. Langage SQL
V.3. Requêtes d’action
Création de table : Exemples
CREATE TABLE Client (
email VARCHAR (50) NOT NULL,
nom VARCHAR (20) NOT NULL,
prenom VARCHAR (20),
motDePasse VARCHAR (60) NOT NULL,
anneeNaiss DECIMAL (4) ) ;
V. Langage SQL
V.3. Requêtes d’action
Création de table : Exemples
CREATE TABLE Client (
email VARCHAR (50) NOT NULL,
nom VARCHAR (20) NOT NULL,
prenom VARCHAR (20),
motDePasse VARCHAR (60) NOT NULL,
anneeNaiss DECIMAL (4)
UNIQUE(nom) ) ;
Pr S.MOQQADDEM AU: 2021/2022
UNIVERSITE IBN TOFAIL ENCGK
V. Langage SQL
V.3. Requêtes d’action
V. Langage SQL
V.3. Requêtes d’action
Création de table : Exemples
V. Langage SQL
V.3. Requêtes d’action
Création d’une table : Exemples
Donnez une requête SQL permettant de créer la table
EMPLOYES ( Nemployé: entier, Nom: texte(25), Prénom:
texte(20), Fonction: texte(15), Adresse: texte(50), Codeville:
entier long)
CREATE TABLE EMPLOYES (
Nemployé INTEGER PRIMARY KEY,
Nom TEXT(25),
Prénom TEXT(20),
Fonction TEXT(15),
Adresse TEXT(50),
Codeville LONG ) ;
Pr S.MOQQADDEM AU: 2021/2022
UNIVERSITE IBN TOFAIL ENCGK
V. Langage SQL
V.3. Requêtes d’action
Création d’une table : Exemples
Créez une requête SQL permettant de créer la table
DETAILS ( Ncommande: entier, Réf: texte(30), Pu: réel non
nul, Quantité: entier non nul, Remise: réel simple );
CREATE TABLE DETAILS (
Ncommande Integer,
Réf Char(30),
Pu float NOT NULL,
Quantité Integer NOT NULL,
Remise Single,
PRIMARY KEY ( Ncommande, Réf ) ) ;
V. Langage SQL
V.3. Requêtes d’action
Création d’une table: Clé étrangère
Créez une requête SQL permettant de créer la table
Participe( #Numadh: entier, #Numact: entier, AnneeParticipe: entier);
Numadh est la clé primaire de la table Adherent et Numact est la
clé primaire de la table Activite.
CREATE TABLE Participe(
Numadh integer,
Numact integer,
anneeParticipe integer,
Primary key (Numadh, Numact, AnneeParticipe),
Foreign key (Numadh) references Adherent(Numadh),
Foreign key (Numact) references Activite(Numact));
Pr S.MOQQADDEM AU: 2021/2022
UNIVERSITE IBN TOFAIL ENCGK
V. Langage SQL
V.3. Requêtes d’action
Création d’une table: Clé étrangère
Quatre options sont disponibles pour la suppression des clés
étrangères ( la définition de la contrainte d’intégrité référentielle ):
• ON DELETE RESTRICT : Pour interdire la suppression d’un
enregistrement référencé par un enregistrement d’une autre
relation. On trouve également l’expression NO ACTION à la place
du mot clé RESTRICT dans certains SGBD.
• ON DELETE SET NULL : Affecte la valeur NULL à la clé
étrangère.
• ON DELETE SET DEFAULT : Affecte la valeur par défaut
(selon le type de données) à la clé étrangère.
• ON DELETE CASCADE : Indique au SGBD qu’il est possible
de détruire la clé étrangère en détruisant toutes les clés étrangères
avec la même valeur.
Pr S.MOQQADDEM AU: 2021/2022
UNIVERSITE IBN TOFAIL ENCGK
V. Langage SQL
V.3. Requêtes d’action
Création d’une table: Clé étrangère
CREATE TABLE Film (titre VARCHAR (50) NOT NULL,
annee INTEGER NOT NULL,
idArt INTEGER,
codePays INTEGER,
PRIMARY KEY (titre),
FOREIGN KEY (idArt) REFERENCES Artiste(idArt) ON
DELETE SET NULL,
FOREIGN KEY (codePays) REFERENCES Pays(codePays));
Pr S.MOQQADDEM AU: 2021/2022
UNIVERSITE IBN TOFAIL ENCGK
V. Langage SQL
V.3. Requêtes d’action
V. Langage SQL
V.3. Requêtes d’action
Modification dans une table
Modification de la structure d’une table :
Il y a trois types d’actions concernant la modification de
structure d’une table :
Ajouter une ou plusieurs colonnes.
Supprimer une ou plusieurs colonnes.
Modifier les propriétés d’une ou de plusieurs colonnes.
Les commandes SQL relatives à ces actions :
ADD
DROP
MODIFY
Pr S.MOQQADDEM AU: 2021/2022
UNIVERSITE IBN TOFAIL ENCGK
V. Langage SQL
V.3. Requêtes d’action
Modification dans une table
Modification de la structure d’une table :
Pour modifier la structure d’une table, on précise tout d’abord le
nom de celle-ci en écrivant la commande suivante :
ALTER TABLE Nom_table
En suite, on spécifie la nature de l’action de modification (ajout,
suppression ou modification).
Pour cela, il faut utiliser l’une des trois commandes : ADD,
DROP ou MODIFY.
Pr S.MOQQADDEM AU: 2021/2022
UNIVERSITE IBN TOFAIL ENCGK
V. Langage SQL
V.3. Requêtes d’action
Modification dans une table
Exemples d’ajout :
Ajouter une colonne « AGE » (entier) dans la table « CLIENT » :
ALTER TABLE CLIENT
ADD AGE INTEGER;
Ajouter une colonne « DATECOMPTE » (date) dans la table
« COMPTE » :
ALTER TABLE COMPTE
ADD DATECOMPTE DATE;
Pr S.MOQQADDEM AU: 2021/2022
UNIVERSITE IBN TOFAIL ENCGK
V. Langage SQL
V.3. Requêtes d’action
Modification dans une table
Exemples de suppression :
Supprimer la colonne « ADRAGENCE » de la table « AGENCE» :
ALTER TABLE AGENCE
DROP ADRAGENCE;
V. Langage SQL
V.3. Requêtes d’action
Modification dans une table
Exemples de modification de propriétés :
Modifier le type de la colonne « ADRAGENCE » pour qu’il soit
un CHAR(100) au lieu de CHAR(40) :
ALTER TABLE AGENCE
MODIFY ADRAGENCE CHAR(100);
V. Langage SQL
V.3. Requêtes d’action
Modification dans une table
Créez une requête SQL permettant de créer la table
Ville Text(20) ) ;
V. Langage SQL
V.3. Requêtes d’action
CREATE TABLE EMPLOYES (
Nemployé INTEGER PRIMARY KEY,
Nom TEXT(25),
Prénom TEXT(20),
Fonction TEXT(15),
Adresse TEXT(50),
Codeville LONG ) ;
V. Langage SQL
V.3. Requêtes d’action
Modification dans une table
Modifiez la table EMPLOYES en déclarant le champ
"CodeVille" comme clé étrangère, puis créez un lien nommé
lien_ville sur le champ CodeVille de la table VILLES
V. Langage SQL
V.3. Requêtes d’action
V. Langage SQL
V.3. Requêtes d’action
Suppression d’une table
La syntaxe SQL pour supprimer une table est très simple :
Exemples :
V. Langage SQL
V.3. Requêtes d’action
Insertion d’enregistrements dans une table :
La commande qui permet d’insérer une ligne dans une table est
la suivante :
V. Langage SQL
V.3. Requêtes d’action
Insertion d’enregistrements dans une table :
La commande qui permet d’insérer une ligne dans une table est
la suivante :
V. Langage SQL
V.3. Requêtes d’action
Insertion d’enregistrements dans une table :
La commande qui permet d’insérer une ligne dans une table est
la suivante :
V. Langage SQL
V.3. Requêtes d’action
Insertion d’enregistrements dans une table :
Remarque:
On peut insérer plusieurs lignes à la fois
INSERT INTO Nom_table (champ1, champ2, champ3…)
VALUES
(valeur1_1, valeur2_1, valeur3_1 …) ,
(valeur1_2, valeur2_2, valeur3_2 …),
(valeur1_3, valeur2_3, valeur3_3 …),
…………………………………;
Pr S.MOQQADDEM AU: 2021/2022
UNIVERSITE IBN TOFAIL ENCGK
V. Langage SQL
V.3. Requêtes d’action
Insertion d’enregistrements dans une table :
Remarque:
Il est possible de ne pas renseigner toutes les colonnes.
Une colonne non renseignée sera vide NULL
V. Langage SQL
V.3. Requêtes d’action
Insertion d’enregistrements dans une table :
Remarque:
Attention à l’ordre de remplissage des tables d’une BD. Il
faut prendre en considération les relations clé primaire/clé
étrangère.
les valeurs de la clé étrangère doivent se trouver dans la
clé primaire référencée
Participe( #Numadh: entier, #Numact: entier, AnneeParticipe: entier)
Numadh est la clé primaire de la table Adherent et Numact est la clé
primaire de la table Activite.
V. Langage SQL
V.3. Requêtes d’action
Insertion d’enregistrements dans une table :
Exemple:
Créez une requête permettant d’ajouter l’enregistrement
suivant dans la table EMPLOYES: (100, BEN AZOUZ, Aziz,
Ingénieur, 90050)
La table EMPLOYES ( Nemployé , Nom, Prénom, Fonction,
Adresse, Codeville)
INSERT INTO EMPLOYES (Nemployé, Nom, Prénom,
Fonction, Codeville)
VALUES (100, ‘BEN AZOUZ’, ‘Aziz’, ‘Ingénieur’, 90050) ;
V. Langage SQL
V.3. Requêtes d’action
Modification d’un enregistrement
Syntaxe :
UPDATE table SET nouvelles valeurs WHERE critères
Pr S.MOQQADDEM AU: 2021/2022
UNIVERSITE IBN TOFAIL ENCGK
V. Langage SQL
V.3. Requêtes d’action
Modification d’un enregistrement
UPDATE table SET nouvelles valeurs WHERE critères
Les champs à mettre à jour doivent être écrits dans la clause SET,
l’un après l’autre (avec leurs valeurs) et séparés par des virgules.
V. Langage SQL
V.3. Requêtes d’action
Modification d’un enregistrement
Exemples :
Donner une requête SQL pour modifier l’adresse de
l'employé numéro 10 par la nouvelle adresse sera "10 Avenue
Mohamed VI, Rabat".
UPDATE EMPLOYES SET Adresse = ‘10 Avenue Mohamed
VI, Rabat’ WHERE Nemployé = 10 ;
Donner une requête SQL pour augmenter de 5% le salaire de
tous les acteurs : ACTEURS (N_act, Nom, Prénom,
Nationalité, Salaire, Age, Films)
UPDATE ACTEURS SET Salaire = Salaire * 1.05 ;
Pr S.MOQQADDEM AU: 2021/2022
UNIVERSITE IBN TOFAIL ENCGK
V. Langage SQL
V.3. Requêtes d’action
Suppression d’enregistrements
V. Langage SQL
V.3. Requêtes d’action
Suppression d’enregistrements
Exemples :
ACTEURS (N_act, Nom, Prénom, Nationalité, Salaire, Age, Films)