Database
 sql >> Database >  >> RDS >> Database

Come modificare la colonna da NULL a NOT NULL

A volte potrebbe essere necessario modificare una colonna nullable con valori NULL in una senza valori NULL. In questo articolo, vedremo come modificare la colonna da NULL a NOT NULL valori. Puoi utilizzare questi passaggi per modificare la colonna da NULL a NOT NULL in MySQL, PostgreSQL e SQL Server.


Come modificare la colonna da Null a Not Null

Ecco i passaggi per modificare la colonna da NULL a NOT NULL.


1. Aggiorna la tabella per rimuovere i valori nulli.

Il primo passo è rimuovere i valori nulli dalla nostra colonna. Supponiamo che tu abbia una tabella vendite(id, importo, data_ordine)

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

Come puoi vedere, la tabella sopra contiene valori nulli in data_ordine e importo colonne.

Diciamo che vuoi cambiare la colonna dell'importo da null a non null. Quindi prima rimuoveremo i valori nulli da questa colonna usando l'istruzione 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 |
+------+--------+------------+

Allo stesso modo, se vuoi cambiare data_ordine colonna da null a non null, prima aggiornare i valori null a valori non nulli, come mostrato di seguito.

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. Modifica tabella e modifica colonna

Successivamente, cambieremo la colonna dell'importo da null a non null, utilizzando l'istruzione ALTER TABLE.

Ecco la sintassi.

ALTER TABLE table_name ALTER COLUMN col_name data_type NOT NULL;

Sostituisci table_name, col_name e data_type rispettivamente con il nome della tabella, il nome della colonna e il tipo di dati.

Ecco la query SQL per modificare la colonna dell'importo da 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;

Allo stesso modo, ecco le query SQL per modificare la colonna order_date da 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;

Verifichiamo la modifica precedente eseguendo il comando describe table in 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    |       |
+------------+---------+------+-----+---------+-------+

Vedrai che le colonne importo e data_ordine non contengono alcun valore per la colonna NULL indicando che non sono autorizzati a memorizzare valori NULL.

Ubiq semplifica la visualizzazione dei dati e il monitoraggio in dashboard in tempo reale. Prova Ubiq gratuitamente.