Chapitre II : Langage de requêtes SQL
SQL (Structured Querry Language) dans sa version 2 de 1992 est un langage structuré
regroupant un ensemble d'instructions permettant la création, la structuration et
l'interrogation des bases de données relationnelles.
SQL offre trois catégories de langages :
• Langage de Manipulation de Données (LMD) : Offre les instructions pour ajouter,
supprimer et modifier des lignes à savoir : SELECT, INSERT, UPDATE et DELETE.
• Langage de Description de Données (LDD) : Offre les instructions permettant la
création de la base de données : Base de données, Tables, Attributs, Clés primaires, Clés
étrangères, index... à savoir : CREATE, ALTER et DROP
• Langage de Contrôle de Données (LCD) : Offre les instructions permettant de définir
des permissions pour les utilisateurs pour gérer les droits d’accès, à savoir : GRANT,
REVOKE et DENY
I. Langage de Manipulation de Données (LMD) :
• Instruction SELECT :
L’affichage des données se fait à l'aide de l'instruction Select.
La syntaxe complète pour cette instruction est :
Select colonne1, colonne2,...
From table1, table2,...
Where Condition
Group By colonne_Regroupement1, Attribut_Regroupement2
Having Condition_Regroupeme
Order By Critère_Tri1 Asc| Desc, Critère_Tri2 Asc| Desc
Remarque : Pour éliminer les répétitions des lignes utilisez le mot
clé distinct
Select distinct prenom from employé
• clause where:
Pour exprimer une condition on utilise la clause WHERE.
Les conditions peuvent être exprimée à l'aide des opérateurs =, >, >= ,<, <=, Between, in,
like, is Null, exists, any, all, union, intersect, minus et peuvent être combinées à l'aide des
opérateurs logiques : and, or et not
• Between : Permet de tester l'appartenance de la valeur d'une colonne à un intervalle
Select *from Employé
Where salaireDeBase Between 5000 and 10000
Ce qui est équivalent à :
Where salaireDeBase >= 5000 and salaireDeBase <= 10000
• in : Teste si les valeurs d'une colonne appartiennent à un groupe de valeur. Le
groupe de valeurs pouvant s'exprimer à l'aide de valeurs constantes ou d'une
requête select
Select * from employé
Where grade in (‘cadre’, ’technicien’)
Ou
Select * from departement
Where localisation in (Select ville From employé)
• Like : Permet une comparaison entre une chaîne de caractères et les valeurs
d'une colonne. Elle utilise deux caractères spéciaux % et _
% : signifie plusieurs caractères
_ : signifie un seul caractère
Exemples :
• Les employés avec un nom qui commence par A
Select * from employé where nom like 'A%'
• Les employés avec un nom se compose de deux lettres et commence par A
Select * from employé where nom like 'A_'
• Les employés avec un nom se compose de trois lettres et commence par A
Select * from employé Where nom like 'A__'
• Any : Compare une colonne avec une liste de valeurs fournies par une sous
requête. Si une des valeurs de la liste rend la condition vraie alors la ligne est
sélectionnée
• All : compare une colonne avec une liste de valeurs fournies par une sous
requête. Si toutes les valeurs de la liste rendent la condition vraie alors la ligne
est sélectionnée
• Exists : Est évalué à vrai si la sous-requête qui le suit donne au moins une ligne en
retour
• Union : Permet de réaliser l'union entre deux ensembles( tables)
(Select...From...Where...)
Union
(Select...From...Where...)
• Intersect : Permet de réaliser l'intersection entre deux ensembles (tables)
• Minus : Permet de réaliser la différence entre deux ensembles (tables)
• clause Order by : permet d’exprimer des critères de tri
• clause Group by : Effectue des regroupements sur certains attributs. En général, il
est utilisé pour obtenir des statistiques et calculs en exploitant les fonctions
offertes par SQL : Sum (Somme), Min(Minimum), Max(Maximum),
Count(Nombre), Avg(Moyenne).
• Remarque : pour exprimer des conditions sur les éléments de regroupement après
group by on utilise : HAVING
• La jointure entre les tables :
La jointure consiste à associer des lignes de 2 tables en associant l’égalité des valeurs
d’une colonne d’une première table par rapport à la valeur d’une colonne d’une
deuxième table.
• Jointure interne :
La jointure interne est la fusion de 2 tables qui ont une colonne commune avec une
condition d’égalité de cette colonne.
Pour écrire une jointure interne entre deux tables Table1 et Table2 on utilise :
Select Table1. Colonne1, Table2.Colonne2
From Table1, Table2
WhereTable1.ColonneJointure1=Table2.ColonneJointure2
• Dans les nouvelles versions de SQL, la jointure s’écrit :
Select Table1. Colonne1, Table2.Colonne2
From Table1 inner join Table2
On Table1.ColonneJointure1=Table2.ColonneJointure2
Exemples :
Soient les 2 tables suivantes :
DEPARTEMENT (NumDept, nomDept, ville)
EMPLOYE (NumEmp, nomEmp, adresse, dateEmbauche, NumDept*)
• Afficher le nom et l’adresse de l’employé numéro 4.
• Afficher le numéro du département où l’employé numéro 4 travaille.
• Afficher la ville du département où l’employé numéro 4 travaille.
• Afficher les noms des employés et les noms de leurs départements où ils travaillent.
• Instructions de Mise à jour des données :
La mise à jour désigne les différentes opérations de suppression, de modification et d'insertion
des informations dans les tables.
a- Insertion d’une ligne :
La syntaxe utilisée est la suivante :
insert into Nom_Table (col1,col2, col3,….)
values (valeur1, valeur2, valeur3,…..)
On peut insérer des valeurs dans toutes les colonnes de la table en écrivant :
insert into Nom_table values (val1, val2, val3, ....)
Exemple :
insert into DEPT values (2, ‘informatique’, ‘casa’)
insert into DEPT ( Dnum, Dnom) values ( 1, ‘logistique’)
insert into EMP values ( 100, ‘eeee1’,’responsable achat’,’2000/02/15’,NULL ,2)
Un autre moyen d’insérer des lignes dans une table est d'utiliser une instruction select qui
prend des informations à partir d'autres tables pour les insérer dans une table voulue
Insert into Nom_table Select Col1, Col2,... From Nom_Table1, Nom_Table2...Where...
Exemple:
Insert into ANCIEN select * from EMP WHERE dateEmb< ‘1990/01/01’
b- Suppression de ligne :
Delete from Nom_Table [where Condition]
c- Modification de ligne:
Update Nom_Table
set colonne 1= new val, colonne2= new val, ……
[where Condition]
Exemples : Soit la table Produit (codep, libéllé, prix)
• Supprimer les produits ayant un prix qui dépasse 200
• Supprimer tous les produits de la table.
• Doubler le prix des produits qui commencent par L
• Ajouter le produit ‘pc portable’ qui a le code ‘P008’ et coute 150
• Diminuer le prix des produits qui se terminent par S de 5%.