0% ont trouvé ce document utile (0 vote)
36 vues25 pages

Part6 BD

Transféré par

K0autarr Bet
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
36 vues25 pages

Part6 BD

Transféré par

K0autarr Bet
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Partie 6

Module 1

Les jointures
Overview des tables
of HTML and CSS
Dans cette partie vous allez apprendre

• Introduction
• La jointure INNER JOIN
• La jointure LEFT OUTER JOIN
• La jointure RIGHT OUTER JOIN
• La jointure CROSS JOIN
• L'auto-jointure
• Les sous-requêtes
Introduction

• Les types de jointures


• La clause JOIN est utilisée en SQL pour récupérer les données
à partir de 2 ou plusieurs tables.
• En général les tables sont reliées par des clés étrangères avec
la contrainte FOREIGN KEY.
• Il existe 4 types de jointure à l'aide de la clause JOIN :
• (INNER) JOIN : La jointure interne.
• LEFT (OUTER) JOIN : La jointure externe gauche.
• RIGHT (OUTER) JOIN : La jointure externe droite.
• CROSS JOIN : Produit cartésien.
La jointure INNER JOIN

• INNER JOIN
• La jointure (INNER) JOIN : la jointure interne retourne les
enregistrements en communs dans les deux tables gauche et
droite.
• La syntaxe de INNER JOIN est :
SELECT column_name(s)
FROM table1
INNER JOIN table2
ON table1.column_name = table2.column_name;
La jointure INNER JOIN

• INNER JOIN
• Exemple 1 : afficher les informations du client pour chaque
commande.
SELECT Orders.OrderID, Orders.CustomerID,
customers.CustomerName
FROM Orders
INNER JOIN customers
ON Orders.CustomerID = customers.CustomerID;
La jointure INNER JOIN

• INNER JOIN
• Exemple 2 : afficher les informations du client et aussi les
informations de l'expéditeur pour chaque commande.
SELEC O.OrderID, C.CustomerName, S.ShipperName
FROM Orders AS O
INNER JOIN customers AS C ON O.CustomerID = C.CustomerID
INNER JOIN Shippers AS S ON O.ShipperID = S.ShipperID;
La jointure INNER JOIN

• INNER JOIN
• Exemple 3 : afficher ID, Name, Gender, Salary et
DepartmentName des deux tables Employee et Department .
SELECT * FROM Employee;
SELECT * FROM Department;

SELECT Employee.ID, Name, Gender, Salary, DepartmentName


FROM Employee
INNER JOIN Department
ON DepartmentID = Department.ID
ORDER BY Employee.ID;
La jointure LEFT OUTER JOIN

• LEFT JOIN
• La jointure LEFT (OUTER) JOIN : la jointure externe gauche
retourne tous les enregistrements de la table de gauche
(table1) et les enregistrements en communs de la table de
droite (table2). Le résultat est NULL du côté droit, s'il n'y a pas
de correspondance.
• La syntaxe de LEFT JOIN est :
SELECT column_name(s) FROM table1
LEFT JOIN table2
ON table1.column_name = table2.column_name;
La jointure LEFT OUTER JOIN

• LEFT JOIN
• Exemple :
SELECT * FROM Employee;
SELECT * FROM Department;

SELECT Employee.ID, Name, Gender, Salary, DepartmentName


FROM Employee
LEFT JOIN Department
ON DepartmentID = Department.ID
ORDER BY Employee.ID;
La jointure RIGHT OUTER JOIN

• RIGHT JOIN
• La jointure RIGHT (OUTER) JOIN : la jointure externe droite
retourne tous les enregistrements de la table de droite
(table2) et les enregistrements en communs de la table de
gauche (table1). Le résultat est NULL du côté gauche, s'il n'y a
pas de correspondance.
• La syntaxe de RIGHT JOIN est :
SELECT column_name(s) FROM table1
RIGHT JOIN table2
ON table1.column_name = table2.column_name;
La jointure RIGHT OUTER JOIN

• RIGHT JOIN
• Exemple :
SELECT * FROM Employee;
SELECT * FROM Department;

SELECT Employee.ID, Name, Gender, Salary, DepartmentName


FROM Employee
RIGHT JOIN Department
ON DepartmentID = Department.ID
ORDER BY Employee.ID;
La jointure CROSS JOIN

• CROSS JOIN
• La jointure CROSS JOIN : cette jointure correspond au
produit cartésien des deux tables : c’est-à-dire si vous avez 10
lignes dans la table1 et 4 lignes dans la table2, la jointure avec
CROSS JOIN donne 40 lignes comme résultat.
• La syntaxe de CROSS JOIN est :
SELECT column_name(s)
FROM table1
CROSS JOIN table2;

• Remarque : la syntaxe de CROSS JOIN ne comporte pas la


clause ON.
La jointure CROSS JOIN

• CROSS JOIN
• Exemple :
SELECT * FROM Employee;
SELECT * FROM Department;

SELECT Employee.ID, Name, Gender, Salary, DepartmentName


FROM Employee
CROSS JOIN Department;
L'auto-jointure

• L'auto-jointure
• Une auto-jointure consiste à joindre une table à elle-même.
• La syntaxe de l'auto-jointure est :
SELECT column_name(s)
FROM table1 AS T1, table1 AS T2
WHERE condition;

