GUIDE COMPLET
SQL
Structured Query Language
Le langage des bases de données relationnelles
Guide SQL — Langage des bases de données relationnelles
1. Qu'est-ce que SQL ?
SQL (Structured Query Language) est un langage informatique standardisé utilisé pour gérer
et manipuler les bases de données relationnelles. Créé dans les années 1970 par IBM, il est
aujourd'hui le langage universel pour interagir avec des systèmes comme MySQL, PostgreSQL,
SQLite, SQL Server ou Oracle.
📌 Analogie simple
Imaginez une base de données comme un classeur Excel géant. SQL est le langage qui vous
permet de demander : "Montre-moi toutes les factures de janvier supérieures à 500 €" — et
d'obtenir exactement ces données, triées et filtrées.
1.1 À quoi sert SQL ?
• Interroger des données : Poser des questions à la base de données (chercher, filtrer,
trier)
• Insérer des données : Ajouter de nouveaux enregistrements dans une table
• Modifier des données : Mettre à jour des valeurs existantes
• Supprimer des données : Effacer des enregistrements inutiles
• Créer des structures : Concevoir des tables, des index, des relations
2. Les concepts fondamentaux
2.1 La table
Une table est le cœur d'une base de données relationnelle. C'est un tableau organisé en
colonnes (champs) et en lignes (enregistrements).
Exemple — table CLIENTS :
id nom prenom email ville
1 Dupont Marie marie@[Link] Paris
2 Martin Jean jean@[Link] Lyon
3 Bernard Sophie sophie@[Link] Marseille
4 Leblanc Paul paul@[Link] Paris
Guide SQL — Langage des bases de données relationnelles
2.2 La clé primaire (PRIMARY KEY)
Chaque table possède généralement une clé primaire : un identifiant unique pour chaque ligne.
Dans l'exemple ci-dessus, le champ id est la clé primaire — deux clients ne peuvent jamais
avoir le même id.
3. Les commandes essentielles
3.1 SELECT — Lire des données
SELECT est la commande la plus utilisée. Elle permet d'interroger une table et d'afficher les
résultats.
Syntaxe de base
SELECT colonne1, colonne2
FROM nom_table
WHERE condition
ORDER BY colonne ASC/DESC;
Exemple 1 — Afficher tous les clients
SELECT * FROM clients;
Le symbole * signifie « toutes les colonnes ». Ce qui donne :
id nom prenom email ville
1 Dupont Marie marie@[Link] Paris
2 Martin Jean jean@[Link] Lyon
3 Bernard Sophie sophie@[Link] Marseille
4 Leblanc Paul paul@[Link] Paris
Exemple 2 — Filtrer avec WHERE
SELECT nom, prenom, ville
FROM clients
WHERE ville = 'Paris';
Résultat — seulement les clients parisiens :
nom prenom ville
Dupont Marie Paris
Leblanc Paul Paris
Guide SQL — Langage des bases de données relationnelles
Exemple 3 — Trier les résultats avec ORDER BY
SELECT nom, prenom
FROM clients
ORDER BY nom ASC;
Les clients sont retournés par ordre alphabétique du nom.
3.2 INSERT — Ajouter des données
INSERT INTO permet d'ajouter une nouvelle ligne dans une table.
INSERT INTO clients (nom, prenom, email, ville)
VALUES ('Durand', 'Alice', 'alice@[Link]', 'Bordeaux');
✅ Résultat
Un nouvel enregistrement est ajouté : id=5, Durand Alice, Bordeaux. L'id est souvent généré
automatiquement (AUTO_INCREMENT).
3.3 UPDATE — Modifier des données
UPDATE permet de modifier des valeurs existantes. Toujours utiliser WHERE pour cibler
uniquement les lignes souhaitées !
UPDATE clients
SET ville = 'Toulouse'
WHERE id = 2;
⚠️Attention !
Sans clause WHERE, TOUS les enregistrements seraient modifiés ! Toujours vérifier votre
condition avant d'exécuter un UPDATE.
3.4 DELETE — Supprimer des données
DELETE FROM supprime des lignes d'une table.
DELETE FROM clients
WHERE id = 3;
⚠️Attention !
Comme pour UPDATE, sans WHERE vous supprimeriez TOUTE la table ! Cette action est
irréversible.
Guide SQL — Langage des bases de données relationnelles
Guide SQL — Langage des bases de données relationnelles
4. Filtres et conditions avancées
4.1 Les opérateurs de comparaison
Opérateur Signification Exemple
= Égal à WHERE ville = 'Paris'
<> ou != Différent de WHERE ville <> 'Lyon'
> Supérieur à WHERE age > 30
< Inférieur à WHERE prix < 100
>= Supérieur ou égal WHERE stock >= 10
<= Inférieur ou égal WHERE note <= 5
4.2 LIKE — Recherche par motif
LIKE permet de chercher un motif dans du texte. Le symbole % remplace n'importe quelle suite
de caractères.
-- Clients dont le nom commence par 'Du'
SELECT * FROM clients WHERE nom LIKE 'Du%';
-- Clients dont l'email contient 'gmail'
SELECT * FROM clients WHERE email LIKE '%gmail%';
4.3 AND, OR, NOT — Combiner les conditions
-- Clients de Paris ET dont le prénom commence par 'M'
SELECT * FROM clients
WHERE ville = 'Paris' AND prenom LIKE 'M%';
-- Clients de Paris OU de Lyon
SELECT * FROM clients
WHERE ville = 'Paris' OR ville = 'Lyon';
4.4 IN — Liste de valeurs
IN est une alternative élégante à plusieurs conditions OR :
SELECT * FROM clients
WHERE ville IN ('Paris', 'Lyon', 'Marseille');
Guide SQL — Langage des bases de données relationnelles
4.5 BETWEEN — Intervalle de valeurs
-- Commandes entre deux dates
SELECT * FROM commandes
WHERE date_commande BETWEEN '2024-01-01' AND '2024-12-31';
5. Fonctions d'agrégation
Les fonctions d'agrégation effectuent des calculs sur un ensemble de lignes et retournent un
résultat unique.
Fonction Description Exemple
COUNT(*) Compte le nombre de lignes SELECT COUNT(*) FROM
clients
SUM(col) Calcule la somme SELECT SUM(montant) FROM
commandes
AVG(col) Calcule la moyenne SELECT AVG(note) FROM avis
MIN(col) Retourne le minimum SELECT MIN(prix) FROM
produits
MAX(col) Retourne le maximum SELECT MAX(prix) FROM
produits
5.1 Exemple complet avec agrégation
-- Nombre de clients par ville
SELECT ville, COUNT(*) AS nombre_clients
FROM clients
GROUP BY ville
ORDER BY nombre_clients DESC;
ville nombre_clients
Paris 2
Lyon 1
Marseille 1
5.2 HAVING — Filtrer après GROUP BY
HAVING fonctionne comme WHERE, mais s'applique après le regroupement :
-- Villes avec plus de 5 clients
SELECT ville, COUNT(*) AS nb
FROM clients
GROUP BY ville
Guide SQL — Langage des bases de données relationnelles
HAVING nb > 5;
Guide SQL — Langage des bases de données relationnelles
6. Les jointures (JOIN)
Les jointures permettent de combiner des données de plusieurs tables. C'est l'une des
fonctionnalités les plus puissantes de SQL.
6.1 INNER JOIN — Correspondance stricte
Retourne uniquement les lignes qui ont une correspondance dans les deux tables.
Tables utilisées dans les exemples :
commande_id client_id produit montant
101 1 Laptop 1200
102 2 Souris 25
103 1 Clavier 80
SELECT [Link], [Link], [Link], [Link]
FROM clients
INNER JOIN commandes ON [Link] = commandes.client_id;
nom prenom produit montant
Dupont Marie Laptop 1200
Martin Jean Souris 25
Dupont Marie Clavier 80
6.2 LEFT JOIN — Tout de la table gauche
Retourne toutes les lignes de la table de gauche, même si elles n'ont pas de correspondance à
droite.
SELECT [Link], [Link]
FROM clients
LEFT JOIN commandes ON [Link] = commandes.client_id;
💡 Cas d'usage
Utile pour trouver les clients qui n'ont jamais passé de commande : les colonnes de
'commandes' seront NULL pour ces clients.
Guide SQL — Langage des bases de données relationnelles
7. Créer et gérer des structures
7.1 CREATE TABLE — Créer une table
CREATE TABLE produits (
id INT PRIMARY KEY AUTO_INCREMENT,
nom VARCHAR(100) NOT NULL,
prix DECIMAL(10, 2) NOT NULL,
stock INT DEFAULT 0,
categorie VARCHAR(50),
date_ajout DATE
);
Type SQL Description Exemple
INT Nombre entier 42, -5, 1000
VARCHAR(n) Texte jusqu'à n caractères 'Bonjour'
DECIMAL(p,s) Nombre décimal 19.99
DATE Date (AAAA-MM-JJ) '2024-03-15'
BOOLEAN Vrai ou Faux TRUE / FALSE
TEXT Texte long Description longue
7.2 ALTER TABLE — Modifier une table
-- Ajouter une colonne
ALTER TABLE produits ADD COLUMN description TEXT;
-- Modifier le type d'une colonne
ALTER TABLE produits MODIFY COLUMN prix DECIMAL(12, 2);
-- Supprimer une colonne
ALTER TABLE produits DROP COLUMN date_ajout;
7.3 DROP TABLE — Supprimer une table
DROP TABLE IF EXISTS produits;
⚠️Attention !
DROP TABLE supprime définitivement la table ET toutes ses données. Cette opération est
irréversible.
Guide SQL — Langage des bases de données relationnelles
8. Récapitulatif des commandes SQL
Catégorie Commande Rôle
Lecture SELECT Interroger des données
Écriture INSERT INTO Ajouter des enregistrements
Écriture UPDATE ... SET Modifier des enregistrements
Écriture DELETE FROM Supprimer des enregistrements
Structure CREATE TABLE Créer une nouvelle table
Structure ALTER TABLE Modifier la structure d'une table
Structure DROP TABLE Supprimer une table
Filtre WHERE Condition de filtrage
Filtre LIKE Recherche par motif
Filtre BETWEEN Intervalle de valeurs
Filtre IN Liste de valeurs acceptées
Groupement GROUP BY Regrouper les résultats
Groupement HAVING Filtrer après regroupement
Tri ORDER BY Trier les résultats
Jointure INNER JOIN Correspondance dans les 2
tables
Jointure LEFT JOIN Tout de la table gauche
9. Bonnes pratiques
• Toujours tester vos requêtes UPDATE et DELETE avec un SELECT d'abord pour
vérifier les lignes concernées.
• Utiliser des alias (AS) pour rendre vos requêtes plus lisibles : SELECT COUNT(*) AS
total FROM clients.
• Indenter vos requêtes SQL pour faciliter la lecture et la maintenance.
• Nommer les tables et colonnes en minuscules avec des underscores : date_naissance,
non DateNaissance.
• Sauvegarder la base de données régulièrement avant des modifications importantes.
• Utiliser des transactions (BEGIN / COMMIT / ROLLBACK) pour les opérations critiques.
Guide SQL — Langage des bases de données relationnelles
Bonne pratique SQL !
La maîtrise de SQL s'acquiert par la pratique. Testez chaque commande sur une base
de données de test.
Guide SQL — Langage des bases de données relationnelles