Le tableur du club ne suffit plus
Une table de base de données range des données en lignes et en colonnes, comme un tableur, mais avec des règles strictes. Ces règles évitent les erreurs quand plusieurs personnes se servent des mêmes données.
Un club de basket tient la liste de ses membres dans un tableur. Un jour, quelqu'un écrit « vingt-cinq » dans la colonne des cotisations. Le total devient faux et personne ne sait pourquoi. Une base de données refuserait ce mot.
À la fin de cette leçon
Remarque
Je peux transformer un tableau de tableur en table de base de données.
Mots clés
| Mot | Ce que ça veut dire | Exemple |
|---|---|---|
| Table | un tableau de données, rangées en lignes et en colonnes | |
| Colonne | une même information pour toutes les lignes | ville |
| Ligne | une fiche complète, par exemple un membre du club | |
| Type | la sorte de valeur qu'une colonne accepte | DATE |
| Clé primaire | la colonne qui identifie chaque ligne, sans doublon | id |
| SQL | le langage pour parler à une base de données |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Avant de commencer
Remarque
Appuie sur Start the lab dans la barre en haut. Le lab est une vraie base MySQL rien qu'à toi, et elle met une minute à démarrer. Chaque bouton Run tape sa commande dans ton terminal. Tu peux aussi ouvrir phpMyAdmin, une page web qui montre la base.
Une table ressemble à une feuille de tableur
Une feuille a des colonnes et des lignes. Une table aussi. La première ligne de la feuille donne le nom des colonnes. Dans une table, chaque colonne a un nom et un type fixes.
Le type est la grande différence. Une colonne de nombres refuse un mot. Une colonne de dates refuse « bientôt ». Le tableur, lui, accepte tout.
Exemple : du tableur à la table
| Colonne du tableur | Une cellule | Nom dans la table | Type choisi |
|---|---|---|---|
| Numéro | 1 | id | INT, clé primaire |
| Prénom | Lea | prenom | VARCHAR(40) |
| Ville | Lyon | ville | VARCHAR(40) |
| Cotisation | 25 € | cotisation_euros | DECIMAL(6,2) |
| Inscrit le | 05/09/2026 | inscrit_le | DATE |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Un type par colonne, une clé par ligne
Voici les types courants. INT est un entier. DECIMAL(6,2) est un prix à deux décimales. VARCHAR(40) est un texte de 40 caractères au plus. DATE est une date.
La clé primaire est une colonne dont la valeur n'est jamais deux fois la même. Elle sert de numéro de fiche. Deux membres peuvent s'appeler Lea, mais ils n'auront jamais le même id.
Lance les quatre Runs : ils préparent ta propre base.
Accepte le certificat du serveur
printf '[client]\nssl-verify-server-cert=0\n' > ~/.my.cnfAffichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Crée ta propre base
mariadb -h db -u student -pstudent -e "CREATE DATABASE IF NOT EXISTS student_club"Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Un nom court pour ta base
alias sqlc='mariadb -h db -u student -pstudent student_club -t -e'Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Crée la table des membres
sqlc "CREATE TABLE membres (id INT PRIMARY KEY, prenom VARCHAR(40) NOT NULL, ville VARCHAR(40), cotisation_euros DECIMAL(6,2) NOT NULL, inscrit_le DATE NOT NULL)"Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
INSERT ajoute une ligne à la table
Une ligne du tableur devient une ligne de la table avec INSERT INTO. Les valeurs suivent l'ordre des colonnes. Le texte et les dates vont entre apostrophes. Un nombre n'en prend pas.
Une case vide du tableur devient NULL, la marque d'une valeur manquante. Un fichier CSV est un tableur écrit en texte, une ligne par fiche, les cases séparées par des virgules. Chaque ligne du CSV devient un INSERT.
Ajoute trois membres
sqlc "INSERT INTO membres VALUES (1, 'Lea', 'Lyon', 25.00, '2026-09-05'), (2, 'Omar', 'Lille', 25.00, '2026-09-06'), (3, 'Camille', NULL, 18.50, '2026-09-12')"Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Relis la table
sqlc "SELECT * FROM membres ORDER BY id"Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Essaie un deuxième membre numéro 1
sqlc "INSERT INTO membres VALUES (1, 'Zoe', 'Nice', 25.00, '2026-09-20')"Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Une erreur fréquente
Attention
Beaucoup recopient « 25 € » telle quelle dans la colonne. La colonne devient du texte et on ne peut plus additionner. Garde seulement le nombre, 25, et mets l'unité dans le nom de la colonne : cotisation_euros.
À toi : les membres d'une ville
-- Les membres qui habitent Lille, par ordre alphabétique des prénoms.
SELECT prenom, cotisation_euros FROM membres
WHERE ville = 'Lille'
ORDER BY prenom;
-- Change la ville en 'Lyon' et relance.
Pour aller plus loin : un vrai CSV
Voici trois lignes d'un fichier CSV : 1,Lea,Lyon,25,2026-09-05 puis 2,Omar,Lille,25,2026-09-06 puis 3,Camille,,18.5,2026-09-12.
Écris les trois INSERT à la main. Que devient la case vide de Camille ? Dans phpMyAdmin, l'onglet Importer lit un fichier CSV entier à ta place.