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 ('test@example.com', 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', 'john.doe@example.com', 30);
Ensuite, essayez d'insérer un autre utilisateur avec le même nom d'utilisateur :
INSERT INTO users (username, email, age) VALUES ('johndoe', 'jane.doe@example.com', 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.