Les contraintes (constraints) sont des règles qui garantissent l'intégrité des données dans une table. Ajoutons des contraintes NOT NULL
et UNIQUE
à une nouvelle table appelée users
.
-
Créez une table nommée users
avec des contraintes. Exécutez cette commande à l'invite sqlite>
:
CREATE TABLE users (
id INTEGER PRIMARY KEY,
username TEXT NOT NULL UNIQUE,
email TEXT NOT NULL,
age INTEGER
);
Cette commande crée une table nommée users
avec les contraintes suivantes :
username
ne peut pas être NULL
et doit être UNIQUE
.
email
ne peut pas être NULL
.
Décomposons la commande :
CREATE TABLE users
: Ceci indique à SQLite de créer une nouvelle table nommée users
.
id INTEGER PRIMARY KEY
: Ceci définit une colonne nommée id
avec le type de données INTEGER
. La contrainte PRIMARY KEY
garantit que chaque valeur de cette colonne est unique et sert d'identifiant principal pour chaque ligne.
username TEXT NOT NULL UNIQUE
: Ceci définit une colonne nommée username
avec le type de données TEXT
. La contrainte NOT NULL
garantit que cette colonne ne peut pas être vide, et la contrainte UNIQUE
garantit que toutes les valeurs de cette colonne sont distinctes.
email TEXT NOT NULL
: Ceci définit une colonne nommée email
avec le type de données TEXT
. La contrainte NOT NULL
garantit que cette colonne ne peut pas être vide.
age INTEGER
: Ceci définit une colonne nommée age
avec le type de données INTEGER
.
-
Maintenant, essayons d'insérer des données qui violent ces contraintes pour voir comment elles fonctionnent. Tout d'abord, essayez d'insérer un utilisateur sans nom d'utilisateur (username) :
INSERT INTO users (email, age) VALUES ('[email protected]', 25);
Vous verrez une erreur car la colonne username
est définie comme NOT NULL
.
Résultat attendu (Expected Output) :
Error: NOT NULL constraint failed: users.username
Cette erreur montre que SQLite applique la contrainte NOT NULL
sur username
, empêchant l'insertion.
-
Ensuite, essayez d'insérer un utilisateur avec un nom d'utilisateur (username) en double. Tout d'abord, insérez un utilisateur valide :
INSERT INTO users (username, email, age) VALUES ('johndoe', '[email protected]', 30);
Ensuite, essayez d'insérer un autre utilisateur avec le même nom d'utilisateur :
INSERT INTO users (username, email, age) VALUES ('johndoe', '[email protected]', 25);
Vous verrez une erreur car la colonne username
est définie comme UNIQUE
.
Résultat attendu (Expected Output) :
Error: UNIQUE constraint failed: users.username
Cette erreur démontre que SQLite applique la contrainte UNIQUE
sur username
, empêchant les valeurs en double.