Uploaded by Reda Mouffok

Zendaoui Chapitre 03 Langage SQL 220606 223800

advertisement
Cours Bases de Données І
Groupe IGE 02
Chapitre 3: Le Langage SQL
Zendaoui Fairouz
2021-2022
Chapitre 3: Le Langage SQL
Introduction
Structured Query Language
 Un langage d'accès normalisé aux bases de données.
 Langage simple s’appuyant sur le schéma relationnel pour
énoncer des requêtes.
 Il est basé sur le langage algébrique.
 Il requiert un système de gestion des bases de données
responsable de la stratégie d'exécution.
 Il manipule des tables par l'intermédiaire de requêtes qui
produisent également des tables.
 Supporté par la plupart des produits commerciaux et open
source.
Chapitre 3: Le Langage SQL
Langage de Définition des Données
Data Definition Language ou DDL
 La partie de SQL qui permet de créer, modifier ou
supprimer des bases de données, des tables, des
index, des contraintes, … etc.
 Elle traite de la création des schémas de bases de
données.
Chapitre 3: Le Langage SQL
Langage de Manipulation des Données
Data Manipulation Language ou DML
 La partie de SQL qui traite les données (ajout,
suppression, modification, extraction) dans les
tables.
Chapitre 3: Le Langage SQL
Langage de Manipulation des Données
SELECT

La commande SELECT permet d’interroger la base de
données.
Recherche de base
Recherche avec jointure
Recherche avec tri du résultat
Groupement de lignes
Les requêtes imbriqués
Chapitre 3: Le Langage SQL
Langage de Manipulation des Données
SELECT
Notations

Tout ce qui est entre crochets est facultatifs […].

La barre verticale | représente un choix ‘ou’.

Les trois points … représentent une suite d’éléments.
Chapitre 3: Le Langage SQL
Langage de Manipulation des Données
SELECT: Recherche de base

La recherche de base permet d’effectuer des opérations de
projections et de restriction et la combinaison des deux.
SELECT champ1, champ2, …, champN FROM nom_table
SELECT champ1, champ2, …, champN
FROM nom_table
[WHERE condition]
Chapitre 3: Le Langage SQL
Langage de Manipulation des Données
SELECT: Recherche de base

La recherche de base permet d’effectuer des opérations de
projections et de restriction et la combinaison des deux.
SELECT [ALL|DISTINCT] champ1 [AS new_name1],
champ2,
…, champN FROM nom_table [AS Alias]
[WHERE condition]
Chapitre 3: Le Langage SQL
Langage de Manipulation des Données
SELECT: Recherche de base
SELECT [ALL|DISTINCT] champ1 AS new_name, champ2
FROM nom_table [AS Alias]
[WHERE condition]





L’opérateur AS est utilisé pour renommer une table ou un champ.
Pour sélectionner toutes les colonnes à la fois on utilise le caractère
astérisque *.
Pour
différentier
les
colonnes
des
tables
on
utilise
nom_table.nom_colonne.
ALL est utilisé par défaut.
DISTINCT est utilisé pour éliminer les doublons.
Chapitre 3: Le Langage SQL
Langage de Manipulation des Données
SELECT: Recherche de base
Select * from Client;
Select Nom, Prénom from Client;
Select distinct Wilaya from Client;
Select all Wilaya from Client;
Chapitre 3: Le Langage SQL
Langage de Manipulation des Données
SELECT: Recherche de base

Au niveau de la condition WHERE, les conditions suivantes sont
possibles:
[NOT] condition de base
Condition between
Condition in
Condition like
Condition null
Condition and | condition OR
Chapitre 3: Le Langage SQL
Langage de Manipulation des Données
SELECT: Recherche de base

