Module : Sources et base de données année universitaire:2023/2024
Management stratégique et système d'informations Semestre : 1
Le langage SQL
I. Introduction
Le langage SQL (Structured Query Language) est un langage d’interrogation structuré qui sert
à effectuer des opérations sur des bases de données. Il est l’un des langages les plus complet
pour la gestion des bases données. Il est aujourd’hui le langage le plus utilisé dans son
domaine.
Le langage SQL a été créé par IBM en 1970. Aujourd’hui il est devenu le langage par
excellence dans son domaine. Il est utilisé dans plusieurs SGBD, par exemple : Oracle,
MySQL, Access , Microsoft SQL Server...ect.
II. Définition
Le langage SQL (Structured Query Language) est un langage d’interrogation de haut niveau
et déclaratif. Le langage SQL peut être divisé en 4 Parties :
Le langage de définition des données (LDD)
Le langage de manipulation des données (LMD)
Le langage de contrôle de données (LCD)
Le langage d’interrogation de données (LID)
II.1. Le langage d’interrogation de données
Il s’agit d’un ensemble de commandes exprimé sous forme de requêtes pour récupérer des
résultats de la base de données.
La forme générale d’une requête SQL est :
Select */[Distinct]Champ1 [,Champ2,…]
Form table1[,table2,…,Vue,…]
[Where condition]
[Order by Champ1 [asc\desc] [, Champ2, …]
Group by champ1 [, champ2,…]
1
Module : Sources et base de données année universitaire:2023/2024
Management stratégique et système d'informations Semestre : 1
II.1.1. Description des clauses
Select : indique les champs à sélectionner
(*) permet de Sélectionner tous les champs de la table
(Distinct) permet de sélectionner les valeurs différentes du champ précédé par
Distinct.
(/) Signifie ou le choix
From : Indique la table ou les tables à interroger.
Exemple 1
Soit la BDD suivante :
Acteur (NA, Nom, Prénom, Adresse, Age).
Veste (NV, Marque, taille, couleur).
Porter(NA, NV, Durée, date).
1. Afficher tous les acteurs.
Select*
Form Acteur
2. Afficher les noms et prénoms de tous les acteurs.
Select Nom, Prénom
From Acteur
3. Afficher les différents Âges de tous les acteurs .
Select Age
Affiche les valeurs avec redondance
From Acteur
Ou
Select Distinct Age
Affiche les valeurs sans redondance
From Acteur
Where : Indique la condition de Sélection.
2
Module : Sources et base de données année universitaire:2023/2024
Management stratégique et système d'informations Semestre : 1
Remarques
La condition est une expression Booléenne (Logique)
La condition peut être Simple ou Composée en utilisant les operateurs logiques AND,
OR, NOT.
La condition est exprimée avec les Opérateurs relationnels (>, <, >=, <=, =, <>) Ou
d’autres types d’operateurs tels que :
Like: permet d’effectuer une recherche sur un modèle particulier. Il est par
exemple possible de rechercher les enregistrements dont la valeur d’une colonne
commence par telle ou telle lettre.
(%) Pour remplacer plusieurs Caractères
( _ ) Pour remplacer un seul caractère
Exemple 2
Afficher tous les acteurs dont le nom commence par 'S'
Select *
From Acteur
Where Nom Like 'S%'
Between val1 and val2 pour exprimer un Intervalle de valeurs
Exemple 3
1. Afficher le nom et prénom de tous les Acteurs âgés entre 20 et 40 ans
Select Nom, Prénom
From Acteur
Where Age Between 20 and 40
Ou
Select Nom,Prenom
From Acteur
Where (Age>=20) And (Age <=40)
2. Afficher le nom et le prénom des acteurs âgés de 30 ans
Select Nom, prénom
From Acteur
Where (Age =30)
3
Module : Sources et base de données année universitaire:2023/2024
Management stratégique et système d'informations Semestre : 1
3. Afficher les marques des vestes de taille 32 et de couleur rouge.
Select marque
From Veste
Where (Taille =32) And (couleur ='Rouge')
4. Afficher tous les acteurs dont le nom commence par 'S'
Select *
From Acteur
Where Nom Like 'S%'
5. Afficher le nom et l’âge des acteurs dont le prénom commence par 'A' et se termine par 'S'
Select Nom, Age
From Acteur
Where Prénom Like 'A%S'
6. Afficher le nom des Acteurs dont la 2éme Lettre du prénom est 'e'.
Select Nom
From Acteur
Where Prénom Like '_e%'
Order by : Permet d’ordonner les Résultats d’une Requête Selon des Critères (Champ) et
selon un certain Ordre (Ascendant/Croissant, Descendant/Décroissant)
Exemple 4
Select *
From Acteur
Order By Nom, Prénom Desc.
Le Résultat Permet d’afficher tous les acteurs ordonnés par ordre croissant des noms et ordres
décroissant des prénoms.
Group by : Permet de grouper les Résultats de la Requête sous forme de groupes en fonction
d’un critère.
Exemple 5
Afficher les noms et Prénoms des acteurs Groupés par adresse.
Select Nom, Prénom, Adresse
From Acteur
Group By Adresse.
4
Module : Sources et base de données année universitaire:2023/2024
Management stratégique et système d'informations Semestre : 1
Having : Permet d’exprimer un critère sur le groupe.
Exemple 6
Afficher les noms et prénoms des acteurs groupés par adresse qui commence par 't'
Select Nom, Prénom, Adresse
From Acteur
Group By adresse
Having Adresse Like ' T% '
II.2. Jointures internes
Elles sont spécifiées dans la clause FROM. Dans une jointure interne, les valeurs des colonnes
jointes sont comparées à l’aide de l’opérateur d’égalité « = ».
1ere Expression
Select */Liste de champs
From Table 1 inner Join Table2 On table 1.Champ c =Table2.Champ c
Champ C : est le champ commun entre les deux tables
2éme expression
Select*/Liste de champ
From table1,Table2
Where Table1.Champ C=Table2.Champ c
Remarque : une jointure interne peut être écrite en utilisant la clause WHERE
Exemple 7
Soit le schéma relationnel suivant :
Employé (Nom, Prénom, DateNaissance, Adresse, N°Avs, Salaire, N°Dep) ;
N°Dep REFERENCE Département.N°Dep
Département (NomD, N°Dep, Directeur) ;
2 identifiants : (NomD) et (N°Dep)
Directeur REFERENCE Employé.N°Avs
Projet (NomP, N°Pro, Lieu, N°Dep) ;
2 identifiants : (NomP) et (N°Pro)
N°Dep REFERENCE Département.N°Dep
Travaille (N°Avs, N°Pro, Heures) ;
N°Pro REFERENCE Projet.N°Pro
N°Avs REFERENCE Employé.N°Avs
5
Module : Sources et base de données année universitaire:2023/2024
Management stratégique et système d'informations Semestre : 1
Précisions : Chaque employé appartient à un département et travaille sur zéro, un ou plusieurs
projets. Chaque projet est rattaché à un département qui – attention – peut être différent de
celui des employés travaillant sur ce projet.
Exprimer les requêtes suivantes en SQL :
1. Nom et adresse des employés qui travaillent au département de recherche.
2. Nom des employés qui travaillent plus de 10 heures sur un projet à Genève.
3. Nom des projets sur lesquels travaillent Jean Muller ou bien Annie Grandjean.
4. Nom des projets sur lesquels travaillent à la fois Jean Muller et Annie Grandjean.
5. Nom et prénom des employés qui ne travaillent sur aucun projet.
Correction
1. SELECT Nom, Adresse
FROM Employé, Département
WHERE (Employé.N°Dep=Département.N°Dep) AND (NomD='Recherche' );
2. SELECT Nom
FROM Employé, Travaille, Projet
WHERE Employé.N°AVS=Travaille.N°AVS AND Travaille.N°Pro=Projet.N°Pro AND
Lieu='Genève' AND Heures>10;
3. SELECT NomP
FROM Employé, Travaille, Projet
WHERE Employé.N°AVS=Travaille.N°AVS AND Travaille.N°Pro=Projet.N°Pro AND
((Nom='Muller' AND Prénom='Jean') OR (Nom='Greanjean' AND Prénom='Annie')) ;
4. ( SELECT NomP
FROM Employé, Travaille, Projet
WHERE Employé.N°AVS=Travaille.N°AVS AND Travaille.N°Pro=Projet.N°Pro AND
Nom='Muller' AND Prénom='Jean')
INTERSECT
( SELECT NomP
FROM Employé, Travaille, Projet
WHERE Employé.N°AVS=Travaille.N°AVS AND Travaille.N°Pro=Projet.N°Pro AND
Nom='Greanjean' AND Prénom='Annie') ;
5. SELECT Nom, Prénom
FROM Employé
WHERE N°AVS NOT IN (SELECT N°AVS FROM Travaille) ;
6
Module : Sources et base de données année universitaire:2023/2024
Management stratégique et système d'informations Semestre : 1
II.3.Les fonctions d’agrégation
Les fonctions d’agrégation dans le langage SQL permettent d’effectuer des opérations
statistiques sur un ensemble d’enregistrements. Étant donné que ces fonctions s’appliquent à
plusieurs lignes en même temps, elle permettent des opérations qui servent à récupérer
l’enregistrement le plus petit, le plus grand ou bien encore de déterminer la valeur moyenne
sur plusieurs enregistrements.
II.3.1. Count ()
permet de compter le nombre d'enregistrements dans une table.
Syntaxe
Select count (*/champ)
From table
[where condition]
Exemple 9
1. Combien d’acteurs ont porté des vestes rouges.
Select count (NA)
From acteur, veste, porter
Where acteur.NV = porter.NV
And porter.NV = veste.NV
And couleur = 'rouge'
2. Quel est le nombre total de vestes
Select count (*)
From veste
II.3.2. Sum ()
Permet de calculer la somme totale d'une colonne contenant des valeurs numériques.
Syntaxe
Select sum ([distinct] champ)
From table
Exemple 9
Calculer la durée totale pendant la quelle les vestes de taille 32 ont été portées.
Select sum (durée)
From porter, veste
Where (porter.NV = veste.NV
And taille = 32)
7
Module : Sources et base de données année universitaire:2023/2024
Management stratégique et système d'informations Semestre : 1
II.3.3. Avg ( )
Permet de calculer la valeur moyenne sur un ensemble d'enregistrements de type numérique et
non nul.
Syntaxe
Select avg ([distinct] champ)
From table
Exemple 10
Calculer la moyenne des durées.
Select avg (durée)
From porter
II.3.4. Min ( )
Permet de renvoyer la plus petite valeur parmi les valeurs d’un champ de type numérique
Syntaxe
Select min ([distinct] champ)
From table
Exemple 11
Déterminer la plus petite taille parmi les vestes rouges.
Select min (taille)
From veste
Where couleur = 'rouge'
II.3.5. Max ( )
Permet de renvoyer la plus grande valeur parmi les valeurs d’un champ de type numérique
Syntaxe
Select max ([distinct] champ)
From table
Exemple 12
Déterminer la plus grande valeur des durées
Select max (durée)
From porter
8
Module : Sources et base de données année universitaire:2023/2024
Management stratégique et système d'informations Semestre : 1
II.4. Notion de sous requête
C’est une requête qui renvoie des résultats et qui sont exploités dans une requête appelée
requête principale.
Pour lier une sous-requête à une requête principale, on utilise des opérateurs à savoir :
Opérateurs relationnels qui peuvent être accompagnés par des opérateurs ALL ou
ANY
Opérateur IN ou NOT IN
ANY : la condition est vraie si elle est vérifiée pour au moins une des valeurs renvoyées par
la sous-requête.
ALL : la condition est vraie si elle est vérifiée pour chacune des valeurs renvoyées par la
sous-requête
IN : la condition est vraie si elle est vérifiée pour une des valeurs renvoyées par la sous-
requête
Syntaxe
1ere forme
2eme forme
Select ….
From ….
Where <exp1> IN/NOT IN (Select <exp1>
From ….
Where ….)
9
Module : Sources et base de données année universitaire:2023/2024
Management stratégique et système d'informations Semestre : 1
Exemple 13
Sélectionner toutes les vestes portées pendant 2 heures et dont la taille est supérieure à au
moins une veste de couleur rouge.
Select *
From veste, porter
Where veste.NV = porter.NV
And durée = 2
And taille > ANY (select taille
From veste
Where couleur = 'rouge')
Exercice 1
Soit le schéma relationnel de la BDD suivante:
ABONNÉ(NumAb, NomAb, PrénomAb, AdrAb, DateAb)
LIVRE (ISBN, Titre, Éditeur, Année)
AUTEUR(NumAut, NomAut, PrénomAut)
ÉCRIT(ISBN, NumAut)
EMPRUNT(NumEmp, NumAb, ISBN, DateEmp, DateRet)
Questions
1. Afficher tous les emprunts du livre intitulé « Base de Données » édité par Eyrolles.
2. Afficher tous les emprunts effectués après l’abonné 10.
3. Afficher les livres qui ont déjà été empruntés.
4. Afficher les livres qui n’ont pas été empruntés depuis le 1er mars 2019.
5. Afficher tous les abonnés qui ont emprunté un livre édité par Eyrolles.
6. Afficher la liste des abonnés inscrits en dernier.
7. Afficher la liste des abonnés inscrits avant au moins un des abonnés.
10
Module : Sources et base de données année universitaire:2023/2024
Management stratégique et système d'informations Semestre : 1
1. Afficher tous les emprunts du livre intitulé « Base de Données » édité par Eyrolles.
SELECT *
FROM Emprunt
WHERE ISBN = (SELECT ISBN
FROM Livre
WHERE (Titre = 'Bases de Données') AND ( Éditeur = 'Eyrolles'));
2. Afficher tous les emprunts effectués après l'emprunt de l’abonné 10.
SELECT *
FROM Emprunt
WHERE DateEmp > (SELECT DateEmp
FROM Emprunt
WHERE NumAb = 10);
3. Afficher les livres qui ont déjà été empruntés.
SELECT *
FROM Livre
WHERE ISBN IN (SELECT ISBN
FROM Emprunt);
4. Afficher les livres qui n’ont pas été empruntés depuis le 1er mars 2019.
SELECT *
FROM Livre
WHERE ISBN NOT IN (SELECT ISBN
FROM Emprunt
WHERE DateEmp >= '2019-03-01');
5. Afficher tous les abonnés qui ont emprunté un livre édité par Eyrolles.
SELECT *
FROM Abonné
WHERE NumAb IN (SELECT NumAb
FROM Emprunt
WHERE ISBN IN (SELECT ISBN
FROM Livre
WHERE Éditeur = 'Eyrolles'));
6. Afficher la liste des abonnés inscrits en dernier.
SELECT *
FROM Abonné
WHERE DateAb >= ALL (SELECT DateAb
FROM Abonné);
7.SELECT *
FROM Abonné
WHERE DateAb < ANY (SELECT DateAb
FROM Abonné);
11
Module : Sources et base de données année universitaire:2023/2024
Management stratégique et système d'informations Semestre : 1
Exercice 2
Soit le schéma relationnel suivant :
Produit (Réf, Désignation, Qte stock, Couleur)
Vente (NumV, Nom client, Réf, Qte Vendue, Date V)
Achat (NumA, NomFour, Réf, Qte Achetée, Date A)
Exprimer en en SQl les requêtes suivantes.
1. La liste de tous les produits
2. La liste des produits dont la quantité en stock est supérieure à 10
3. La désignation et la quantité en stock des produits de couleur 'rouge'
4. La désignation et la quantité vendue pour les clients dont le nom commence par 'A' en
2015
5. Quelle est la quantité totale vendue par produit
6. Quel est le produit ayant le plus grand stock
7. Quel est le produit ayant le plus faible stock
8. Les ventes effectuées le mois de mars et qui portent sur des produits de couleur 'jaune'
9. La désignation des produits dont la quantité vendue est supérieure à la quantité achetée
Correction
1. Select *
From produit
2. Select *
From produit
Where Qte stock >10
3.Select désignation, Qte stock
From produit
Where couleur = 'rouge'
4. Select désignation, Qte vendu
From produit, vente
Where produit.ref = vente.ref
And nom client like 'A% '
And date V between '01/01/2015' and '31/12/2015'
ou Date V >= '01/01/2015' and date V <= '31/12/2015'
ou year (date V) = 2015
5. Select Sum (Qte vendu), ref
From vente
Groupe by ref
12
Module : Sources et base de données année universitaire:2023/2024
Management stratégique et système d'informations Semestre : 1
6. Select désignation
From produit
Where Qte stock = (Select max (Qte stock)
From produit)
7. Select désignation
From produit
Where Qte stock = (Select min (Qte stock)
From produit)
8. Select NumV
From produit P, vente V
Where P.Ref = V.Ref
And month (Date V) = 3
And couleur = 'jaune'
9.Select désignation
From produit P, vente V, achat A
Where P.Ref = V.Ref
And V.Ref = A.Ref
And Qte vendue > Qte achatée
II.5. Autres jointures
II.5.1. INNER JOIN : jointure interne pour retourner les enregistrements quand la condition
est vrai dans les 2 tables. C’est l’une des jointures les plus communes.
SELECT *
FROM table1 INNER JOIN table2 ON table1.id = table2.fk_id
II.5.2. 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.
SELECT *
FROM table1 LEFT JOIN table2 ON table1.id = table2.fk_id
Exemple
Pour lister tous les utilisateurs avec leurs commandes et afficher également les utilisateurs qui
n’ont pas effectué d’achats, il est possible d’utiliser la requête suivante:
SELECT *
FROM utilisateur LEFT JOIN commande ON utilisateur.id = commande.utilisateur_id
13
Module : Sources et base de données année universitaire:2023/2024
Management stratégique et système d'informations Semestre : 1
II.5.3. 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.
SELECT *
FROM table1 RIGHT JOIN table2 ON table1.id = table2.fk_id
II.5.4. FULL JOIN (ou FULL OUTER JOIN) : jointure externe pour retourner les résultats
quand la condition est vérifiée dans au moins une des 2 tables.
SELECT *
FROM table1 FULL JOIN table2 ON table1.id = table2.fk_id
Exemple
Prenons l’exemple d’une base de données qui contient une table utilisateur ainsi qu’une
table commande qui contient toutes les ventes. On veut lister tous les utilisateurs ayant
effectué ou non une vente, et de lister toutes les ventes qui sont associées ou non à un
utilisateur.
SELECT id, prenom, nom, utilisateur_id, date_achat, num_facture
FROM utilisateur FULL JOIN commande ON utilisateur.id = commande.utilisateur_id
Exercices 2
Soit le schéma relationnel suivant:
Emprunts (idemprunt,idlivre, idemprunteur, datepret, daterendu)
Emprunteurs (idemprunteur, nom, prénom, adresse, code ,ville, téléphone, sexe,
datenaissance, nbretards)
Editeurs (idediteur, nom, adresse, code, ville, pays, téléphone, fax)
Auteurs(idauteur, nom, prénom, datenaissance, datedecés, bibliographie)
Livre (idlivre, isbn, titre, nb pages, dateparu, prix, idediteur, idauteur, theme, format)
Créer les requêtes SQL suivantes:
1. En face de chaque titre d'ouvrage, afficher le nom et prénom de son auteur.
2. Afficher le nom et le prénom des emprunteurs suivi de la date de leurs
emprunts.
3. Afficher le titre et l'auteur des ouvrages empruntés suivi du nom de leur
emprunteur.
4. A la suite de problèmes de saisie informatique, il existe un certain nombre
d'emprunts sans emprunteurs. Affichez l'identifiant de tous les emprunts, suivi
du nom de l'emprunteur qu'il existe ou non.
5. Afficher la liste des emprunts suivi de l'identifiant de l'emprunteur seulement
s'il y a un emprunteur, mais aussi comprenant les emprunteurs n'ayant pas
encore effectué d'emprunts.
6. Afficher la liste des emprunts et des emprunteurs que les emprunts n'aient pas
d'emprunteurs ou que les emprunteurs n'aient jamais effectué d'emprunts.
14
Module : Sources et base de données année universitaire:2023/2024
Management stratégique et système d'informations Semestre : 1
Correction
1.SELECT titre, nom, prenom
FROM livres, auteurs
WHERE livres.idauteur = auteurs.idauteur
2.SELECT nom, prenom, datepret
FROM emprunteurs, emprunts
WHERE emprunteurs.idemprunteur = emprunts.idemprunteur;
ou bien
2. SELECT nom, prenom, datepret
FROM emprunteurs JOIN emprunts USING(idemprunteur);
3. SELECT titre, auteurs.nom, emprunteurs.nom
FROM livres, auteurs, emprunteurs, emprunts
WHERE emprunts.idlivre = livres.idlivre
AND emprunts.idemprunteur = emprunteurs.idemprunteur
AND livres.idauteur = auteurs.idauteur;
4 - SELECT idemprunt, nom
FROM emprunts LEFT [OUTER] JOIN emprunteurs USING(idemprunteur)
ou bien
SELECT idemprunt, nom
FROM emprunts LEFT [OUTER] JOIN emprunteurs on (emprunts. idemprunteur =
emprunteurs. idemprunteur)
5.SELECT idemprunt, idemprunteur
FROM emprunts RIGHT OUTER JOIN emprunteurs USING(idemprunteur)
6. SELECT idemprunt, idemprunteur
FROM emprunts FULL OUTER JOIN emprunteurs USING(idemprunteur)
15
Module : Sources et base de données année universitaire:2023/2024
Management stratégique et système d'informations Semestre : 1
III. Contraintes
Les contraintes mettent en application l'intégrité des données. Elles permettent d’assurer des
contrôles sur les données saisies dans la base de données pour que celle-ci reste cohérente.
Les contraintes sont ajoutées :
- au moment de la création de la table ;
- ou après la création de celle-ci.
III.1. La contrainte PRIMARY KEY permet de définir une ou plusieurs colonnes comme la
clé primaire d’une table.
Exemple 1
CREATE TABLE matiere (
Num_mat INT PRIMARY KEY ,
Intitule VARCHAR(15),
Coef INT)
Exemple 2
CREATE TABLE notes (
Num_mat INT,
Num_etud INT,
Note1 REAL,
Note2 REAL,
CONSTRAINT pkNotes PRIMARY KEY (Num_mat, Num_etud) )
III.2. La contrainte UNIQUE permet de garantir qu’aucune valeur en double n’est entrée
dans une colonne spécifique autre que la clé primaire .
Exemple 3
CREATE TABLE employe (
matricule INT PRIMARY KEY,
NSS_empl INT UNIQUE,
…)
Ou bien
CREATE TABLE employe (
matricule INT PRIMARY KEY,
NSS_empl INT
CONSTRAINT cst_nss UNIQUE (NSS_empl),…)
III.3. La contrainte CHECK permet de définir une condition que la valeur doit respecter
avant d’être enregistrée.
Exemple 4
Poids Real CHECK (Poids between 10 and 150).
16
Module : Sources et base de données année universitaire:2023/2024
Management stratégique et système d'informations Semestre : 1
III.4. La contrainte DEFAULT permet de définir une valeur par défaut pour une colonne, qui
sera utilisée lors de l’ajout d’un nouvel enregistrement, si aucune valeur n’est précisée pour
cette colonne.
- On peut mettre après DEFAULT, une fonction sans argument, une constante, ou NULL
Exemple 5: création de la contrainte DEFAULT au moment de la création de la table.
CREATE TABLE commandes (
Num_cde INT PRIMARY KEY,
Date_cde DATETIME ,
Mont_cde MONEY DEFAULT (0))
III.5. La contrainte [NOT] NULL permet de définir la possibilité pour une colonne
d’accepter une valeur « NULL ». Elle est utilisée pour rendre la saisie de données obligatoire
pour une colonne.
Exemple 6
CREATE TABLE etudiant
( Num_etud INT PRIMARY KEY,
Nom_etud VARCHAR(15) NOT NULL,
Prenom_etud VARCHAR(15) NOT NULL,
Adr_etud VARCHAR(30) NULL )
III.6. La contrainte FOREIGN KEY appliquée à une colonne, permet de vérifier que la
valeur doit exister dans la colonne référencée. Dans le cas contraire, le système renvoie un
message d’erreur signalant une violation de clé étrangère.
FOREIGN KEY(référence_colonne) REFERENCES référence_table(reference_colonne)
Exemple 7
create table livraison (
np int ,
nu int,
nf int,
quantité real,
constraint pkliv primary key (np,nu,nf),
constraint refproduit foreign key (np) references produit (np),
constraint refusine foreign key (nu) references usine (nu),
constraint refournisseur foreign key (nf) references fournisseur (nf));
IV. Data Definition Language (Langage de Définition des Données)
Permet de créer des bases de données, des tables, des contraintes, etc. Cette brique du SQL
comporte trois clauses : CREATE, ALTER et DROP.
17
Module : Sources et base de données année universitaire:2023/2024
Management stratégique et système d'informations Semestre : 1
IV.1. Create Database
Syntaxe
CREATE DATABASE db_name;
IV.2. Create Table
Syntaxe
CREATE TABLE nom_table (nom_colonne type_donnees [contrainte] [,] )
IV.3. Ajout de colonnes
Syntaxe
ALTER TABLE nom_table
ADD nom_colonne type_colonne [null / not null ]
Exemple
ALTER TABLE clients
ADD clt_adr VARCHAR(255)
VI.4.Suppression de colonnes
Syntaxe
ALTER TABLE nom_table
DROP COLUMN nom_colonne
Exemple
ALTER TABLE clients
DROP COLUMN clt_adr
IV.5. Suppression d’une table
L’instruction DROP TABLE permet de supprimer une table existante.
Syntaxe
DROP TABLE nom_table
V. Data Manipulation Language (Langage de Manipulation des Données)
V.1. INSERT Permet d’insérer des lignes dans la table nom_table.
Syntaxe
INSERT into nom table
values (valeur champ1, ….)
18
Module : Sources et base de données année universitaire:2023/2024
Management stratégique et système d'informations Semestre : 1
Exemple
INSERT INTO client(id_clt,nom_clt,prenom_clt)
VALUES( 21,’MADJID’,’AMAR’)
INSERT INTO client
VALUES(21,'AHMED','AMAR')
Insérer plusieurs lignes
INSERT INTO client(id_clt,nom_clt,prenom_clt)
VALUES (21,'AHMED','AMAR'), (21,'MALIK’,DJAMILA’), (21,'ILHEM’,SAIDA’)
V.2. Suppression de données
L’instruction « DELETE » permet de supprimer une ou plusieurs lignes dans une table.
Syntaxe
DELETE
FROM tables
[WHERE condition]
Exemple
1. Supprimer toutes les lignes
DELETE
FROM client
2. Supprimer uniquement les clients dont l’âge est 39
DELETE
FROM client
WHERE age_clt>39
3. Supprimer les clients dont le nom est égal au prénom
DELETE
FROM client
WHERE nom_clt=prenom_clt
19
Module : Sources et base de données année universitaire:2023/2024
Management stratégique et système d'informations Semestre : 1
V.3. Modification de données
L’instruction « UPDATE » permet de changer les valeurs d’une ou plusieurs lignes dans une
table.
Syntaxe
UPDATE nom_table
SET {nom_colonne = {expression| default} [,..]}
[WHERE condition]
Exemple
1. Ajouter un point à tous les étudiants
UPDATE etudiant
SET note=note+1
2. Ajouter un point uniquement aux étudiants dont la note est inférieure à 10
UPDATE etudiant
SET note=note+1
WHERE note<10
20