Catégorie : Base de données [TUTORIELS]

Vous souhaitez utiliser le langage SQL, par exemple avec MySQL ? La manipulation d’une base de données n’est pas forcément complexe (son administration, c’est autre chose), je me suis fait un petit guide de base des principales commandes, peut-être que cela pourra être utile pour d’autres.

Les bases de données sont le fondement invisible de notre monde numérique moderne. Elles jouent un rôle essentiel dans la gestion de l’information, le stockage des données, et l’accès aux informations cruciales pour les entreprises, les applications, les sites web, et bien plus encore. Cette section est spécialement conçue pour vous guider dans la compréhension des bases de données, depuis les concepts fondamentaux jusqu’aux compétences avancées.

SELECT : Extraire des données
LIMIT : sélectionner un nombre limité de lignes
WHERE : sélectionner des lignes selon des conditions
BETWEEN … AND : sélectionner dans une plage de valeur
IN : sélectionner parmi des données prédéfinies
LIKE : rechercher du texte / ou une partie avec SQL
ORDER BY : Trier les données
GROUP BY : Regrouper les données
HAVING : sélectionner des données après un regroupement
JOINTURES : regrouper les lignes de plusieurs tables
SOUS REQUETES : créer une requête dans une requête
UNION : combiner les résultats de deux requêtes SQL
INSERT : Insérer des données dans la base de données MySQL
UPDATE : Mettre à jour des données dans MySQL
DELETE : Supprimer des données dans MySQL

Ci-dessous, vous trouverez un guide de base concernant le langage SQL avec les principales commandes que l’on va retrouver, mais avant cela, il faudra mettre en place votre base de données, je vous propose trois vidéos sur ma chaîne YouTube qui vous présentent comment procéder.

SELECT : Extraire des données

-- Sélectionner toutes les colonnes de tous les enregistrements
SELECT * FROM clients;

-- Sélectionner uniquement les colonnes nom, prenom, et email de tous les enregistrements
SELECT nom, prenom, email FROM clients;


LIMIT : sélectionner un nombre limité de lignes

L’utilisation de la clause LIMIT dans une requête SELECT permet de limiter le nombre d’enregistrements retournés par la requête. C’est particulièrement utile lorsque vous travaillez avec de grandes bases de données et que vous souhaitez obtenir un sous-ensemble de résultats pour, par exemple, implémenter une pagination ou simplement réduire la charge sur le serveur en ne récupérant qu’une partie des données.

-- Sélectionner les 2 premiers enregistrements
SELECT * FROM clients LIMIT 2;


WHERE : sélectionner des lignes selon des conditions

La clause WHERE en SQL est utilisée pour filtrer les enregistrements selon une condition spécifique. Lorsqu’elle est combinée avec LIMIT, vous pouvez non seulement filtrer les enregistrements mais aussi limiter le nombre d’enregistrements retournés après le filtrage. Cela est particulièrement utile pour récupérer un petit nombre d’enregistrements qui répondent à une condition spécifique.

-- Sélectionner tous les enregistrements où le nom est 'Dupont'
SELECT * FROM clients WHERE nom = 'Dupont';


BETWEEN … AND : sélectionner dans une plage de valeur

La clause BETWEEN … AND en SQL est utilisée pour filtrer les enregistrements selon une plage de valeurs. Elle est utile pour spécifier une condition où une colonne doit avoir une valeur entre deux valeurs inclusives. Cette clause peut être utilisée pour des types de données numériques, des dates, et même des chaînes de caractères, en fonction du contexte.

-- Exemple avec des Nombres: Sélectionner les clients ayant un ID entre 10 et 20
SELECT * FROM clients WHERE client_id BETWEEN 10 AND 20;

-- Exemple avec des Dates: Sélectionner les clients inscrits entre le 1er janvier 2023 et le 31 mars 2023
SELECT * FROM clients WHERE date_inscription BETWEEN '2023-01-01' AND '2023-03-31';

