Découvrez mon pense-bête, pour écrire des requêtes SQL efficaces pour interroger et manipuler vos bases de données, avec des exemples pratiques et des explications détaillées sur la syntaxe et les bonnes pratiques SQL.
Exemple de Requête SQL avec Jointures Multiples.
// Relation entre deux tables
select *
from States
inner join facts
on states.country == facts.id;
Autre exemple avec une liaison entre plusieurs tables, dans cet exemple le résultat est renvoyé dans des colonnes qui sont nommées avec la commande (as plus nom de colonne). Le résultat est également trié avec la commande order by.
SELECT
u.id AS utilisateur_id,
u.prenom AS utilisateur_prenom,x
u.nom AS utilisateur_nom,
c.date_achat AS commande_date,
p.nom AS produit_nom,
p.prix AS produit_prix
FROM
utilisateur u
INNER JOIN
commande c ON u.id = c.utilisateur_id
INNER JOIN
produit p ON c.produit_id = p.id
ORDER BY
u.id, c.date_achat;
Ajout d’une condition where, seules les lignes qui correspondent à la condition sont retournées. Dans l’exemple ci-dessous, on filtre les commandes par date, seules les commandes supérieures au 24/03/2024 sont retournées.
SELECT
u.id AS utilisateur_id,
u.prenom AS utilisateur_prenom,x
u.nom AS utilisateur_nom,
c.date_achat AS commande_date,
p.nom AS produit_nom,
p.prix AS produit_prix
FROM
utilisateur u
INNER JOIN
commande c ON u.id = c.utilisateur_id
INNER JOIN
produit p ON c.produit_id = p.id
WHERE
c.date_achat > '2024-03-24'
ORDER BY
u.id, c.date_achat;
Trier par date achat croissant (ajouter ASC à la colonne que l’on souhaite trier dans instruction « order by »)
SELECT
u.id AS utilisateur_id,
u.prenom AS utilisateur_prenom,x
u.nom AS utilisateur_nom,
c.date_achat AS commande_date,
p.nom AS produit_nom,
p.prix AS produit_prix
FROM
utilisateur u
INNER JOIN
commande c ON u.id = c.utilisateur_id
INNER JOIN
produit p ON c.produit_id = p.id
WHERE
c.date_achat > '2024-03-24'
ORDER BY
c.date_achat ASC;
Trier par date achat décroissant (ajouter DESC à la colonne que l’on souhaite trier dans instruction « order by »)
SELECT
u.id AS utilisateur_id,
u.prenom AS utilisateur_prenom,x
u.nom AS utilisateur_nom,
c.date_achat AS commande_date,
p.nom AS produit_nom,
p.prix AS produit_prix
FROM
utilisateur u
INNER JOIN
commande c ON u.id = c.utilisateur_id
INNER JOIN
produit p ON c.produit_id = p.id
WHERE
c.date_achat > '2024-03-24'
ORDER BY
c.date_achat DESC;
Grouper des résultats avec l’instruction GROUP BY
L’instruction GROUP BY
en SQL est utilisée pour regrouper les lignes d’une table en fonction d’une ou plusieurs colonnes et appliquer des fonctions d’agrégation sur chaque groupe. Voici quelques exemples concrets de requêtes utilisant GROUP BY
basés sur les informations des sources fournies.
SELECT a.City, COUNT(bea.AddressID) AS EmployeeCount
FROM Person.BusinessEntityAddress AS bea
INNER JOIN Person.Address AS a ON bea.AddressID = a.AddressID
GROUP BY a.City
ORDER BY a.City;
Requête qui compte toute les lignes.
SELECT
COUNT(*)
FROM table;
ou compte les lignes de la colonne « nom_colonne »
SELECT
COUNT(nom_colonne)
FROM table;
Compter des lignes avec une condition
Dans l’exemple suivant Cette requête retournera le nombre de lignes où la condition salaire > 2000
est remplie
SELECT COUNT(*) AS total
FROM employees
WHERE salaire > 2000;
COUNT(DISTINCT)
- Fonctionnement : La fonction
COUNT(DISTINCT column_name)
compte le nombre de valeurs distinctes et non NULL dans une colonne spécifique. Elle élimine les doublons et les valeurs NULL avant de faire le comptage. - Utilisation : Cette fonction est utilisée lorsque vous avez besoin de connaître le nombre de valeurs uniques dans une colonne, en excluant les doublons et les valeurs NULL.
SELECT COUNT(DISTINCT column_name)
FROM table_name;
SUM (additionner des colonnes numériques)
SELECT SUM(nom_colonne)
FROM table;
SELECT SUM(prix) AS prix_total FROM facture;
Dans l’exemple ci-dessus on additionne la colonne prix de la table facture.
On peut réaliser des opérations avec une condition where
SELECT SUM(prix) AS prix_total
FROM facture
WHERE facture_id = 1;
On additionne les lignes des factures, uniquement pour celle qui ont la colonne facture_id = 1
AVG (permet de la moyenne d’une colonne)
SELECT AVG(nom_colonne) AS moyenne
FROM nom_table;
SELECT AVG(Note1) AS moyenne_eleve
FROM ELEVE_CLASSE
UPDATE & SET (Requête de mise à jour)
La commande SQL UPDATE
est utilisée pour modifier les données existantes dans une table. Voici quelques exemples de requêtes de mise à jour (UPDATE
) en SQL, en utilisant différentes conditions et contextes.
UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;
UPDATE client
SET contact= '0759253532'
WHERE nom = 'michel';
Mise à jour du numéro pour le nom michel
DELETE (Suppression de lignes)
La commande DELETE est utilisée pour supprimer des lignes spécifiques d’une table de base de données. Elle permet de maintenir la qualité et la fiabilité des données en supprimant les enregistrements obsolètes, erronés ou inutiles.
DELETE FROM `nom_de_table`
WHERE condition;
DELETE FROM `clients`
WHERE `id` > 2;
Supprime tout les lignes de la table client dont id > 2