sql >> Base de Datos >  >> RDS >> Mysql

Cómo agregar la restricción NOT NULL en MySQL

Si necesita configurar una columna de MySQL para que no acepte valores nulos, puede agregar la restricción NOT NULL en MySQL. Puede agregar la restricción NOT NULL cuando crea una tabla usando la declaración CREATE TABLE, o agregar la restricción NOT NULL en la tabla existente usando la declaración ALTER TABLE. Aquí se explica cómo agregar la restricción NOT NULL en MySQL.

Cómo agregar la restricción NOT NULL en MySQL

Estos son los pasos para agregar la restricción NOT NULL para la columna en MySQL, agregar la restricción NOT NULL a la columna existente y eliminar la restricción NOT NULL de una columna.

Aquí está la sintaxis para definir la restricción NOT NULL en MySQL cuando crea una nueva tabla.

column_name data_type NOT NULL;

En la declaración anterior, debe especificar NOT NULL después de mencionar el column_name y su tipo_de_datos

Aquí hay un ejemplo para agregar la restricción NOT NULL en 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

En la consulta CREATE TABLE anterior, hemos agregado una restricción NOT NULL para cantidad columna. Cuando inserta un valor NULL en esta columna, MySQL dará un error.

Lectura adicional:Cómo agregar restricciones predeterminadas en MySQL

ALTER TABLE Añadir restricción NOT NULL en MySQL

También puede agregar la restricción NOT NULL a la columna existente en MySQL usando la declaración ALTER TABLE … CHANGE. Esta es la sintaxis para agregar una restricción no nula en una tabla existente en MySQL.

ALTER TABLE table_name
CHANGE 
   old_column_name 
   new_column_name column_definition;

En la consulta anterior, mencionamos el mismo nombre de columna para old_column_name así como new_column_name. El new_column_name debe ir seguido de su column_definition del tipo de datos y la palabra clave NOT NULL.

Aquí hay un ejemplo de consulta SQL para agregar la restricción NOT NULL a la columna existente en 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    |       |
+------------+---------+------+-----+---------+-------+

En la consulta anterior, hemos agregado la restricción NOT NULL a la columna existente order_date

Lectura adicional:MySQL seleccione las N filas principales por grupo

Cómo eliminar la restricción NOT NULL

También puede eliminar la restricción NOT NULL usando ALTER TABLE … MODIFY declaración. Esta es la sintaxis para eliminar la restricción NOT NULL en MySQL.

ALTER TABLE table_name
MODIFY column_name column_definition;

En la consulta anterior, debe especificar el nombre de la columna y la definición para la que desea eliminar la restricción NOT NULL.

Aquí hay un ejemplo para eliminar la restricción NOT NULL para order_date columna.

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    |       |
+------------+---------+------+-----+---------+-------+

Lectura adicional:Cómo obtener datos de la semana pasada en MySQL

Ubiq facilita la visualización de datos en minutos y la supervisión en paneles en tiempo real. ¡Pruébalo hoy!