CREATE TABLE#
essentiel
Syntaxe#
Contraintes de colonne#
| Contrainte | Rôle | |
|---|---|---|
PRIMARY KEY |
Clé primaire | essentiel |
NOT NULL |
Interdit NULL | essentiel |
DEFAULT valeur |
Valeur par défaut | essentiel |
REFERENCES table(col) |
Clé étrangère | essentiel |
UNIQUE |
Valeur unique | courant |
CHECK (condition) |
Contrainte de validation | courant |
AUTOINCREMENT |
Interdit la réutilisation des rowid | avancé |
COLLATE nom |
Collation (BINARY, NOCASE, RTRIM) |
avancé |
GENERATED ALWAYS AS (expr) [STORED\|VIRTUAL] |
Colonne calculée (≥ 3.31) | avancé |
Contraintes de table#
PRIMARY KEY (col1, col2)
FOREIGN KEY (col) REFERENCES autre_table(id) [ON DELETE CASCADE] [ON UPDATE CASCADE]
UNIQUE (col1, col2)
CHECK (condition)
Exemples#
CREATE TABLE villes (
id INTEGER PRIMARY KEY,
nom TEXT NOT NULL UNIQUE
);
CREATE TABLE etudiants (
id INTEGER PRIMARY KEY,
nom TEXT NOT NULL,
age INTEGER CHECK (age >= 0),
inscrit_le TEXT DEFAULT CURRENT_TIMESTAMP,
ville_id INTEGER REFERENCES villes(id) ON DELETE SET NULL
);
CREATE TABLE ... AS SELECT courant#
Warning
La table créée ne reprend ni les contraintes, ni les clés primaires, ni les index de la table source : uniquement les noms de colonnes et les données.
Tables STRICT avancé#
Impose les types déclarés au lieu du typage dynamique (SQLite ≥ 3.37).
Types autorisés : INT, INTEGER, REAL, TEXT, BLOB, ANY. Voir Types.
Tables WITHOUT ROWID avancé#
Optimisation de stockage pour les tables à clé primaire non entière. Une PRIMARY KEY explicite est obligatoire.
Les deux options se combinent : ) STRICT, WITHOUT ROWID;
SQLite
Les clés étrangères ne sont pas vérifiées par défaut : activer avec PRAGMA foreign_keys = ON; à chaque connexion.