-- Exemple avec des Caractères: Sélectionner les clients dont le nom commence par une lettre entre 'A' et 'D'
SELECT * FROM clients WHERE nom BETWEEN 'A' AND 'Dzzzz';


IN : sélectionner parmi des données prédéfinies

La clause IN en SQL est utilisée pour spécifier un ensemble de valeurs dans une clause WHERE, permettant de sélectionner les lignes qui ont une des valeurs spécifiées. Cela est particulièrement utile pour filtrer les données selon plusieurs valeurs pour une même colonne sans avoir besoin d’écrire de multiples conditions OR.

-- Exemple avec des Nombres: Sélectionner les clients ayant un ID de 1, 2, 5 ou 7
SELECT * FROM clients WHERE client_id IN  (1, 2, 5, 7);

-- Exemple avec des Dates: Sélectionner les clients inscrits le 1er janvier 2023, le 15 mars 2023, ou le 30 avril 2023
SELECT * FROM clients WHERE date_inscription IN ('2023-01-01', '2023-03-15', '2023-04-30');

-- Exemple avec des Caractères: Sélectionner les clients dont le nom est "Dupont", "Durand" ou "Martin"
SELECT * FROM clients WHERE nom IN  ('Dupont', 'Durand', 'Martin');


LIKE : rechercher du texte / ou une partie avec SQL

La clause LIKE en SQL est utilisée pour filtrer les enregistrements en fonction de motifs de correspondance. Elle est particulièrement utile pour rechercher des chaînes de caractères qui correspondent à un modèle spécifié, où % représente zéro ou plusieurs caractères et _ représente un seul caractère.

-- Sélectionner les clients dont le nom commence par "Du"
SELECT * FROM clients WHERE nom LIKE 'Du%';

-- Sélectionner les clients dont le prénom commence par "Ma" et contient exactement 5 lettres
SELECT * FROM clients WHERE prenom LIKE 'Ma___';

-- Sélectionner les clients dont l'email contient "email.com"
SELECT * FROM clients WHERE email LIKE '%email.com%';


ORDER BY : Trier les données

La clause ORDER BY en SQL est utilisée pour trier les résultats d’une requête selon une ou plusieurs colonnes, soit en ordre ascendant (ASC) par défaut, soit en ordre descendant (DESC).

-- Trier les clients par nom de famille dans l'ordre ascendant
SELECT * FROM clients ORDER BY nom ASC;

-- Trier les clients par date d'inscription dans l'ordre descendant
SELECT * FROM clients ORDER BY  date_inscription DESC;

-- Trier les clients d'abord par nom de famille dans l'ordre ascendant, puis par prénom dans l'ordre ascendant
SELECT * FROM clients ORDER BY  nom ASC, prenom ASC;

-- Trier les clients par nom de famille dans l'ordre descendant, puis par date d'inscription dans l'ordre ascendant
SELECT * FROM clients ORDER BY  nom DESC, date_inscription ASC;

-- Trier les clients par identifiant de client (client_id) dans l'ordre descendant
SELECT * FROM clients ORDER BY client_id DESC;


GROUP BY : Regrouper les données

La clause GROUP BY en SQL est utilisée pour regrouper les lignes qui ont les mêmes valeurs dans des colonnes spécifiées en un résumé de lignes, souvent avec des fonctions d’agrégation (COUNT, MAX, MIN, SUM, AVG, etc.).

-- Regrouper les clients par nom de famille et compter le nombre de clients par nom
SELECT nom, COUNT(*) AS nombre_de_clients_par_nom FROM clients GROUP BY nom;

-- Regrouper les clients par mois d'inscription et compter le nombre de clients inscrits par mois
SELECT YEAR(date_inscription) AS annee, MONTH(date_inscription) AS mois, COUNT(*) AS nombre_de_clients_par_mois FROM clients GROUP BY YEAR(date_inscription), MONTH(date_inscription);

-- Regrouper les clients par première lettre du prénom et compter le nombre de clients par lettre
SELECT LEFT(prenom, 1) AS premiere_lettre_prenom, COUNT(*) AS nombre_de_clients_par_lettre FROM clients GROUP BY LEFT(prenom, 1);


