Vous êtes sur la page 1sur 8

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) :


1) 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

1
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 :
1) Les employés avec un nom qui commence par A

Select * from employé where nom like 'A%'

2) Les employés avec un nom se compose de deux lettres et commence par A

Select * from employé where nom like 'A_'

3) 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

2
 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

2) 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*)

1- Afficher le nom et l’adresse de l’employé numéro 5.


Select nomEmp, adresse
From EMPLOYE
WHERE NumEmp = 5

2- Afficher le numéro du département où l’employé numéro 4 travaille.

3
Select NumDept
From EMPLOYE
Where NumEmp = 4

3- Afficher la ville du département où l’employé numéro 2 travaille.


Select ville
From EMPLOYE, DEPARTEMENT
Where NumEmp=2
AND EMPLOYE.NumD= DEPARTEMENT.NumD

4- Afficher les noms des employés et les noms de leurs départements où ils travaillent.
Select nomEmp, nomDept
From EMPLOYE, DEPARTEMENT
Where EMPLOYE.NumD= DEPARTEMENT.NumD

3) 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’

4
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


delete from Produit Where prix>200

• Supprimer tous les produits de la table.


delete from Produit

• Doubler le prix des produits qui commencent par L


update Produit
Set prix = prix*2
Where libéllé like ‘L%’

• Ajouter le produit ‘pc portable’ qui a le code ‘P008’ et coute 150


insert into Produit values ( ‘P008’, ‘pc portable’, 150)

• Diminuer le prix des produits qui se terminent par S de 5%.


Update Produit
Set prix= prix – prix *0.05
Where libéllé like ‘%S’

5
II. Langage de Description de Données (LDD) :
 Création de bases de données

create Database nom_de_la_base

Pour utiliser la base de données créée on écrit :


Use nom_de_la_base

1- Création de tables
Pour créer une table, on déclare les champs de la table puis on déclare les contraintes en
spécifiant sur quelle colonne porte chaque contrainte.

create table nom_table (col1 type, col2 type, …….,

[Constraint Nom_Contrainte ]

Primary Key (nom_col_Clé1, nom_col_Clé2...


Foreign key(nom_col_clé_étrangère) references Table_Origine
Check (condition)

Exemple :

create table EMP ( Enum int,


Enom varchar (20),
dateEmb dateTime ,
prof varchar (20),
sal float,
Dnum int ,
constraint pk1 primary key ( Enum),
constraint fk1foreign key (Dnum) references DEPT( Dnum)
)

Remarque :
• Il est possible de ne pas attribuer des noms à certaines contraintes en éliminant le mot clé Constraint mais à
ce moment-là il ne sera pas possible d'éliminer cette contrainte par code
SQL de la table

• La contrainte Check permet le contrôle de :


- La validité par rapport à des constantes ou des listes de constantes

Create table DEPT ( ……………………………..,


Constraint pk1 primary key …………..,
Constraint ck1 check ville in ( ‘casa’ , ‘rabat’)

6
- La cohérence entre deux colonnes de la table

Exemple : constraint CK Check (date fin >=datedebut)

 Pour créer une colonne numéro auto incrémentable, on utilise IDENTITY, et le type
de colonne doit être dans ce cas de type numérique : int, bigint, smallint, tinyint,
decimal ou numeric

Exemple :
Enum int IDENTITY (1,1)

Dans ce cas, le champ Enum va démarrer avec la valeur 1 et sera incrémenté de 1 à chaque
instruction INSERT

Conseil pratique : Pour créer les tables d'une base de données, on commence toujours par
créer les tables ne contenant pas de clés étrangères puis on passe à la création des tables où
les clés primaires de ces tables ont glissé comme clé étrangère car il n'est pas possible de créer
un lien avec des tables qui n'existent pas.

2- Modification de tables

Alter Table Nom_Table

Add Nom_col Type_col

Add Constraint Nom_Contrainte Check(condition)


Primary Key (nom_col_Clé1, Nom_col_Clé2...)
Foreign key(Attribut_clé_étrangère) references
Table_Origine

Alter column nomcolonne_A_Changer nouveau type [null ou not null]

Drop Column Nom_Colonne

Drop Constraint Nom_Contrainte

3- Suppression de tables

Drop table Nom_Table

Remarque :

Dans des bases de données relationnelles, on aura généralement besoin d’appliquer des
contraintes en cascades c’est-à-dire : accepter la modification et réaliser un certain nombre

7
d’opérations en parallèle sur l’ensemble des tables concernées soit en supprimant des lignes,
soit en les modifiant.

Pour spécifier des contraintes de type cascade la syntaxe serait :

... Constraint Nom_Contrainte Foreign key ...References Table_Origine


[ ON DELETE CASCADE ]
[ ON UPDATE CASCADE ]

Vous aimerez peut-être aussi