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.