Contraintes NOT NULL et CHECK
Interdisez les valeurs manquantes avec NOT NULL et validez les règles du domaine avec CHECK (price > 0, status IN ('active','archived')).
Contraintes NOT NULL et CHECK est une leçon SQL Academy gratuite sur CoddyKit. Ceci est la leçon 1 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage SQL Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours SQL Academy comprend 4 leçons au total.
Pourquoi utiliser des contraintes ?
Les contraintes déplacent la validation INTO la base de données. L’avantage est considérable : chaque application, script et requête ponctuelle écrit des données valides — ou échoue explicitement.
NOT NULL
La contrainte la plus simple : cette colonne doit avoir une valeur :
CREATE TABLE users (
id BIGSERIAL PRIMARY KEY,
email VARCHAR(255) NOT NULL,
age INT -- NULL allowed
);Ajouter NOT NULL ultérieurement
Commencez par renseigner les valeurs manquantes, puis ajoutez la contrainte :
UPDATE users SET email = 'unknown@example.com' WHERE email IS NULL;
ALTER TABLE users ALTER COLUMN email SET NOT NULL;Contrainte CHECK
Une expression booléenne quelconque que chaque ligne doit respecter :
CREATE TABLE products (
id BIGSERIAL PRIMARY KEY,
name TEXT NOT NULL,
price NUMERIC(10,2) NOT NULL CHECK (price > 0),
discount NUMERIC(5,2) DEFAULT 0 CHECK (discount BETWEEN 0 AND 100)
);CHECK avec des valeurs de type énumération
Limitez une colonne à un ensemble défini de valeurs :
CREATE TABLE orders (
id BIGSERIAL PRIMARY KEY,
status TEXT NOT NULL
CHECK (status IN ('pending','paid','shipped','cancelled'))
);NULL passe CHECK en silence
Une contrainte CHECK est satisfaite lorsque l’expression vaut NULL, c’est-à-dire lorsqu’elle est inconnue. Combinez-la avec NOT NULL lorsque vous avez besoin d’une garantie stricte :
CREATE TABLE invoices (
amount NUMERIC(10,2) NOT NULL CHECK (amount > 0)
);CHECK sur plusieurs colonnes
Vous pouvez faire référence à plusieurs colonnes :
CREATE TABLE bookings (
start_at TIMESTAMPTZ NOT NULL,
end_at TIMESTAMPTZ NOT NULL,
CHECK (start_at < end_at)
);Ajouter CHECK ultérieurement
Validez d’abord les lignes existantes, puis ajoutez la contrainte :
ALTER TABLE products
ADD CONSTRAINT positive_price CHECK (price > 0);
-- fails if any row violates itAstuce NOT VALID pour les grandes tables
Ignorez le parcours complet initial et effectuez la validation ultérieurement en arrière-plan :
ALTER TABLE products
ADD CONSTRAINT positive_price CHECK (price > 0) NOT VALID;
ALTER TABLE products VALIDATE CONSTRAINT positive_price;Contraintes nommées
Nommez toujours vos contraintes afin que les messages d’erreur et les migrations soient prévisibles :
ALTER TABLE products
ADD CONSTRAINT products_price_positive CHECK (price > 0);Ne répliquez pas la logique dans l’application
Si la base de données l’impose, tous les chemins d’exécution en bénéficient — plus de « j’ai oublié de valider ». Conservez une validation en double dans l’application pour l’expérience utilisateur, afin d’obtenir un retour immédiat, mais faites de la base de données la source de vérité.
Récapitulatif
NOT NULL et CHECK bloquent les données incorrectes les plus courantes.
- NOT NULL : aucune valeur manquante
- CHECK : règles quelconques appliquées à chaque ligne
- Utilisez NOT VALID + VALIDATE pour les ajouts en ligne
Vérification rapide
Que se passe-t-il si vous écrivez CHECK (price > 0) sur une colonne sans NOT NULL ?
Questions Fréquemment Posées
La leçon « Contraintes NOT NULL et CHECK » est-elle gratuite ?
Oui — le texte complet de « Contraintes NOT NULL et CHECK » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours SQL Academy, passe à CoddyKit PRO. Le cours SQL Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Contraintes NOT NULL et CHECK » ?
Interdisez les valeurs manquantes avec NOT NULL et validez les règles du domaine avec CHECK (price > 0, status IN ('active','archived')). Tu pratiques SQL Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer SQL Academy ?
Aucune expérience préalable n'est requise. SQL Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 1 sur 4.
Combien de temps prend la leçon « Contraintes NOT NULL et CHECK » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon SQL Academy ?
Oui. Chaque leçon SQL Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Contraintes NOT NULL et CHECK
- Contraintes UNIQUE et clés composites
- FOREIGN KEY et actions référentielles
- Valeurs DEFAULT et colonnes générées