SQL
SQL est à la fois :
Un langage de définition des données (CREATE , ALTER,
DROP)
SQL • Un langage de manipulation de données (UPDATE ,INSERT ,
DELETE)
• Un langage d’interrogation (SELECT)
▪ Select :
Les requêtes ▪ La principale commande du langage d’interrogation
SQL ▪ Syntaxe:
SELECT SELECT liste_attributs
FROM nom_relation
liste des libellés et des Quantités par Produit
SELECT SELECT LIB,QTES
FROM PRODUIT
▪ Pour éliminer les doubles il faut rajouter le mot clé DISTINCT
SELECT DISTINCT LIB,QTES
FROM PRODUIT
SELECT
SELECT *
FROM nom-relation
WHERE qualification
Cette opération permet de sélectionner les tuples
d’une relation vérifiant une certaine condition
La qualification peut faire appel aux opérateurs
SELECT suivants:
Opérateurs logiques: AND, OR, NOT
Comparateurs de chaînes: IN, BETWEEN, LIKE
Opérateurs arithmétiques: +, -, /, %
Comparateurs arithmétiques: =,<, >, <>
▪ Liste des Produits de Couleur ‘bleu' dont la Quantité
est supérieure à 10
SELECT *
SELECT FROM PRODUIT
WHERE COUL = ‘bleu’ AND QTES > 10 ;
SELECT *
FROM PRODUIT
WHERE QTES BETWEEN 80 AND 100
SELECT SELECT *
FROM PRODUIT
WHERE COUL IN (‘rouge’ , ‘bleu’)
▪ liste des produits dont le libellé commence par ‘ca
SELECT *
FROM PRODUIT
WHERE LIB LIKE ‘ca%’ ;
▪ liste des numéros et libellés des produits de couleurs
noir ou dont la quantité est supérieure à 80
SELECT SELECT NP, LIB
FROM PRODUIT
WHERE COUL = ‘noir’
OR QTES > 80 ;
▪ Il est possible de trier les résultats suivant l’ordre
ascendant ou descendant d’un ou plusieurs attributs en
ajoutant la clause:
ORDER BY . . DESC ou ORDER BY . . ASC
SELECT
SUM : Permet de calculer la somme des valeurs d’une colonne
Exemple: affichage du total des salaires versés
SELECT SUM (salaire) FROM employé;
AVG: Permet de calculer la moyenne de toutes les valeurs d’une
colonne
Exemple: affichage de moyenne (salaire) des employés
Fonctions SQL SELECT AVG (salaire) FROM employé;
standards COUNT : Permet de compter le nombre de lignes d’une table
Exemple: affichage du nombre total des salariés
SELECT COUNT (*) FROM employé;
MAX / MIN: Renvoie la valeur maximum ou minimum d’une
colonne
▪ Insert : ajout de lignes
▪ La syntaxe :
▪ Exemple:
INSERT ▪ La commande suivante ajoute une ligne dans la table
produit
▪ Update : permet de modifier les valeurs d’un ou
plusieurs champs
▪ La syntaxe :
UPDATE
▪ Delete: permet de supprimer des lignes d’une table
▪ La syntaxe:
▪ Exemple:
▪ supprimer tous les produits achetés par Ahmed
DELETE
▪ La jointure :
▪ Est une opérations permet l’extraction des données de
plusieurs tables
▪ Exemple
▪ Soit les deux tables suivantes(Client, Commande)
La jointure
Client
Client Commande idc nom ville
Idc Idcmnd 1 Atelier graphique Casablanca
Nom Date_cmd
ville 2 Ste de fer rabat
Montant
idc 3 Ste atlas rabat
4 Porto imports co marrakech
Donner Les clients (nom de client et ville) ayant passé Commande
des commandes durant le mois de janvier 2016 ? idcmnd Date_cmd montant idc
1 11/02/2015 5000 1
SELECT [Link], Client .Ville
FROM Client, Commande 2 25/11/2015 3500 2
WHERE [Link]=[Link] 3 04/12/2015 25851 3
AND Datecmnd BETWEEN ’01/01/2016’ and ’31/01/2016’ ;
4 12/12/2015 36952 3
5 02/01/2016 12000 4
6 03/01/2016 5800 4
Client Requête
idc nom ville SELECT [Link], Client .Ville
1 Atelier graphique Casablanca FROM Client, Commande
WHERE [Link]=[Link]
2 Ste de fer rabat
3 Ste atlas rabat
4 Porto imports co marrakech Résultat de la requête
Nom ville
Commande Atelier graphique Casablanca
idcmnd Date_cmd montant idc
1 11/02/2015 5000 1
2 25/11/2015 3500 2
3 04/12/2015 25851 3
4 12/12/2015 36952 3
5 02/01/2016 12000 4
6 03/01/2016 5800 4
Client Requête
idc nom ville SELECT Nom, Ville
1 Atelier graphique Casablanca FROM Client, Commande
WHERE [Link]=[Link]
2 Ste de fer rabat
3 Ste atlas rabat
4 Porto imports co marrakech Résultat de la requête
Nom ville
Commande Atelier graphique Casablanca
idcmnd Date_cmd montant idc Ste de fer rabat
1 11/02/2015 5000 1
2 25/11/2015 3500 2
3 04/12/2015 25851 3
4 12/12/2015 36952 3
5 02/01/2016 12000 4
6 03/01/2016 5800 4
Client Requête
idc nom ville SELECT Nom, Ville
1 Atelier graphique Casablanca FROM Client, Commande
WHERE [Link]=[Link]
2 Ste de fer rabat
3 Ste atlas rabat
4 Porto imports co marrakech Résultat de la requête
Nom ville
Commande Atelier graphique Casablanca
idcmnd Date_cmd montant idc Ste de fer rabat
1 11/02/2015 5000 1
Ste atlas rabat
2 25/11/2015 3500 2
3 04/12/2015 25851 3
4 12/12/2015 36952 3
5 02/01/2016 12000 4
6 03/01/2016 5800 4
Client Requête
idc nom ville SELECT Nom, Ville
1 Atelier graphique Casablanca FROM Client, Commande
WHERE [Link]=[Link]
2 Ste de fer rabat
3 Ste atlas rabat
4 Porto imports co marrakech Résultat de la requête
Nom ville
Commande Atelier graphique Casablanca
idcmnd Date_cmd montant idc Ste de fer rabat
1 11/02/2015 5000 1
Ste atlas rabat
2 25/11/2015 3500 2
3 04/12/2015 25851 3 Ste atlas rabat
4 12/12/2015 36952 3
5 02/01/2016 12000 4
6 03/01/2016 5800 4
Client Requête
idc nom ville SELECT Nom, Ville
1 Atelier graphique Casablanca FROM Client, Commande
WHERE [Link]=[Link]
2 Ste de fer rabat
3 Ste atlas rabat
4 Porto imports co marrakech Résultat de la requête
Nom ville
Commande Atelier graphique Casablanca
idcmnd Date_cmd montant idc Ste de fer rabat
1 11/02/2015 5000 1
Ste atlas rabat
2 25/11/2015 3500 2
3 04/12/2015 25851 3 Ste atlas rabat
4 12/12/2015 36952 3 Porto imports co marrakech
5 02/01/2016 12000 4
6 03/01/2016 5800 4
Client Requête
idc nom ville SELECT Nom, Ville
1 Atelier graphique Casablanca FROM Client, Commande
WHERE [Link]=[Link]
2 Ste de fer rabat
3 Ste atlas rabat
4 Porto imports co marrakech
Résultat de la requête
Nom ville
Commande Atelier graphique Casablanca
idcmnd Date_cmd montant idc Ste de fer rabat
1 11/02/2015 5000 1
Ste atlas rabat
2 25/11/2015 3500 2
3 04/12/2015 25851 3 Ste atlas rabat
4 12/12/2015 36952 3 Porto imports co marrakech
5 02/01/2016 12000 4
Porto imports co marrakech
6 03/01/2016 5800 4
Résultat de la requête
SELECT Nom, Ville
FROM Client, Commande Nom ville
WHERE [Link]=[Link] Porto imports co marrakech
AND Datecmnd BETWEEN ’01/01/2016’ and ’31/01/2016’ ;
Porto imports co marrakech
SELECT DISTINCT Nom, Ville Résultat de la requête
FROM Client, Commande Nom ville
WHERE [Link]=[Link]
Porto imports co marrakech
AND Datecmnd BETWEEN ’01/01/2016’ and ’31/01/2016’ ;
Exemples
Exercice 01 :
Soit le modèle relationnel suivant relatif à une bdd sur des représentations musicales .
REPRESENTATION (n°représentation, titre_représentation, lieu)
MUSICIEN (nom, n°représentation*)
PROGRAMMER (date, n°représentation*, tarif)
Questions :
1 – Donner la liste des titres des représentations.
2 – Donner la liste des titres des représentations ayant lieu à l’opéra Bastille.
3 – Donner la liste des noms des musiciens et des titres des représentations auxquelles ils participent.
4 – Donner la liste des titres des représentations, les lieux et les tarifs pour la journée du 14/09/96.
1 – Donner la liste des titres des représentations.
SELECT titre_représentation FROM REPRESENTATION ;
2 – Donner la liste des titres des représentations ayant lieu à l’opéra Bastille.
SELECT titre_représentation FROM REPRESENTATION
WHERE lieu="Opéra Bastille" ;
3 – Donner la liste des noms des musiciens et des titres des représentations auxquelles ils participent.
SELECT [Link], REPRESENTATION. titre_représentation
FROM MUSICIEN, REPRESENTATION
WHERE MUSICIEN.n°représentation = REPRESENTATION.n°représentation ;
4 – Donner la liste des titres des représentations, les lieux et les tarifs pour la journée du 14/09/96.
SELECT REPRESENTATION. titre_représentation, REPRESENTATION. lieu, [Link]
FROM REPRESENTATION, PROGRAMMER
WHERE PROGRAMMER.n°représentation = REPRESENTATION.n°représentation AND PROGRAMMER. date='14/06/96’ ;
Exercice 2:
ETUDIANT (N°Etudiant, Nom, Prénom)
MATIERE (CodeMat, LibelléMat, CoeffMat)
EVALUER (N°Etudiant#, CodeMat#, Date_Evaluation, Note)
Questions :
Créer les requêtes SQL suivantes :
1. Quel est le nombre total d’étudiants ?
2. Quelle est, parmi l’ensemble des notes, la note la plus haute et la note la plus basse ?
Les requêtes SQL
1 - Quel est le nombre total d'étudiants ?
SELECT COUNT(*) FROM ETUDIANT ;
2 - Quelles sont, parmi l'ensemble des notes, la note la plus haute et la note la
plus basse ?
SELECT MIN(Note), MAX(Note) FROM EVALUER ;
Touriste Chambre
NumCN Réserve
NumCh
Nom
NumCN NbrLits
Adresse NumH
NumCh
Téléphone
DateDeb
DateFin
1. Les touristes venus de la wilaya de Mila ?
2. Les touristes venus Batniens ou Sétifiens ?
3. Les touristes ayant passé leur séjour à l’hôtel "El Hotel
Mouradi" ? NumH Station
NomH
4. D’où viennent ces touristes ?
Catégorie
NumSt
Région
5. Les touristes ayant visité l’hôtel "El Mouradi" NbrCham
Altitude
durant le mois de décembre 2010 ? NumSt
6. Quelles sont les chambres réservées de l’hôtel
"Pyramide" ?
7. Quelles sont les chambres non encore réservées
de cet hôtel?
8. Quelle est la station la plus visitée ?
1- select *
From touriste
where adresse=‘Mila’;
2- select *
From touriste
where adresse=‘Batna’ or adresse=‘Sétif’ ;
3- SELECT touriste.*
FROM touriste, chambre, reserver
WHERE [Link]=[Link]
and [Link]=[Link]
and [Link]=(select numh from hotel where nomh='El Mouradi’);
****
SELECT touriste.*
FROM touriste, chambre, reserver,hotel
WHERE [Link]=[Link]
and [Link]=[Link]
and [Link]=[Link] from hotel and [Link]='El Mouradi';
5-SELECT touriste.*
FROM touriste, chambre, reserver, hotel
WHERE [Link]=[Link]
and [Link]=[Link] and [Link]=[Link] and NomH='El Mouradi'
and [Link] between ‘01/12/2010’ and ‘31/12/2010’;
6-SELECT distinct chambre.*
from chambre ,reserver,hotel
where [Link]=[Link] and [Link]='Pyramide' and [Link] in(select numch from reserver );
7-SELECT distinct chambre.*
from chambre ,reserver,hotel
where [Link]=[Link] and [Link]='Pyramide' and [Link] not in(select numch from reserver );
EXEMPLE INSERT,UPDATE,DELETE
Employes 1- ajouter les données suivantes:
• Employé n°1 ,ismail, 25ans ,6000,00
Id • Employé n°2, Mohamed, 30, 8000.40
Nom • employé n° 3, Fatima, 29, 6000
Age
salaire
Id Nom Age Salaire
INSERT INTO Employes (Id, Nom, Age, Salaire)
VALUES(1, "Ismail", 25, 6000); 1 Ismail 25 6000
INSERT INTO Employes (Id, Nom, Age, Salaire)
VALUES(2, ‘Mohamed’, 30, 8000,4); 2 Mohamed 30 8000,4
INSERT INTO Employes (Id, Nom, Age, Salaire) 3 Fatima 29 6000
VALUES(3, ‘Fatima’, 29, 6000);
UPDATE
Employes
Id
Nom
Age
salaire
1. mettre à jour le salaire d'un employé en ajoutant 900 Da à son ancien salaire.
2. mettre à jour le salaire de chaque employé en ajoutant 500 Da dont l'âge est supérieur ou égal à 30 ans.
1- UPDATE Employes
SET Salaire=Salaire+900;
2- UPDATE Employes
SET Salaire=Salaire+500
WHERE age>=30;
Table initiale
UPDATE Employes
SET Salaire=Salaire+900;
UPDATE Employes
SET Salaire=Salaire+500
WHERE age>=30;
DELETE
1- supprimer tous les enregistrements de la table
Employes
Employes DELETE FROM Employes;
Id
Nom
Age 2- supprimer tous les Employés ayant salaire égal à
salaire 6900.00
DELETE FROM Employes
Where salaire=6900;
3- supprime l’employé n° 4.
DELETE FROM Employes
Where id=4;
Exercice: Etudiant Matiere
Num Code
Nom Note nomM
Prenom coef
Date_naiss Num
Section Code
noteE
Ecrire les commandes SQL permettant de rechercher :
[Link] liste de tous les étudiants.
[Link] et coefficient des matières.
[Link] liste des étudiants dont le nom commence par ‘ben’. Le nombre des étudiants qui ont comme matière
‘12518’.
[Link] somme des coefficients des matières.
[Link] noms des étudiants qui une note_examen >10.
[Link] les noms et les coefficients des matières étudier par l’étudiant "01234568".
Nom et coefficient des matières.
La liste de tous les étudiants.
select * from Etudiant; select nomM, coef from Matiere;
La liste des étudiants dont le nom commence par ‘ben’. Afficher les noms et les coefficients des matières étudier par
select * from Etudiant where Nom like ‘ben%’; l’étudiant "01234568".
Le nombre des étudiants qui ont comme matière ‘12518’. select [Link] ,[Link]
from Matiere,note
select count(*) from note where code=12518;
Where matiè[Link]=[Link] and [Link]= ‘01234568’;
La somme des coefficients des matières.
select sum (coef) from Matiere;
Les noms des étudiants qui une note_examen >10.
select [Link] ,[Link]
from etudiant, note
where [Link]=[Link] and noteE>10