HAVING : sélectionner des données après un regroupement

La clause HAVING en SQL est utilisée en combinaison avec GROUP BY pour filtrer les groupes de résultats selon une condition spécifique, généralement en utilisant des fonctions d’agrégation. Alors que WHERE filtre les lignes avant le regroupement, HAVING filtre les groupes après le regroupement.

-- Filtrer les groupes de clients par nom ayant plus d'un client
SELECT nom, COUNT(*) AS nombre_de_clients_par_nom 
FROM clients 
GROUP BY nom 
HAVING COUNT(*) > 1;

-- Filtrer les groupes de clients par mois d'inscription ayant au moins 5 inscriptions
SELECT YEAR(date_inscription) AS annee, MONTH(date_inscription) AS  mois, COUNT(*) AS nombre_de_clients_par_mois 
FROM  clients 
GROUP BY YEAR (date_inscription), MONTH(date_inscription) 
HAVING  COUNT(*) >= 5;

-- Filtrer les groupes de clients par première lettre du prénom ayant plus de 10 clients
SELECT LEFT (prenom, 1) AS premiere_lettre_prenom, COUNT(*) AS  nombre_de_clients_par_lettre 
FROM  clients 
GROUP BY LEFT (prenom, 1) 
HAVING COUNT(*) > 10;


JOINTURES : regrouper les lignes de plusieurs tables

L es jointures en SQL sont utilisées pour combiner les lignes de deux ou plusieurs tables, basées sur une colonne liée entre elles. Voici des exemples illustrant différents types de jointures (INNER JOIN, LEFT JOIN, RIGHT JOIN).

Supposons que nous ayons deux tables, clients et commandes, où chaque client peut avoir zéro ou plusieurs commandes. La table clients contient les informations des clients, et la table commandes contient les informations des commandes passées par les clients.

-- INNER JOIN

-- Sélectionner tous les clients et leurs commandes correspondantes
SELECT clients.nom, clients.prenom, commandes.details
FROM clients
INNER JOIN commandes ON clients.client_id = commandes.client_id;

-- LEFT JOIN

-- Sélectionner tous les clients et leurs commandes, y compris ceux sans commandes
SELECT clients.nom, clients.prenom, commandes.details
FROM clients
LEFT JOIN commandes ON clients.client_id = commandes.client_id;

-- RIGHT JOIN

-- Sélectionner toutes les commandes et les informations des clients correspondants, y compris les commandes sans client identifié
SELECT clients.nom, clients.prenom, commandes.details
FROM clients
RIGHT JOIN commandes ON clients.client_id = commandes.client_id;


SOUS REQUETES : créer une requête dans une requête

Les sous-requêtes en SQL permettent d’effectuer une requête à l’intérieur d’une autre requête. Elles offrent ainsi plus de flexibilité pour créer des requêtes complexes et pour filtrer, comparer ou évaluer des données sur plusieurs niveaux.

-- Sélectionner les clients ayant passé au moins une commande
SELECT nom, prenom FROM clients
WHERE client_id IN (
    SELECT client_id FROM commandes
);

-- Sélectionner le nom et le prénom des clients ainsi que le total de leurs commandes
SELECT c.nom, c.prenom, (
    SELECT COUNT(*) FROM commandes WHERE client_id = c.client_id
) AS nombre_de_commandes
FROM clients c;

-- Sélectionner les clients qui ont dépensé plus que la moyenne des dépenses de tous les clients
SELECT nom, prenom FROM clients
WHERE client_id IN (
    SELECT client_id FROM commandes
    GROUP BY client_id
    HAVING SUM(montant) > (
        SELECT AVG(total) FROM (
            SELECT SUM(montant) AS total FROM commandes GROUP BY client_id
        ) AS moyennes
    )
);

-- Sélectionner les clients et le montant total de leurs commandes, pour ceux ayant passé des commandes uniquement en 2023
SELECT c.nom, c.prenom, (
   SELECT SUM(montant) FROM commandes WHERE client_id = c.client_id AND YEAR(date_commande) = 2023
) AS total_depenses
FROM clients c
WHERE EXISTS (
    SELECT 1 FROM commandes WHERE client_id = c.client_id AND YEAR(date_commande) = 2023
);


