Cours

SQL Leçon 4

Créer des tables

Décrire une table avec CREATE TABLE : choisir les types de colonnes, la clé primaire et les règles.

20 min

À la fin de cette leçon, tu sauras

  • Créer une table avec CREATE TABLE
  • Choisir le bon type pour chaque colonne
  • Définir une clé primaire et des contraintes

CREATE TABLE

Avant de ranger des données, on décrit la table : son nom, ses colonnes et le type de chacune.

CREATE TABLE eleves (
    id INT PRIMARY KEY AUTO_INCREMENT,
    prenom VARCHAR(50) NOT NULL,
    nom VARCHAR(50) NOT NULL,
    age INT,
    ville VARCHAR(80) DEFAULT 'Chartres',
    inscrit_le DATE
);

Les types les plus courants

  • INT : un nombre entier ;
  • DECIMAL(6, 2) : un nombre à virgule exact, idéal pour les prix (6 chiffres dont 2 après la virgule) ;
  • VARCHAR(50) : un texte court, ici 50 caractères au maximum ;
  • TEXT : un texte long (un message, une description) ;
  • DATE, DATETIME : une date, une date avec l'heure ;
  • BOOLEAN : vrai ou faux.

Les contraintes

  • PRIMARY KEY : la clé primaire, qui identifie chaque ligne de façon unique. Presque toutes les tables en ont une, souvent une colonne id ;
  • AUTO_INCREMENT : la base remplit l'id toute seule (1, 2, 3…) ;
  • NOT NULL : la colonne doit obligatoirement avoir une valeur ;
  • UNIQUE : deux lignes ne peuvent pas avoir la même valeur (utile pour un e-mail) ;
  • DEFAULT : la valeur utilisée si on n'en donne pas.

Astuce : AUTO_INCREMENT s'écrit ainsi dans MySQL et MariaDB. Avec SQLite, on écrit id INTEGER PRIMARY KEY AUTOINCREMENT, et PostgreSQL utilise SERIAL. Le reste du SQL est presque identique partout.

Supprimer une table

DROP TABLE eleves;

Attention : DROP TABLE supprime la table et toutes ses données, définitivement.

À toi de jouer

Crée une table produits avec :

  • une colonne id, nombre entier, clé primaire, remplie automatiquement ;
  • une colonne nom, texte de 100 caractères maximum, obligatoire ;
  • une colonne prix, nombre décimal DECIMAL(6, 2).

Pour vérifier, ajoute ensuite un produit avec INSERT et affiche la table avec SELECT * FROM produits;.

requete.sql
Résultat

Écris une requête : elle s'exécute pendant que tu tapes, sur une base d'exemple qui repart de zéro à chaque fois.

Voir les tables de la base d'exemple

classes (3 lignes)

idnom
1BTS SIO 1
2BTS SIO 2
3Terminale STMG

eleves (7 lignes)

idprenomnomagevilleclasse_id
1LéaMartin18Chartres1
2TomBernard19Dreux2
3InèsPetit18Chartres1
4HugoDurand20Paris2
5ChloéLambert17Lucé3
6NathanDubois19Chartres1
7SarahMoreau18DreuxNULL

notes (9 lignes)

ideleve_idmatierenote
11Développement16
21Réseau12
32Développement11
42Réseau15
53Développement18
64Réseau9
76Développement13
86Réseau14
95Gestion15
  • La table produits existe vraiment, avec les colonnes id, nom et prix
  • La table produits est créée
  • id est un entier, clé primaire
  • id est rempli automatiquement
  • nom est un VARCHAR(100) obligatoire
  • prix est un DECIMAL(6, 2)
Bloqué ? Voir une solution
CREATE TABLE produits (
    id INT PRIMARY KEY AUTO_INCREMENT,
    nom VARCHAR(100) NOT NULL,
    prix DECIMAL(6, 2)
);

Quiz

1À quoi sert une clé primaire ?
2Quel type choisir pour un prix comme 19,99 € ?
3Que garantit NOT NULL ?