Aller au contenu
Structure (DDL)

CREATE TABLE

CREATE TABLE déclare une nouvelle table : ses colonnes, leurs types et les contraintes qui protègent les données. C'est la traduction concrète d'un modèle MLD en schéma de base.

  • créer table
  • schéma
  • DDL
  • types
  • STRICT
  • AUTOINCREMENT

Syntaxe

Modèle
CREATE TABLE [IF NOT EXISTS] nom (  id INTEGER PRIMARY KEY,  colonne TYPE [NOT NULL] [DEFAULT valeur] [CHECK (...)],  autre_id INTEGER REFERENCES autre_table(id));

Exemple

Exemple concret
CREATE TABLE absences (  id INTEGER PRIMARY KEY,  student_id INTEGER NOT NULL REFERENCES students(id),  absent_on TEXT NOT NULL,  justified INTEGER NOT NULL DEFAULT 0 CHECK (justified IN (0, 1)));INSERT INTO absences (student_id, absent_on)VALUES (2, '2024-10-03');SELECT * FROM absences;-- Jeu de données : école-- id est attribué automatiquement, justified prend sa valeur par défaut.-- Résultat attendu :-- 1 | 2 | 2024-10-03 | 0

À retenir

  1. SQLite n'a que cinq classes de stockage : INTEGER, REAL, TEXT, BLOB et NULL. Il n'y a pas de type date ni booléen : on stocke une date en texte ISO ('AAAA-MM-JJ') et un booléen en 0 ou 1.
  2. Une colonne INTEGER PRIMARY KEY est numérotée automatiquement (alias du rowid) : inutile de fournir l'id à l'insertion.
  3. Piège : AUTOINCREMENT n'est pas nécessaire pour la numérotation. Il empêche seulement de réutiliser l'identifiant d'une ligne supprimée, coûte un peu plus cher, et la documentation de SQLite le déconseille hors besoin précis.
  4. Piège : SQLite accepte n'importe quel type déclaré et ne l'impose pas : VARCHAR(10) n'empêche pas de stocker 500 caractères, ni du texte dans une colonne INTEGER. Ajoutez STRICT après la parenthèse finale (SQLite 3.37+) pour un typage vérifié.

Voir aussi