NSI · Terminale
Bases de données : le langage SQL
Apprenez le langage SQL (Structured Query Language) pour créer, interroger, joindre, modifier et administrer des tables de données.
Le langage SQL
Introduction
Après avoir étudié la théorie du modèle relationnel, nous allons apprendre à interroger et manipuler ces bases de données à l'aide d'un langage standardisé : le SQL (*Structured Query Language*).
La plupart des SGBD du marché (Oracle, MySQL, Microsoft SQL Server, PostgreSQL, SQLite, MariaDB...) implémentent ce langage. Nous travaillerons principalement avec SQLite, une version légère de SGBD intégrable directement sans serveur (par exemple à l'aide de l'outil *DB Browser for SQLite*).
Création de table : CREATE TABLE
Pour créer une table en SQL, on utilise la commande CREATE TABLE.
Explications :
CREATE TABLE LIVREScrée une table nomméeLIVRES.- Chaque ligne définit un attribut avec son nom et son type (
INTpour entier,TEXTpour du texte). PRIMARY KEY (id)spécifie que l'attributidsert de clé primaire unique. Le SGBD empêchera l'insertion de lignes ayant le mêmeid.
Insertion de données : INSERT INTO
Pour ajouter des enregistrements dans une table, on utilise la clause INSERT INTO.
Requêtes d'interrogation : SELECT
La structure de base d'une requête d'interrogation en SQL est composée des clauses SELECT et FROM.
SELECTliste les colonnes à afficher.FROMindique la table source.
Pour afficher tous les attributs d'une table sans les nommer individuellement, on utilise le caractère joker * :
Filtrer les résultats : la clause WHERE
Pour sélectionner uniquement certaines lignes respectant un critère donné, on ajoute la clause WHERE suivie d'une condition logique.
Les opérateurs de comparaison classiques sont : =, !=, >, >=, <, <=.
On peut aussi filtrer sur une liste de valeurs à l'aide du mot-clé IN :
Combinaisons logiques : AND et OR
Recherche partielle : LIKE
Le mot-clé LIKE permet de rechercher des motifs textuels. Le caractère % sert de joker (remplace n'importe quelle suite de caractères).
*Cette requête renvoie les livres contenant le mot "nuit" dans leur titre.*
Trier les résultats : ORDER BY
Pour trier les données, on ajoute la clause ORDER BY suivie du nom de l'attribut de tri. Le tri est ascendant par défaut, mais on peut forcer un tri descendant à l'aide de DESC.
Éliminer les doublons : DISTINCT
Pour n'afficher qu'une seule fois chaque valeur présente dans une colonne, on insère la clause DISTINCT juste après le SELECT.
Les Jointures : INNER JOIN
Lorsque les données sont séparées sur plusieurs tables pour éviter la redondance, on utilise des jointures pour les recombiner.
Créons nos deux tables reliées par une clé étrangère :
Après avoir inséré les données correspondantes dans les deux tables, on peut effectuer une jointure interne à l'aide de la clause INNER JOIN ... ON ....
FROM LIVRESdésigne la table de gauche.INNER JOIN AUTEURSraccorde la table de droiteAUTEURS.ON LIVRES.id_auteur = AUTEURS.idspécifie la condition de jointure (égalité entre la clé étrangère de la table livre et la clé primaire de la table auteur).
Si un nom d'attribut est présent dans les deux tables (comme id), il est obligatoire de le préfixer avec le nom de sa table d'origine (ex. AUTEURS.id ou LIVRES.id) pour éviter les conflits d'ambiguïté.
On peut combiner les jointures avec des filtres WHERE ou des tris ORDER BY :
Requêtes de mise à jour et suppression
Modification d'enregistrements : UPDATE
La clause UPDATE permet de modifier des enregistrements existants. Il est fondamental de l'associer à une clause WHERE sous peine de modifier l'ensemble de la table !
Suppression d'enregistrements : DELETE
La commande DELETE FROM supprime définitivement des lignes de la table. La clause WHERE est indispensable pour cibler les lignes à retirer.
Suppression d'une table : DROP TABLE
Pour détruire définitivement une table et son contenu de la base de données :
Fonctions d'agrégation : COUNT()
La fonction COUNT() permet de comptabiliser le nombre de lignes d'un résultat.
- Compter toutes les lignes d'une table :
- Compter en filtrant avec
WHERE:
- Compter le nombre de valeurs distinctes non nulles d'une colonne :
Fiche de Révision
| Opération | Syntaxe SQL type |
|---|---|
| Création | CREATE TABLE NomTable (attribut1 TYPE, ..., PRIMARY KEY (attr1)); |
| Insertion | INSERT INTO NomTable (attributs) VALUES (valeurs); |
| Sélection | SELECT attributs FROM NomTable WHERE condition ORDER BY attr; |
| Jointure | SELECT * FROM T1 INNER JOIN T2 ON T1.cle_etrangere = T2.cle_primaire; |
| Modification | UPDATE NomTable SET attribut = nouvelle_valeur WHERE condition; |
| Suppression ligne | DELETE FROM NomTable WHERE condition; |
| Comptage | SELECT COUNT(*) FROM NomTable WHERE condition; |
Exercices du Baccalauréat à réviser
Pour vous préparer efficacement aux épreuves écrites de spécialité NSI, voici la liste complète des sujets officiels classés par année, accompagnés de leurs hyperliens directs vers les PDF de révision.
Session 2025 & Sujets Récents
- Sujet 3 (2025) - Exercice 1
- Sujet 3 (2025) - Exercice 2
- Sujet 3 (2025) - Exercice 3
- Sujet 10 (2025) - Exercice 3 (Bases de données relationnelles et SQL)
- Sujet 2024 - Exercice 1 (Bases de données relationnelles et SQL)
- Sujet 2024 - Exercice 3 (Bases de données, requêtes SQL et Python)
- Sujet 2024 - Sujet 7 (Exercice SQL)
- Sujet 2023 - Exercice 3 (Bases de données et SQL)
Session 2022
- Sujet 1 (2022) - Exercice 3
- Sujet 2 (2022) - Exercice 2
- Sujet 3 (2022) - Exercice 4
- Sujet 4 (2022) - Exercice 1
- Sujet 5 (2022) - Exercice 3
- Sujet 6 (2022) - Exercice 4
- Sujet 7 (2022) - Exercice 3
- Sujet 8 (2022) - Exercice 2
- Sujet 9 (2022) - Exercice 4
- Sujet 10 (2022) - Exercice 3
- Sujet 11 (2022) - Exercice 2
- Sujet 12 (2022) - Exercice 3
- Sujet 13 (2022) - Exercice 1
- Sujet 14 (2022) - Exercice 3
Session 2021
Avez-vous compris ce chapitre ?
Cochez-le pour l'enregistrer dans votre progression d'apprentissage.
