sql >> Database >  >> RDS >> Database

Kolom wijzigen van NULL naar NIET NULL

Soms moet u een kolom met NULL-waarden wijzigen in een kolom zonder NULL-waarden. In dit artikel zullen we bekijken hoe u de kolom van NULL naar NOT NULL-waarden kunt wijzigen. U kunt deze stappen gebruiken om de kolom te wijzigen van NULL naar NOT NULL in MySQL, PostgreSQL en SQL Server.


Kolom wijzigen van null naar niet-null

Hier zijn de stappen om de kolom te wijzigen van NULL naar NIET NULL.


1. Tabel bijwerken om nulwaarden te verwijderen.

De eerste stap is om null-waarden uit onze kolom te verwijderen. Stel dat u een tabel verkoop(id, bedrag, besteldatum) . heeft

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

Zoals je kunt zien, bevat de bovenstaande tabel null-waarden in order_date en bedrag kolommen.

Stel dat u de kolom voor het bedrag wilt wijzigen van null naar niet-null. Dus eerst zullen we null-waarden uit deze kolom verwijderen met behulp van de UPDATE-instructie.

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

Evenzo, als u order_date wilt wijzigen kolom van null naar niet null, update eerst null-waarden naar niet-null-waarden, zoals hieronder weergegeven.

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. Tabel wijzigen en kolom wijzigen

Vervolgens zullen we de kolom bedrag wijzigen van null in niet null, met behulp van de instructie ALTER TABLE.

Hier is de syntaxis ervoor.

ALTER TABLE table_name ALTER COLUMN col_name data_type NOT NULL;

Vervang table_name, col_name en data_type door respectievelijk tabelnaam, kolomnaam en datatype.

Hier is de SQL-query om de bedragkolom te wijzigen van NULL in 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;

Evenzo zijn hier de SQL-query's om de kolom order_date te wijzigen van NULL in NIET 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;

We verifiëren de bovenstaande wijziging door de opdracht description table in MySQL uit te voeren.

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

U zult zien dat de kolommen hoeveelheid en order_date GEEN waarde bevatten voor de NULL-kolom, wat aangeeft dat ze geen NULL-waarden mogen opslaan.

Ubiq maakt het eenvoudig om data te visualiseren en te monitoren in realtime dashboards. Probeer Ubiq gratis.

  1. SQL:alleen de eerste letter met een hoofdletter

  2. Hoe synchroniseer ik met de lokale database en ontleden?

  3. 3 manieren om dubbele rijen in SQL Server te verwijderen terwijl de primaire sleutel wordt genegeerd

  4. Efficiënte manier om alle rijen in een tabel bij te werken