Apprendre le SQL en ligne, dans un vrai client
Ces leçons se travaillent dans un client de base de données, avec une base de boutique d’exemple de 23 tables et environ 50 000 lignes. Les jointures et les GROUP BY portent ainsi sur des données assez riches pour être parlantes.
La plupart des exemples proposent Ouvrir dans Planche. L’application s’ouvre avec la base et la requête déjà prêtes. Rien à installer ni de compte à créer ; la base reste dans votre navigateur.
Parcours de base
- À quoi ressemble une base de données Tables, lignes, colonnes, NULL, clés primaires, exécuter une requête
- Lire des lignes : SELECT, WHERE, ORDER BY, LIMIT SELECT, choix des colonnes, WHERE, ORDER BY, LIMIT, alias de colonnes
- Filtrer les lignes : WHERE en entier Priorité de AND / OR, IN, BETWEEN, LIKE, IS NULL
- Combiner des tables : JOIN INNER JOIN, jointures multi-tables, LEFT JOIN, ON contre WHERE, auto-jointures
- Résumer des lignes : GROUP BY COUNT, SUM, AVG, MIN, MAX, GROUP BY, HAVING, COUNT DISTINCT
- Des requêtes dans des requêtes : les sous-requêtes Sous-requêtes scalaires, IN, EXISTS, NOT EXISTS, tables dérivées, sous-requêtes corrélées
- Requêtes en étapes et calculs sur plusieurs lignes : CTE et fenêtrage WITH, CTE enchaînées, ROW_NUMBER, RANK, DENSE_RANK, SUM OVER, LAG
- Modifier les données : INSERT, UPDATE, DELETE INSERT, UPDATE, DELETE, conflits de clé primaire, BEGIN / COMMIT / ROLLBACK
- Pourquoi est-ce lent ? Index et EXPLAIN EXPLAIN QUERY PLAN, parcours de table, recherches par index, conditions compatibles avec les index
Par dialecte
- Pagination : LIMIT, OFFSET … FETCH, TOP, ROWNUM LIMIT / OFFSET, OFFSET … FETCH, TOP, ROWNUM, pagination par clé
- Upsert : insérer une ligne, ou mettre à jour celle qui existe ON CONFLICT DO UPDATE / DO NOTHING, ON DUPLICATE KEY UPDATE, MERGE, INSERT OR REPLACE
- Chaînes et dates, moteur par moteur Concaténation, formatage de dates, différences de dates, COALESCE / IFNULL / ISNULL / NVL
- UPDATE et DELETE à cheval sur deux tables Formes par sous-requête et EXISTS, UPDATE … JOIN, UPDATE … FROM, DELETE … USING, vues jointes modifiables