Condition de base:
Colonne = | <> | < | <= | > | >= Constante
Select * from Facture where DateFact='2022‐04‐06';
Select NoCde from Commande where DateCde ≥ '2022‐04‐06';
Select Quantité from LigneCommande Where NoCde=100 and RefPdt='P3';
Select NoCde as Num from Commande where NoClient=2500;
Chapitre 3: Le Langage SQL
Langage de Manipulation des Données
SELECT: Recherche de base

Condition Between:
L’opérateur between permet de tester l’appartenance à une plage
de valeurs.
Colonne BETWEEN X and Y
Select * from Facture where DateFact between '2022‐04‐06' and '2022‐05‐06';
Chapitre 3: Le Langage SQL
Langage de Manipulation des Données
SELECT: Recherche de base

Condition IN:
L’opérateur IN permet de tester l’appartenance à un ensemble de valeurs.
L’ensemble peut être spécifié explicitement comme il peut être le résultat
d’une autre requête imbriquée.
Colonne IN (v1, V2, …, Vn)
Select * from Client where Wilaya in ('16', '09', '25');
Chapitre 3: Le Langage SQL
Langage de Manipulation des Données
SELECT: Recherche de base

Condition LIKE:
L’opérateur LIKE permet de comparer des chaînes de caractères.
La chaîne peut contenir n’importe quel caractère plus deux caractères
spéciaux:
‘_’: remplace un caractère
‘%’: remplace plusieurs caractères
Colonne [NOT] LIKE (Chaîne)
Chapitre 3: Le Langage SQL
Langage de Manipulation des Données
SELECT: Recherche de base

Condition LIKE:
Select * from Client where Nom Like 'A%';
Select * from Client where Nom Not Like 'A%';
Select * from Client where Nom Like '%e';
Select * from Client where Nom Like 'A_A%';
Chapitre 3: Le Langage SQL
Langage de Manipulation des Données
SELECT: Recherche de base

Condition NULL:
L’opérateur NULL permet de vérifier si une colonne est nulle ou non.
Colonne IS [NOT] NULL
Select NoCde from Commande where DateCde is Null;
Select NoCde from Commande where DateCde is not Null;
Chapitre 3: Le Langage SQL
Langage de Manipulation des Données
SELECT: Recherche avec jointure

Il existe plusieurs manières d’exprimer des jointures entre
plusieurs tables avec SQL.

