22 chapitres5 h 47 minDébutant
SQL
Cours SQL gratuit pour le BTS SIO en 22 chapitres, sur MySQL 8.4 : requêtes, jointures, GROUP BY, vues, droits, sécurité et 87 exercices corrigés.
Par Josselyn C., prof de BTS SIO. Mis à jour le .
L'essentiel
SQL est le langage qui sert à créer une base de données relationnelle, à y ranger des données et à les retrouver. Tu t'en sers dès qu'une application stocke quelque chose : des comptes, des commandes, l'inventaire d'un parc informatique, des tickets d'assistance. Au BTS SIO, il tombe à l'écrit E7 de l'option SLAM (requêtes, vues, droits, triggers), il sert pendant l'heure de réalisation de l'E6 et il apparaît dans presque toutes les réalisations de ton portfolio.
À la fin de ce cours, tu sauras :
- lire un schéma relationnel et trouver le chemin des jointures ;
- créer une base avec ses contraintes, la remplir et la faire évoluer ;
- écrire des requêtes de lecture, des plus simples aux plus avancées (jointures externes, sous-requêtes corrélées, CTE, fonctions de fenêtrage) ;
- protéger les données : transactions, comptes et droits, requêtes préparées, chiffrement, sauvegardes ;
- traiter une question d'examen avec une méthode qui évite les pièges classiques.
Prérequis. Aucun pour les chapitres 1 à 10. Pour la suite, savoir lire un MCD aide (cours Merise) et les chapitres 15 et 18 supposent quelques bases en PHP ou en JavaScript.
Le SGBD du cours. Les requêtes sont écrites pour MySQL 8.4, la version LTS de référence (MySQL 8.0 n'est plus maintenu depuis avril 2026). Elles fonctionnent aussi sur MariaDB, sauf quand un encadré signale une différence. Quand PostgreSQL ou SQL Server font autrement, un encadré le dit aussi.
Comment travailler. Installe MySQL ou MariaDB (chapitre 1), exécute le script de la base fil rouge (chapitre 2), puis tape chaque requête toi-même avant de lire le résultat. Les résultats affichés sont ceux que tu dois obtenir. Chaque chapitre se termine par des exercices dont la réponse est masquée : cherche d'abord, ouvre ensuite.
| Ton objectif | Chapitres à travailler en priorité |
|---|---|
| Découvrir SQL | 1 à 9 |
| Préparer l'E7 SLAM | 5 à 11, 13 à 16, 20 et 21 |
| Préparer la réalisation de l'E6 SLAM | 3, 4, 8, 11, 18 et 21 |
| Option SISR (GLPI, supervision, sauvegardes) | 1, 2, 5, 8, 14 et 17 |
| Réviser la veille de l'épreuve | 20 et 22 |
Sommaire
SQL
0 chapitre sur 22
- Chapitre 1 : C'est quoi SQL et une base relationnelle ?12 min
- Chapitre 2 : La base d'exemple : schéma et script23 min
- Chapitre 3 : CREATE TABLE, clés et contraintes (LDD)23 min
- Chapitre 4 : INSERT, UPDATE et DELETE (LMD)16 min
- Chapitre 5 : La requête SELECT : WHERE, LIKE, ORDER BY16 min
- Chapitre 6 : Fonctions SQL : dates, chaînes et CASE16 min
- Chapitre 7 : COUNT, GROUP BY et HAVING17 min
- Chapitre 8 : Jointures SQL : INNER JOIN et LEFT JOIN23 min
- Chapitre 9 : Sous-requêtes SQL : IN, EXISTS, NOT EXISTS16 min
- Chapitre 10 : UNION, CTE et fonctions de fenêtrage20 min
- Chapitre 11 : Vues SQL : CREATE VIEW12 min
- Chapitre 12 : Index SQL et EXPLAIN13 min
- Chapitre 13 : Transactions SQL : COMMIT et ROLLBACK17 min
- Chapitre 14 : Comptes, rôles et droits : GRANT (LCD)13 min
- Chapitre 15 : Injection SQL et protection des données21 min
- Chapitre 16 : Procédures stockées et triggers (aperçu)13 min
- Chapitre 17 : Sauvegarder une base : mysqldump12 min
- Chapitre 18 : SQL dans une application (PDO, ORM)12 min
- Chapitre 19 : SQL ou NoSQL ?9 min
- Chapitre 20 : Méthode pour l'examen (E7 et E6)10 min
- Chapitre 21 : Exercices SQL corrigés type examen31 min
- Chapitre 22 : Aide-mémoire : les commandes SQL7 min
Questions fréquentes
C'est quoi SQL et à quoi ça sert ?
SQL (Structured Query Language) est le langage qui sert à créer une base de données relationnelle, à y ranger des données et à les retrouver. Tu t'en sers dès qu'une application stocke des comptes, des commandes ou l'inventaire d'un parc informatique. Normalisé par l'ISO depuis 1987, il regroupe plusieurs familles d'instructions : définir la structure (CREATE, ALTER), manipuler les lignes (INSERT, UPDATE, DELETE), interroger (SELECT) et gérer les droits (GRANT, REVOKE).
Quelle est la différence entre SQL et MySQL ?
SQL est un langage ; MySQL est un SGBD, c'est-à-dire le logiciel serveur qui stocke les données et exécute les requêtes SQL. MariaDB, PostgreSQL, SQL Server, Oracle et SQLite parlent tous SQL, chacun avec ses extensions : les bases restent les mêmes, mais les fonctions de dates ou l'auto-incrément changent. Ce cours utilise MySQL 8.4 et signale les différences avec MariaDB, PostgreSQL et SQL Server.
Quelle est la différence entre WHERE et HAVING ?
WHERE filtre les lignes avant le regroupement ; HAVING filtre les groupes après le calcul des agrégats. Une condition sur COUNT, SUM ou AVG va donc dans HAVING : écrite dans le WHERE, elle provoque l'erreur 1111 de MySQL. Une condition sur une colonne ordinaire va dans WHERE, où elle élimine les lignes plus tôt.
Quelle est la différence entre INNER JOIN et LEFT JOIN ?
INNER JOIN ne garde que les lignes qui ont une correspondance dans les deux tables. LEFT JOIN garde toutes les lignes de la table de gauche et met NULL dans les colonnes de droite quand rien ne correspond. Choisis LEFT JOIN quand l'énoncé dit « tous », « y compris » ou « même ceux qui n'ont pas », et compte alors avec COUNT(colonne_de_droite), pas COUNT(*) (exemples de jointures externes).
Comment faire une jointure sur trois tables ?
Suis le chemin des clés étrangères dans le schéma et écris un JOIN … ON par lien, y compris pour les tables intermédiaires dont tu n'affiches aucune colonne. Pour savoir qui utilise un logiciel, le chemin logiciel → installation → poste → employe donne trois jointures, chacune avec sa condition. Une condition oubliée produit un produit cartésien : un résultat énorme et faux.
C'est quoi une vue en SQL ?
Une vue est une requête SELECT enregistrée dans la base sous un nom, avec CREATE VIEW. Tu l'interroges comme une table, mais elle ne stocke aucune donnée : le SGBD exécute sa requête à chaque appel, sur les données du moment. Elle sert à simplifier les requêtes répétées et à restreindre l'accès, deux usages fréquents dans les sujets d'E7 SLAM.
Comment se protéger d'une injection SQL ?
L'injection vient d'une seule erreur : construire une requête en y collant une saisie de l'utilisateur. La parade est la requête préparée (avec PDO en PHP, en désactivant l'émulation par PDO::ATTR_EMULATE_PREPARES => false) : le serveur analyse la requête avant de recevoir les valeurs, qui ne peuvent donc jamais devenir du code SQL. Échapper les apostrophes à la main ne suffit pas, et un compte applicatif aux droits minimaux limite les dégâts si une faille subsiste.
Quel SQL tombe à l'examen du BTS SIO ?
En SLAM, l'écrit E7 « Cybersécurité des services informatiques » (4 h) demande des requêtes de consultation et d'agrégat, des vues, des comptes et des GRANT, des triggers à lire ou à corriger et des requêtes préparées. À l'E6, tu fais évoluer ta propre base pendant l'heure de réalisation. Jusqu'à la session 2024, l'écrit s'appelait E6 (U6) : les sujets 2022 à 2024 restent de bons entraînements (où le SQL tombe).