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.