Les jointures vues dans l’algèbre relationnelle sont toutes
implémentées dans pratiquement tous les SGBD.
Chapitre 3: Le Langage SQL
Langage de Manipulation des Données
SELECT: Recherche avec jointure
Produit cartésien
•
Exprimé par une simple requête entre deux tables sans la clause
WHERE.
Select * from Client, Commande;
Chapitre 3: Le Langage SQL
Langage de Manipulation des Données
SELECT: Recherche avec jointure
Produit cartésien
•
Exprimé avec la clause CROSS IN
Select * from Client Cross Join Commande;
Chapitre 3: Le Langage SQL
Langage de Manipulation des Données
SELECT: Recherche avec jointure
Thêta jointure
•
Exprimée avec une requête simple avec une condition sur les
colonnes des deux tables dans la clause WHERE.
Select NoCde from Commande, Client
where Client.NoClient=Commande. NoClient and Wilaya='16';
Chapitre 3: Le Langage SQL
Langage de Manipulation des Données
SELECT: Recherche avec jointure
Thêta jointure
•
Exprimée en utilisant la clause INNER JOIN
Select NoCde from Commande Inner Join Client
on Client.NoClient=Commande.NoClient
where Wilaya='16';
Chapitre 3: Le Langage SQL
Langage de Manipulation des Données
SELECT: Recherche avec jointure
Thêta jointure
•
Exprimée en utilisant la clause INNER JOIN
•
On peut utiliser USING(liste de colonnes communes) à la place de ON
dans le cas d’une équijointure.
Select NoCde from Commande Inner Join Client
using (NoClient)
where Wilaya='16';
Chapitre 3: Le Langage SQL
Langage de Manipulation des Données
SELECT: Recherche avec jointure
Jointure naturelle
•
•
Peut être exprimée en utilisant la clause NATURAL JOIN
Peut aussi être exprimée avec un produit cartésien et une clause where
ou avec une thêta-jointure
Select NoCde from Commande Natural Join Client where Wilaya='16';
Select NoCde from Commande, Client
where Client.NoClient=Commande. NoClient and Wilaya='16';
Chapitre 3: Le Langage SQL
Langage de Manipulation des Données
SELECT: Recherche avec Tri du résultat
•
Pour trier le résultat d’une recherche on utilise la clause ORDER BY
juste après la clause WHERE.
•
DESC est spécifié dans le cas d’un tri décroissant. ASC est l’option
par défaut.
ORDER BY Colonne [DESC]
Select * from Client order by Nom;
Select * from Client order by Nom asc;
Select * from Client where Wilaya='16' order by Nom desc;
Chapitre 3: Le Langage SQL
Langage de Manipulation des Données
Le groupement de lignes
•
La clause GROUP BY permet d’effectuer des calculs sur des groupes
de lignes.
•
La clause HAVING permet d’exprimer des conditions sur le groupe
de lignes généré.
Chapitre 3: Le Langage SQL
Langage de Manipulation des Données
Le groupement de lignes
Select count(*) from Client;
Select Wilaya, count(NoClient) from Client Group by Wilaya;
Select Wilaya, count(NoClient) as NB from Client Group by Wilaya having
NB≥200000;
Chapitre 3: Le Langage SQL
Langage de Manipulation des Données
La clause LIMIT
• Elle est à utiliser dans une requête SQL pour spécifier le
nombre maximum de résultats que l’ont souhaite obtenir.
Select Wilaya, count(NoClient) as NB from Client
group by Wilaya
having NB≥200000
limit 100;
Chapitre 3: Le Langage SQL
Langage de Manipulation des Données
Les requêtes imbriquées
•
Une
sélection
imbriquée
est
un
bloc
de
qualification
SELECT/FROM/WHERE encapsulé à l’intérieur d’un autre bloc de
qualification.
Select Nom, Prénom from Client where age≥ (select avg(age) from Client);
Chapitre 3: Le Langage SQL
Langage de Manipulation des Données
Les requêtes imbriquées
•
Une
sélection
imbriquée
est
un
bloc
de
qualification
SELECT/FROM/WHERE encapsulé à l’intérieur d’un autre bloc de
qualification.
•
On peut utiliser l’opérateur IN.
Select * from Produit where RefPdt in (select RefPdt from LigneCommande
where Quantité≥500);
Chapitre 3: Le Langage SQL
Langage de Manipulation des Données
Les requêtes imbriquées
Condition ALL | ANY
•
Les opérateurs ANY et ALL sont utilisés avec une clause WHERE ou
HAVING.
•
L'opérateur ANY renvoie Vrai si l'une des valeurs de sous-requête
remplit la condition.
•
L'opérateur ALL renvoie Vrai si toutes les valeurs de sous-requête
remplissent la condition.
Chapitre 3: Le Langage SQL
Langage de Manipulation des Données
Les requêtes imbriquées
Condition ALL | ANY
Select Nom, Prénom from Client where age≥ all (select age from Client);
Select Nom, Prénom from Client where age> any (select age from Client);
Chapitre 3: Le Langage SQL
Langage de Manipulation des Données
Les requêtes imbriquées
Condition EXISTS
•
L’opérateur EXISTS est utilisé pour tester l’existence de tout tuple
dans une sous-requête.
•
Il revoie vrai quand l’évaluation de la sous requête n’est pas vide.
Select Nom, Prénom from Client
where exists (select Commande.NoClient from Commande where
Commande.NoClient=Client.NoClient);
Chapitre 3: Le Langage SQL
Langage de Manipulation des Données
Ordre de priorité
Download