UNION : combiner les résultats de deux requêtes SQL

La commande UNION en SQL est utilisée pour combiner les résultats de deux ou plusieurs requêtes SELECT en un seul ensemble de résultats, en éliminant les doublons. Toutes les requêtes combinées avec UNION doivent avoir le même nombre de colonnes dans les résultats, avec des types de données compatibles.

-- Sélectionner tous les noms uniques des clients et des employés
(SELECT nom FROM clients)
UNION
(SELECT nom FROM employes);

-- Sélectionner tous les noms et prénoms des clients et des employés, en les distinguant par un label
(SELECT  'Client' AS Type, nom, prenom FROM clients)
UNION
(SELECT  'Employé' AS Type, nom, prenom FROM employes);

-- Combiner les villes des clients et des fournisseurs sans doublons
(SELECT ville FROM clients)
UNION
(SELECT ville FROM fournisseurs);

-- Sélectionner les adresses email des clients et des employés, en s'assurant qu'il n'y a pas de doublons
(SELECT email FROM clients WHERE email IS NOT NULL)
UNION
(SELECT email FROM employes WHERE email IS NOT NULL);


INSERT : Insérer des données dans la base de données MySQL

La commande INSERT en SQL est utilisée pour ajouter une ou plusieurs nouvelles lignes à une table dans une base de données. Voici comment différentes utilisations de INSERT peuvent être illustrées dans une unique démonstration, en gardant à l’esprit que ces commandes seraient normalement exécutées séparément selon le besoin spécifique d’ajout de données.

-- Insérer une nouvelle ligne dans la table des clients
INSERT INTO clients (nom, prenom, email, ville)
VALUES ('Dupont', 'Jean', 'jean.dupont@email.com', 'Paris');

-- Insérer plusieurs nouvelles lignes dans la table des clients en une seule commande
INSERT INTO clients (nom, prenom, email, ville)
VALUES 
('Durand', 'Marie', 'marie.durand@email.com', 'Lyon'),
('Leroy', 'Marc', 'marc.leroy@email.com', 'Marseille');

-- Insérer une nouvelle ligne dans la table des commandes en utilisant des valeurs spécifiques pour les colonnes
INSERT INTO commandes (client_id, details, montant, date_commande)
VALUES (1, 'Commande de livres', 150, '2024-02-01');

-- Insérer une nouvelle ligne avec une sélection de valeurs à partir d'une autre table
INSERT INTO log_activites (utilisateur_id, action, date_heure)
SELECT client_id, 'Inscription', NOW()
FROM clients
WHERE nom = 'Dupont' AND prenom = 'Jean';

UPDATE : Mettre à jour des données dans MySQL

La commande UPDATE en SQL est utilisée pour modifier les données existantes dans une ou plusieurs lignes d’une table. Elle permet de mettre à jour les valeurs dans une table basée sur des conditions spécifiques.

-- Mettre à jour l'adresse email d'un client spécifique
UPDATE clients
SET email = 'jean.dupontnouveau@email.com'
WHERE nom = 'Dupont' AND prenom = 'Jean';

-- Augmenter le montant de toutes les commandes de 10%
UPDATE commandes
SET montant = montant * 1.10;

-- Mettre à jour la ville d'un client et marquer son compte comme vérifié
UPDATE clients
SET ville = 'Nice', est_verifie = TRUE
WHERE client_id = 1;

-- Mettre à jour les informations de plusieurs clients en une seule commande en utilisant des conditions complexes
UPDATE clients
SET email = CASE
    WHEN nom = 'Durand' THEN 'marie.durandnouveau@email.com'
    WHEN nom = 'Leroy' THEN 'marc.leroyupdate@email.com'
    ELSE email
END
WHERE nom IN ('Durand', 'Leroy');

DELETE : Supprimer des données dans MySQL

