Accueil

Parcours débutant · lecture libre sans compte

Découvre SQL

SQL (Structured Query Language) est le langage standard pour lire et manipuler des données dans une base relationnelle (PostgreSQL, MySQL, SQLite, SQL Server…). Ce parcours reprend la progression classique — SELECT, filtres, agrégats, jointures — avec des exemples concrets.

Structure inspirée du tutoriel SQL de 1Keydata (ressource externe gratuite, en anglais).

1. Qu'est-ce que SQL ?

SQL est un langage déclaratif : tu décris quelles données tu veux, et le moteur (PostgreSQL, etc.) décide comment les récupérer. On l'utilise pour :

Chaque SGBD a des variantes (PostgreSQL ≠ MySQL sur certains détails), mais SELECT, WHERE, JOIN, GROUP BY couvrent l'essentiel du travail quotidien — data analyst, dev backend ou entretien technique.

2. Tables et clés

Une table = lignes (enregistrements) × colonnes (champs typés). Exemple métier :

-- Table clients
| id | nom    | pays |
|----|--------|------|
| 1  | Alice  | FR   |
| 2  | Bob    | US   |

-- Table commandes
| id | client_id | montant |
|----|-----------|---------|
| 10 | 1         | 120     |
| 11 | 1         | 45      |
| 12 | 2         | 200     |

3. SELECT — lire des données

Syntaxe de base (comme sur 1Keydata — SELECT) :

-- Toutes les colonnes
SELECT * FROM clients;

-- Colonnes choisies
SELECT nom, pays FROM clients;

-- Alias de colonne (AS)
SELECT nom AS client, pays AS code_pays FROM clients;

DISTINCT élimine les doublons : SELECT DISTINCT pays FROM clients;

4. WHERE — filtrer

WHERE garde uniquement les lignes qui respectent une condition :

SELECT nom, pays FROM clients WHERE pays = 'FR';

SELECT * FROM commandes WHERE montant >= 100;

SELECT * FROM clients
WHERE pays IN ('FR', 'BE', 'CH')
  AND nom LIKE 'A%';   -- commence par A

SELECT email FROM users WHERE email IS NOT NULL;

Opérateurs utiles : =, <>, AND, OR, IN, BETWEEN, LIKE, IS NULL.

5. ORDER BY — trier

SELECT nom, montant FROM commandes
ORDER BY montant DESC;   -- du plus grand au plus petit

SELECT nom FROM clients
ORDER BY pays ASC, nom ASC;

SELECT * FROM clients LIMIT 10;   -- PostgreSQL / MySQL

6. Agrégats et GROUP BY

Fonctions sur un ensemble de lignes :

-- Total des commandes par client
SELECT client_id, SUM(montant) AS total
FROM commandes
GROUP BY client_id;

-- Clients avec plus d'une commande
SELECT client_id, COUNT(*) AS nb
FROM commandes
GROUP BY client_id
HAVING COUNT(*) > 1;

WHERE filtre les lignes avant agrégation ; HAVING filtre les groupes après GROUP BY.

7. JOIN — plusieurs tables

Lier deux tables sur une clé commune :

-- INNER JOIN : seulement les lignes qui matchent
SELECT c.nom, o.montant
FROM clients c
INNER JOIN commandes o ON c.id = o.client_id;

-- LEFT JOIN : tous les clients, même sans commande
SELECT c.nom, COALESCE(SUM(o.montant), 0) AS total
FROM clients c
LEFT JOIN commandes o ON c.id = o.client_id
GROUP BY c.id, c.nom;

Évite le produit cartésien (JOIN sans condition ON) — source classique de bugs et de performances catastrophiques.

8. INSERT, UPDATE, DELETE

INSERT INTO clients (nom, pays) VALUES ('Clara', 'FR');

UPDATE clients SET pays = 'DE' WHERE id = 2;

DELETE FROM commandes WHERE montant = 0;

En production : toujours un WHERE explicite sur UPDATE/DELETE, transactions (BEGIN … COMMIT), et jamais de concaténation de strings utilisateur dans la requête (→ injection SQL ; utiliser des requêtes préparées).

9. CREATE TABLE (aperçu)

Le DDL (Data Definition Language) crée la structure :

CREATE TABLE clients (
  id         SERIAL PRIMARY KEY,
  nom        VARCHAR(100) NOT NULL,
  pays       CHAR(2) NOT NULL DEFAULT 'FR',
  email      VARCHAR(255) UNIQUE,
  created_at TIMESTAMPTZ DEFAULT NOW()
);

CREATE INDEX idx_clients_pays ON clients (pays);

Voir aussi la normalisation (1NF, 2NF, 3NF) sur 1Keydata pour limiter la redondance.

10. Aller plus loin

Ordre recommandé pour pratiquer :

  1. Refaire les exemples sur SQLite ou PostgreSQL local (DB Browser, psql, Supabase SQL Editor).
  2. Passer le parcours payant SQL & bases de données (modèle relationnel approfondi, JOIN, intégrité, exercices).
  3. Réviser en QCM via Révision accélérée — Data ou Full-stack.

Ressources externes : commandes SQL (1Keydata), quiz 25 questions.