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.