Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment ajouter une contrainte NOT NULL dans MySQL

Si vous devez définir une colonne MySQL pour qu'elle n'accepte pas les valeurs nulles, vous pouvez ajouter la contrainte NOT NULL dans MySQL. Vous pouvez ajouter une contrainte NOT NULL lorsque vous créez une table à l'aide de l'instruction CREATE TABLE ou ajouter une contrainte NOT NULL dans une table existante à l'aide de l'instruction ALTER TABLE. Voici comment ajouter la contrainte NOT NULL dans MySQL.

Comment ajouter une contrainte NOT NULL dans MySQL

Voici les étapes pour ajouter la contrainte NOT NULL pour la colonne dans MySQL, ajouter la contrainte NOT NULL à la colonne existante et supprimer la contrainte NOT NULL d'une colonne.

Voici la syntaxe pour définir la contrainte NOT NULL dans MySQL lorsque vous créez une nouvelle table.

column_name data_type NOT NULL;

Dans la déclaration ci-dessus, vous devez spécifier NOT NULL après avoir mentionné le column_name et son data_type

Voici un exemple pour ajouter la contrainte NOT NULL dans MySQL.

mysql> create table product_sales(
     id int,
     amount int NOT NULL,
     order_date date
     );

mysql> describe product_sales;
+------------+---------+------+-----+---------+-------+
| Field      | Type    | Null | Key | Default | Extra |
+------------+---------+------+-----+---------+-------+
| id         | int(11) | YES  |     | NULL    |       |
| amount     | int(11) | NO   |     | NULL    |       |
| order_date | date    | YES  |     | NULL    |       |
+------------+---------+------+-----+---------+-------+

mysql> insert into product_sales(id, order_date)
     values(1,'2020-08-01');
ERROR 1364 (HY000): Field 'amount' doesn't have a default value

Dans la requête CREATE TABLE ci-dessus, nous avons ajouté une contrainte NOT NULL pour amount colonne. Lorsque vous insérez une valeur NULL dans cette colonne, MySQL affichera une erreur.

Lecture bonus :comment ajouter une contrainte par défaut dans MySQL

ALTER TABLE Ajouter une contrainte NOT NULL dans MySQL

Vous pouvez également ajouter une contrainte NOT NULL à une colonne existante dans MySQL à l'aide de l'instruction ALTER TABLE … CHANGE. Voici la syntaxe pour ajouter une contrainte non nulle dans une table existante dans MySQL.

ALTER TABLE table_name
CHANGE 
   old_column_name 
   new_column_name column_definition;

Dans la requête ci-dessus, nous mentionnons le même nom de colonne pour old_column_name ainsi que new_column_name. Le new_column_name doit être suivi de sa column_definition de type de données et du mot-clé NOT NULL.

Voici un exemple de requête SQL pour ajouter la contrainte NOT NULL à une colonne existante dans MySQL.

mysql> ALTER TABLE product_sales
     CHANGE
         order_date
         order_date DATE NOT NULL;

mysql> describe product_sales;
+------------+---------+------+-----+---------+-------+
| Field      | Type    | Null | Key | Default | Extra |
+------------+---------+------+-----+---------+-------+
| id         | int(11) | YES  |     | NULL    |       |
| amount     | int(11) | NO   |     | NULL    |       |
| order_date | date    | NO   |     | NULL    |       |
+------------+---------+------+-----+---------+-------+

Dans la requête ci-dessus, nous avons ajouté la contrainte NOT NULL à la colonne existante order_date

Lecture bonus :MySQL sélectionne les N premières lignes par groupe

Comment supprimer la contrainte NOT NULL

Vous pouvez également supprimer la contrainte NOT NULL à l'aide de l'instruction ALTER TABLE … MODIFY. Voici la syntaxe pour supprimer la contrainte NOT NULL dans MySQL.

ALTER TABLE table_name
MODIFY column_name column_definition;

Dans la requête ci-dessus, vous devez spécifier le nom et la définition de la colonne pour laquelle vous souhaitez supprimer la contrainte NOT NULL.

Voici un exemple pour supprimer la contrainte NOT NULL pour order_date colonne.

mysql> ALTER TABLE product_sales
       MODIFY order_date DATE;

mysql> describe product_sales;
+------------+---------+------+-----+---------+-------+
| Field      | Type    | Null | Key | Default | Extra |
+------------+---------+------+-----+---------+-------+
| id         | int(11) | YES  |     | NULL    |       |
| amount     | int(11) | NO   |     | NULL    |       |
| order_date | date    | YES  |     | NULL    |       |
+------------+---------+------+-----+---------+-------+

Lecture bonus :Comment obtenir les données de la semaine dernière dans MySQL

Ubiq facilite la visualisation des données en quelques minutes et la surveillance dans des tableaux de bord en temps réel. Essayez-le aujourd'hui !