• Remarque : T1 et T2 sont des alias différents pour la même


table.
L'auto-jointure

• L'auto-jointure
• Exemple : afficher les clients qui habitent le même pays.
SELECT T1.CustomerID AS ID_1, T1.CustomerName AS Name_1,
T2.CustomerID AS ID_2, T2.CustomerName AS Name_2,
T1.Country AS Country
FROM Customers T1, Customers T2
WHERE T1.Country = T2.Country
AND T1.CustomerID < T2.CustomerID;
L'auto-jointure

• L'auto-jointure
• Exemple : afficher l'employé et son chef.
SELECT * FROM Employee;

SELECT E.Name AS Employee, M.Name AS Manager


FROM Employee AS E
LEFT JOIN Employee AS M
ON E.ManagerID = M.EmployeeID;
Les sous-requêtes

• Utilité
• Une sous-requête est une instruction SELECT imbriquée dans
une instruction SELECT, INSERT, UPDATE ou DELETE, ou à
l'intérieur d'une autre sous-requête.
• Les sous-requêtes vous permettent de décomposer une
requête complexe en une série d'étapes logiques et, par
conséquent, de résoudre un problème à l'aide d'une seule
instruction.
• Vous devez mettre les sous-requêtes entre parenthèses.
Les sous-requêtes

• Utiliser une sous-requête en tant que table dérivée


• Vous pouvez créer une table dérivée en utilisant une sous-
requête à la place d'une table dans une clause une FROM.
• Exemple :
USE w3schools;
SELECT P.ProductName, P.Unit, P.Price
FROM (SELECT ProductName, Unit, Price FROM Products) AS P;
Les sous-requêtes

• Utiliser une sous-requête en tant qu'expression


• Vous pouvez remplacer une expression par une sous-requête
qui doit faire référence à une valeur scalaire ou à une liste de
valeurs contenue dans une seule colonne.
• Exemple :
SELECT ProductName, Unit, Price,
(SELECT AVG(Price) FROM Products) AS Average,
Price - (SELECT AVG(Price) FROM Products) AS Difference
FROM Products;
Les sous-requêtes

• Utiliser une sous-requête pour corréler des données


• Une sous-requête corrélée (liaison) est effectivement une
clause JOIN entre la sous-requête interne et la ligne de la
requête externe.
• L'exemple suivant utilise l'opérateur IN pour afficher les
produits vendus plus de 80 fois :
SELECT ProductID, ProductName
FROM Products
WHERE ProductID IN (SELECT ProductID FROM Order_details
WHERE Quantity > 80);
Les sous-requêtes

• Utiliser une sous-requête pour corréler des données


• L'exemple suivant utilise l'opérateur NOT IN pour afficher les
produits qui ne sont jamais vendus :
INSERT INTO Products (ProductID, ProductName)
VALUES (2022, 'TEST');
SELECT ProductID, ProductName
FROM Products
WHERE ProductID IN (SELECT ProductID FROM Order_details);
Les sous-requêtes

• L'opérateur EXISTS et NOT EXISTS


• L'opérateur EXISTS teste l'existence des enregistrements il
retourne à true si la sous requête contient des données.
• Voici La syntaxe de EXISTS :
SELECT column_name(s)
FROM table_name
WHERE EXISTS
(SELECT column_name FROM table_name WHERE condition);

• Voici La syntaxe de NOT EXISTS :


SELECT column_name(s)
FROM table_name
WHERE EXISTS
(SELECT column_name FROM tab
Les sous-requêtes

• L'opérateur EXISTS et NOT EXISTS


• Exemple 1 : afficher les produits vendus.
SELECT ProductID, ProductName
FROM Products
WHERE EXISTS
(SELECT * FROM Order_details
WHERE Products.ProductID = Order_details.ProductID);
• Exemple 2 : afficher les produits non vendus.
SELECT ProductID, ProductName
FROM Products
WHERE NOT EXISTS
(SELECT * FROM Order_details
WHERE Products.ProductID = Order_details.ProductID);
Les sous-requêtes

• L'opérateur ANY et ALL


• Les opérateurs ANY ou ALL sont utilisés avec la clause WHERE
ou HAVING
• L'opérateur ANY retourne à true si l'une des valeurs de sous-
requête remplit la condition.
• L'opérateur ALL retourne à true si toutes les valeurs de sous-
requête remplit la condition.
• Voici La syntaxe de ANY OU ALL :
SELECT column_name(s)
FROM table_name
WHERE column_name operator ANY|ALL
(SELECT column_name
FROM table_name
WHERE condition);
Les sous-requêtes

• L'opérateur ANY et ALL


• Exemple 1 : Utilisation de ANY.
SELECT ProductID, ProductName
FROM Products
WHERE ProductID = ANY
(SELECT ProductID
FROM Order_details
WHERE Quantity = 80);
• Exemple 2 : Utilisation de ALL.
SELECT ProductID, ProductName
FROM Products
WHERE ProductID = ALL
(SELECT ProductID
FROM Order_details
WHERE Quantity = 80);

Vous aimerez peut-être aussi