Spé. NSI · Terminale · cours rédigé et vérifié par Claryo, conforme au Bulletin officiel
SQL (Structured Query Language) est le langage standard d'interrogation et de manipulation des bases de données relationnelles. Au programme, on distingue les requêtes de lecture (SELECT) et les requêtes de modification (INSERT, UPDATE, DELETE).
La requête de lecture suit la structure SELECT colonnes FROM table WHERE condition;. La clause SELECT réalise la projection (choix des colonnes), FROM désigne la (ou les) table(s) source(s), et WHERE la sélection (filtrage des lignes selon une condition). On trie le résultat avec ORDER BY colonne ASC/DESC. Attention : en SQL, les chaînes de caractères s'écrivent entre apostrophes simples ('texte') et l'égalité s'écrit avec un seul =.
Les requêtes de modification : INSERT INTO ajoute un n-uplet (INSERT INTO Commande (id, client, montant) VALUES (50, 'Diallo', 120.5);), UPDATE ... SET ... WHERE modifie des lignes existantes, et DELETE FROM ... WHERE en supprime. Le WHERE est crucial : sans lui, UPDATE et DELETE agissent sur toutes les lignes de la table.
Pour exploiter plusieurs tables, on utilise une jointure : FROM A JOIN B ON A.cle_etrangere = B.cle_primaire. La jointure croise les informations en reliant une clé étrangère à la clé primaire référencée. Enfin, les fonctions d'agrégation (COUNT, SUM, AVG, MIN, MAX) combinées à GROUP BY permettent de calculer des statistiques par groupe (nombre d'emprunts par livre, prix moyen par catégorie...).
· Lecture : SELECT col FROM table WHERE cond ORDER BY col DESC;
· Insertion : INSERT INTO table (cols) VALUES (vals);
· Mise à jour : UPDATE table SET col = val WHERE cond;
· Suppression : DELETE FROM table WHERE cond;
· Jointure : SELECT ... FROM A JOIN B ON A.fk = B.pk;
· Agrégation : SELECT col, COUNT(*) FROM table GROUP BY col;
1) Identifier les tables concernées et, s'il y en a plusieurs, la jointure (clé étrangère = clé primaire). 2) Choisir les colonnes (SELECT). 3) Écrire la condition (WHERE) en pensant aux apostrophes pour le texte. 4) Ajouter ORDER BY si on demande un tri, GROUP BY + agrégat si on demande un comptage/total. 5) Terminer par un point-virgule.
· Oublier le WHERE dans un UPDATE ou DELETE modifie/supprime toute la table.
· Chaîne de caractères : apostrophes simples ('Hugo'), jamais de guillemets pour une valeur.
· Égalité avec un seul = (pas ==) en SQL.
· Avec GROUP BY, le SELECT ne peut afficher que des colonnes du GROUP BY ou des fonctions d'agrégation.
· JOIN sans clause ON correcte produit un produit cartésien (résultat faux).
C'est un attendu central, à l'écrit comme à l'oral. Maîtriser SELECT ... FROM ... WHERE ... ORDER BY, savoir écrire INSERT, UPDATE, DELETE avec le bon WHERE, réaliser une jointure de deux tables sur leurs clés, et utiliser COUNT/GROUP BY. Toujours préfixer les colonnes par leur table en cas de jointure (Eleve.nom).