SQLite Contraintes

Les contraintes sont des règles appliquées aux colonnes de données d'une table. Elles servent à limiter les types de données pouvant être insérés dans une table, garantissant ainsi l'exactitude et la fiabilité des données dans la base de données.

Les contraintes peuvent être au niveau colonne ou au niveau table. Les contraintes au niveau colonne s'appliquent uniquement à une colonne, tandis que les contraintes au niveau table s'appliquent à l'ensemble de la table.

Voici les contraintes couramment utilisées dans SQLite.

  • Contrainte NOT NULL: Garantit qu'une colonne ne peut pas contenir de valeurs NULL.

  • Contrainte DEFAULT: Fournit une valeur par défaut pour une colonne lorsqu'aucune valeur n'est spécifiée.

  • Contrainte UNIQUE: Garantit que toutes les valeurs d'une colonne sont différentes.

  • Contrainte PRIMARY KEY: Identifie de manière unique chaque ligne/enregistrement dans une table de base de données.

  • Contrainte CHECK: La contrainte CHECK garantit que toutes les valeurs d'une colonne satisfont certaines conditions.

Contrainte NOT NULL

Par défaut, une colonne peut contenir des valeurs NULL. Si vous ne voulez pas qu'une colonne ait des valeurs NULL, vous devez définir cette contrainte sur cette colonne, en spécifiant que les valeurs NULL ne sont pas autorisées dans cette colonne.

NULL est différent de l'absence de données ; il représente des données inconnues.

Exemple

Par exemple, l'instruction SQLite suivante crée une nouvelle table COMPANY avec cinq colonnes, où les trois colonnes ID, NAME et AGE sont spécifiées pour ne pas accepter de valeurs NULL :

CREATE TABLE COMPANY(
   ID INT PRIMARY KEY     NOT NULL,
   NAME           TEXT    NOT NULL,
   AGE            INT     NOT NULL,
   ADDRESS        CHAR(50),
   SALARY         REAL
);

Contrainte DEFAULT

La contrainte DEFAULT fournit une valeur par défaut pour une colonne lorsque l'instruction INSERT INTO ne fournit pas de valeur spécifique.

Exemple

Par exemple, l'instruction SQLite suivante crée une nouvelle table COMPANY avec cinq colonnes. Ici, la colonne SALARY est définie par défaut sur 5000.00. Ainsi, lorsque l'instruction INSERT INTO ne fournit pas de valeur pour cette colonne, elle sera définie sur 5000.00.

CREATE TABLE COMPANY(
   ID INT PRIMARY KEY     NOT NULL,
   NAME           TEXT    NOT NULL,
   AGE            INT     NOT NULL,
   ADDRESS        CHAR(50),
   SALARY         REAL    DEFAULT 50000.00
);

Contrainte UNIQUE

La contrainte UNIQUE empêche deux enregistrements d'avoir la même valeur dans une colonne particulière. Dans la table COMPANY, par exemple, vous pourriez vouloir empêcher deux personnes ou plus d'avoir le même âge.

Exemple

Par exemple, l'instruction SQLite suivante crée une nouvelle table COMPANY avec cinq colonnes. Ici, la colonne AGE est définie sur UNIQUE, donc il ne peut pas y avoir deux enregistrements avec le même âge :

CREATE TABLE COMPANY(
   ID INT PRIMARY KEY     NOT NULL,
   NAME           TEXT    NOT NULL,
   AGE            INT     NOT NULL UNIQUE,
   ADDRESS        CHAR(50),
   SALARY         REAL    DEFAULT 50000.00
);

Contrainte PRIMARY KEY

La contrainte PRIMARY KEY identifie de manière unique chaque enregistrement dans une table de base de données. Il peut y avoir plusieurs colonnes UNIQUE dans une table, mais une seule clé primaire. Les clés primaires sont importantes lors de la conception de tables de base de données. Une clé primaire est un ID unique.

Nous utilisons des clés primaires pour référencer des lignes dans une table. Les relations entre les tables peuvent être créées en définissant la clé primaire comme clé étrangère dans d'autres tables. En raison d'une « erreur de codage de longue date », dans SQLite, les clés primaires peuvent être NULL, ce qui diffère des autres bases de données.

Une clé primaire est un champ dans une table qui identifie de manière unique chaque ligne/enregistrement dans une table de base de données. Les clés primaires doivent contenir des valeurs uniques. Une colonne de clé primaire ne peut pas avoir de valeurs NULL.

Une table ne peut avoir qu'une seule clé primaire, qui peut être composée d'un ou plusieurs champs. Lorsque plusieurs champs sont utilisés comme clé primaire, ils sont appelésune clé composite.。

Si une table a une clé primaire définie sur un ou plusieurs champs, alors deux enregistrements ne peuvent pas avoir la même valeur dans ces champs.

Exemple

Nous avons déjà vu divers exemples de création de la table COMAPNY avec ID comme clé primaire :

CREATE TABLE COMPANY(
   ID INT PRIMARY KEY     NOT NULL,
   NAME           TEXT    NOT NULL,
   AGE            INT     NOT NULL,
   ADDRESS        CHAR(50),
   SALARY         REAL
);

Contrainte CHECK

La contrainte CHECK permet une condition pour vérifier les valeurs lors de la saisie d'un enregistrement. Si la condition est évaluée à faux, l'enregistrement viole la contrainte et ne peut pas être inséré dans la table.

Exemple

Par exemple, l'instruction SQLite suivante crée une nouvelle table COMPANY avec cinq colonnes. Ici, nous ajoutons un CHECK sur la colonne SALARY, donc le salaire ne peut pas être zéro :

CREATE TABLE COMPANY3(
   ID INT PRIMARY KEY     NOT NULL,
   NAME           TEXT    NOT NULL,
   AGE            INT     NOT NULL,
   ADDRESS        CHAR(50),
   SALARY         REAL    CHECK(SALARY > 0)
);

Suppression de contraintes

Dans SQLite, pour supprimer des contraintes d'une table, vous devez généralement utiliser l'instructionALTER TABLEet spécifier le type de contrainte à supprimer.

Suppression de la contrainte de clé primaire :

ALTER TABLE table_name
DROP CONSTRAINT primary_key_name;

Ici,table_nameest le nom de la table sur laquelle vous opérez,primary_key_nameest le nom de la contrainte de clé primaire à supprimer.

Suppression de la contrainte unique :

ALTER TABLE table_name
DROP CONSTRAINT unique_constraint_name;

De même,table_nameest le nom de la table,unique_constraint_nameest le nom de la contrainte unique à supprimer.

Suppression de la contrainte de clé étrangère :

ALTER TABLE table_name
DROP CONSTRAINT foreign_key_constraint_name;

Ici,table_nameest le nom de la table,foreign_key_constraint_nameest le nom de la contrainte de clé étrangère à supprimer.

Autres extensions