Plus facile à lire avec un fond crème, une teinte, plus de contraste ou un texte plus grand ? Choisissez vos couleurs et votre texte, une fois pour toutes les pages.

Leçon gratuite

Créer une table avec une clé primaire

Après cette leçon: Je peux créer une table avec une clé primaire.

Leçon de 50 min12 commandesLab MySQL et phpMyAdmin avec une base de boutique pour s’exercer en SQL

Deux élèves, un seul nom

Une table est le tableau où une base de données range ses informations, et sa clé primaire donne un numéro unique à chaque ligne.

Sans cette clé, deux élèves nommés Léa Martin seraient impossibles à distinguer quand l'une rend un livre au CDI. Aujourd'hui, tu crées ta propre table et tu vois la base refuser un doublon.

À la fin de cette leçon

Remarque

Je peux créer une table avec une clé primaire.

Mots clés

MotCe que ça veut direExemple
Base de donnéesun ensemble de tables rangées ensemble
Tableun tableau qui range une seule sorte de choselivres
Colonneune information que chaque ligne possèdetitre
Ligneune chose rangée dans la table, un livre par exemple
Type de donnéesce qu'une colonne accepte : nombre, texte ou dateINT
Clé primaireune colonne dont la valeur est unique dans chaque ligneid

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

Une table range une seule sorte de chose

Une base de données range ses informations dans des tables. Une table décrit une seule sorte de chose : des clients, des livres ou des commandes.

Chaque colonne est une information et chaque ligne est une chose. Chaque colonne a un type de données. La base refuse du texte dans une colonne de nombres.

Avant de commencer

Remarque

Appuie sur Start the lab dans la barre en haut et attends que la machine soit prête. Les deux Runs suivants servent à te connecter. Le deuxième crée un alias : un nom court, sql, pour une longue commande.

Accepter le certificat du serveur

Commande
printf '[client]\nssl-verify-server-cert=0\n' > ~/.my.cnf

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 la boutique

Commande
alias sql='mariadb -h db -u student -pstudent shop -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.

Les colonnes de la table customers

Commande
sql "DESCRIBE customers"

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.

Exemple : choisir un type

Ce qu'on rangeTypePourquoi
Un nombre de livresINTDes nombres entiers seulement
Un prix en eurosDECIMAL(6,2)Les centimes exacts, sans erreur d'arrondi
Le titre d'un livreVARCHAR(80)Du texte de 80 caractères au plus
Un jour d'empruntDATELa base sait compter les jours entre deux dates
Livre perdu ou nonBOOLEANSeulement oui ou non

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

Une clé primaire identifie chaque ligne

Une clé primaire est une colonne dont la valeur est différente dans chaque ligne. Elle n'est jamais vide.

C'est souvent un numéro que la base compte seule : on écrit AUTO_INCREMENT. La base refuse une seconde ligne avec le même numéro.

Dans le résultat de DESCRIBE, la colonne Key affiche PRI en face de la clé primaire. Cherche aussi deux clients qui portent le même nom.

Deux clients nommés Smith

Commande
sql "SELECT id, first_name, last_name FROM customers WHERE last_name = 'Smith'"

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 pensent qu'un nom ou une adresse e-mail fait une bonne clé primaire. Les noms se répètent et les gens changent d'adresse. Choisis un numéro compté par la base. Garde l'adresse dans une colonne à part, déclarée UNIQUE.

Crée ta propre table de livres

Le lab te laisse créer toute base dont le nom commence par student_. Tu crées student_biblio pour le CDI de ton lycée.

La base de la boutique reste intacte. Lance les Runs dans l'ordre. Un Run qui finit par une erreur fait partie de la leçon.

Créer ta base

Commande
sql "CREATE DATABASE IF NOT EXISTS student_biblio"

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 elle

Commande
alias bib='mariadb -h db -u student -pstudent student_biblio -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.

Repartir de zéro

Commande
bib "DROP TABLE IF EXISTS livres"

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éer la table livres

Commande
bib "CREATE TABLE livres (id INT AUTO_INCREMENT PRIMARY KEY, titre VARCHAR(80) NOT NULL, auteur VARCHAR(60) NOT NULL, annee INT NOT NULL, prix DECIMAL(6,2) 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.

Ajouter deux livres

Commande
bib "INSERT INTO livres (titre, auteur, annee, prix) VALUES ('Le Petit Prince', 'Saint-Exupery', 1943, 7.90), ('Germinal', 'Zola', 1885, 6.50)"

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.

Lire ce que la table contient

Commande
bib "SELECT * FROM livres"

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 troisième livre avec le numéro 1

Commande
bib "INSERT INTO livres (id, titre, auteur, annee, prix) VALUES (1, 'Candide', 'Voltaire', 1759, 5.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.

Un livre sans prix

Commande
bib "INSERT INTO livres (titre, auteur, annee) VALUES ('Sans prix', 'Inconnu', 2000)"

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.

À toi : une table de clubs

Code: sql
-- Lis la table, puis ajoute un club avec le numéro 3.
SELECT * FROM clubs;
-- Remplace le 3 par 1 et relance : que se passe-t-il ?
INSERT INTO clubs VALUES (3, 'Robotique', 'A04');
SELECT * FROM clubs;

Pour aller plus loin : clé double

Dans la boutique, la table order_items n'a pas de numéro. Sa clé primaire réunit deux colonnes : la commande et l'article. Lance sql "DESCRIBE order_items" et cherche PRI.

Pourquoi ce couple est-il unique, alors que chaque colonne seule se répète ?

À propos de ce labo et de sa source: Lab MySQL et phpMyAdmin avec une base de boutique pour s’exercer en SQL

Vous enseignez à une classe ? Proposez ce module à vos étudiants avec un guide de l'enseignant, des devoirs corrigés et un laboratoire pour chaque étudiant.