sql >> Base de Datos >  >> RDS >> Database

Cómo alterar la columna de NULL a NOT NULL

A veces, es posible que deba cambiar una columna anulable con valores NULL a una sin valores NULL. En este artículo, veremos cómo modificar la columna de valores NULL a NOT NULL. Puede usar estos pasos para cambiar la columna de NULL a NOT NULL en MySQL, PostgreSQL y SQL Server.


Cómo modificar una columna de nulo a no nulo

Estos son los pasos para modificar la columna de NULL a NOT NULL.


1. Actualizar tabla para eliminar valores nulos.

El primer paso es eliminar los valores nulos de nuestra columna. Supongamos que tiene una tabla ventas (id, cantidad, fecha_pedido)

mysql> create table sales(id int, amount int,order_date date);

mysql> insert into sales(id, amount)
       values(1, 100),(2,300),(3,45);

mysql> insert into sales(id, order_date)
       values(4,'2020-11-01');

mysql> select * from sales;
+------+--------+------------+
| id   | amount | order_date |
+------+--------+------------+
|    1 |    100 | NULL       |
|    2 |    300 | NULL       |
|    3 |     45 | NULL       |
|    4 |   NULL | 2020-11-01 |
+------+--------+------------+

Como puede ver, la tabla anterior contiene valores nulos en order_date y cantidad columnas.

Digamos que desea cambiar la columna de monto de nulo a no nulo. Entonces, primero eliminaremos los valores nulos de esta columna usando la instrucción UPDATE.

mysql> update sales set amount=0 
       where amount is null;

mysql> select * from sales;
+------+--------+------------+
| id   | amount | order_date |
+------+--------+------------+
|    1 |    100 | NULL       |
|    2 |    300 | NULL       |
|    3 |     45 | NULL       |
|    4 |      0 | 2020-11-01 |
+------+--------+------------+

Del mismo modo, si desea cambiar order_date columna de nulo a no nulo, primero actualice los valores nulos a valores no nulos, como se muestra a continuación.

mysql> update sales set order_date='0000-00-00' 
       where order_date is null;

mysql> select * from sales;
+------+--------+------------+
| id   | amount | order_date |
+------+--------+------------+
|    1 |    100 | 0000-00-00 |
|    2 |    300 | 0000-00-00 |
|    3 |     45 | 0000-00-00 |
|    4 |      0 | 2020-11-01 |
+------+--------+------------+


2. Alterar tabla y modificar columna

A continuación, cambiaremos la columna de monto de nulo a no nulo, usando la instrucción ALTER TABLE.

Esta es la sintaxis para ello.

ALTER TABLE table_name ALTER COLUMN col_name data_type NOT NULL;

Reemplace table_name, col_name y data_type con nombre de tabla, nombre de columna y tipo de datos respectivamente.

Aquí está la consulta SQL para cambiar la columna de cantidad de NULL a NOT NULL.

For MySQL
---------
ALTER TABLE sales
MODIFY COLUMN amount int NOT NULL;

For SQL Server/PostgreSQL
-------------------------
ALTER TABLE sales
ALTER COLUMN amount int NOT NULL;

Del mismo modo, aquí están las consultas SQL para cambiar la columna order_date de NULL a NOT NULL

For MySQL
---------
ALTER TABLE sales
MODIFY COLUMN order_date date NOT NULL;

For SQL Server/PostgreSQL
-------------------------
ALTER TABLE sales
ALTER COLUMN order_date date NOT NULL;

Verificamos el cambio anterior ejecutando el comando describe table en MySQL.

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

Verá que las columnas cantidad y fecha_pedido NO contienen ningún valor para la columna NULL, lo que indica que no se les permite almacenar valores NULL.

Ubiq facilita la visualización de datos y la supervisión en paneles en tiempo real. Prueba Ubiq gratis.