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

So ändern Sie die Spalte von NULL in NOT NULL

Manchmal müssen Sie möglicherweise eine Nullable-Spalte mit NULL-Werten in eine ohne NULL-Werte ändern. In diesem Artikel sehen wir uns an, wie man Spalten von NULL- auf NOT NULL-Werte ändert. Sie können diese Schritte verwenden, um die Spalte in MySQL, PostgreSQL und SQL Server von NULL in NOT NULL zu ändern.


So ändern Sie die Spalte von Null in Nicht-Null

Hier sind die Schritte zum Ändern der Spalte von NULL in NOT NULL.


1. Tabelle aktualisieren, um Nullwerte zu entfernen.

Der erste Schritt besteht darin, Nullwerte aus unserer Spalte zu entfernen. Nehmen wir an, Sie haben eine Tabelle sales(id, amount, order_date)

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

Wie Sie sehen können, enthält die obige Tabelle Nullwerte in order_date und Betrag Spalten.

Angenommen, Sie möchten die Betragsspalte von null auf nicht null ändern. Also entfernen wir zuerst Nullwerte aus dieser Spalte mit der UPDATE-Anweisung.

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

Ebenso, wenn Sie order_date ändern möchten Spalte von null auf nicht null ändern, aktualisieren Sie zuerst die Nullwerte auf nicht null Werte, wie unten gezeigt.

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. Tabelle ändern und Spalte ändern

Als nächstes ändern wir die Betragsspalte von null auf nicht null, indem wir die ALTER TABLE-Anweisung verwenden.

Hier ist die Syntax dafür.

ALTER TABLE table_name ALTER COLUMN col_name data_type NOT NULL;

Ersetzen Sie Tabellenname, Spaltenname und Datentyp jeweils durch Tabellenname, Spaltenname und Datentyp.

Hier ist die SQL-Abfrage, um die Betragsspalte von NULL in NOT NULL zu ändern.

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

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

In ähnlicher Weise sind hier die SQL-Abfragen zum Ändern der Spalte order_date von NULL in 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;

Wir überprüfen die obige Änderung, indem wir den Befehl "describe table" in MySQL ausführen.

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

Sie werden sehen, dass die Spalten „betrag“ und „bestelldatum“ KEINEN Wert für die NULL-Spalte enthalten, was darauf hinweist, dass sie keine NULL-Werte speichern dürfen.

Ubiq macht es einfach, Daten zu visualisieren und sie in Echtzeit-Dashboards zu überwachen. Testen Sie Ubiq kostenlos.