La commande DELETE en SQL est utilisée pour supprimer une ou plusieurs lignes d’une table selon des conditions spécifiées.

-- Supprimer un client spécifique par son identifiant
DELETE FROM clients
WHERE client_id = 1;

-- Supprimer tous les clients de la ville de 'Lyon'
DELETE FROM clients
WHERE ville = 'Lyon';

-- Supprimer les commandes qui ont plus d'un an
DELETE FROM commandes
WHERE date_commande < DATE_SUB(NOW(), INTERVAL 1 YEAR);

-- Supprimer tous les clients qui n'ont pas passé de commande
DELETE FROM clients
WHERE client_id NOT IN (
    SELECT DISTINCT client_id FROM commandes
);

Liste des derniers articles / TUTORIELS publiés

Requête SELECT – Faire des requêtes de sélection dans MySQL

Requête SELECT – Faire des requêtes de sélection dans MySQL

Vous souhaitez utiliser la requête SELECT dans une base de données MySQL ? Nous allons voir les nombreuses possibilités que vous allez avoir avec cette dernière. Cette requête permet de manipuler des données dans une table. Les manipulations de ces dernières sont une...

Importer des données MySQL dans Excel

Importer des données MySQL dans Excel

Cet article va vous présenter comment importer des données MySQL dans Excel. Il s’agit d’une fonction très intéressante qui vous permettra de récupérer des tables dans vos bases de données pour les manipuler dans Excel. Dans la démonstration ci-dessous, nous verrons...

Se connecter à une base de données MySQL en PHP

Se connecter à une base de données MySQL en PHP

Vous souhaitez vous connecter à une base de données MySQL en PHP ? Dans cet article vous trouverez le code pour réaliser cette étape. La connexion à sa base de données est une étape courante qui permet de récupérer des informations dans cette dernière par le...

Requêtes pour faire des calculs avec le langage MySQL

Requêtes pour faire des calculs avec le langage MySQL

Vous souhaitez faire des calculs avec le langage MySQL ? Dans cet article vous trouverez les principaux calculs et les différentes façons de les réaliser. Savoir manipuler les bases de données et réaliser des opérations dans ces dernières est très utiles pour les...

Jointure SQL : Créer une requête de jointure

Jointure SQL : Créer une requête de jointure

Vous souhaitez faire une requête de jointure SQL ? Dans cet article vous trouverez la méthode pour mettre en place cette dernière. Pour cela, nous allons utiliser l’interface de phpMyAdmin, qui est très simple d’utilisation. En effet, avec la console MySQL vous serez...

Requête MySQL pour exporter dans un fichier

Requête MySQL pour exporter dans un fichier

Vous voulez exporter les résultats d’une requête MySQL dans un fichier ? Dans cet article nous allons voir la méthode que vous devez utiliser. Cette dernière est très simple et très rapide également. Il est souvent très utile d’exporter une requête dans un fichier....

Importer un fichier csv dans MySQL en ligne de commande

Importer un fichier csv dans MySQL en ligne de commande

PPour ceux qui utilisent phpMyAdmin, on sait qu'il est souvent très long d'importer un fichier CSV dans MySQL par ce biais. Même si phpMyAdmin est une application géniale pour gérer ses bases de données ont peu bien lui reprocher cette lenteur d'importation des...

DBeaver – Gestion de bases de données

DBeaver – Gestion de bases de données

DBeaver est un logiciel permettant de gérer plusieurs bases de données différentes sur une seule et même application, et donc de manipuler des données de différentes sources très rapidement. Il s'agit d'un système ressemblant à phpMyAdmin, mais DBeaver n'est pas un...

Cours langage SQL – langage SQL initiation

Cours langage SQL – langage SQL initiation

Petit rappel sur le fonctionnement du langage SQL permettant de manipuler des données à travers une base de données et des tables. La présentation sera en plusieurs étapes. 1. Le langage SQL 2. SQL - Commande SELECT. 3. SQL - Projection. 4. SQL - Restriction. 5. SQL -...

Pin It on Pinterest