sql >> Databáze >  >> RDS >> Database

Jak změnit sloupec z NULL na NOT NULL

Někdy může být nutné změnit sloupec s povolenou hodnotou Null s hodnotami NULL na sloupec bez hodnot NULL. V tomto článku se podíváme na to, jak změnit sloupec z hodnot NULL na NOT NULL. Tyto kroky můžete použít ke změně sloupce z NULL na NOT NULL v MySQL, PostgreSQL a SQL Server.


Jak změnit sloupec z hodnoty Null na hodnotu Not Null

Zde jsou kroky ke změně sloupce z NULL na NOT NULL.


1. Aktualizujte tabulku, abyste odstranili hodnoty Null.

Prvním krokem je odstranění hodnot null z našeho sloupce. Řekněme, že máte tabulku prodej(id, částka, datum_objednávky)

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

Jak můžete vidět, výše uvedená tabulka obsahuje hodnoty null v order_date a částka sloupce.

Řekněme, že chcete změnit sloupec částky z null na ne null. Nejprve tedy odstraníme hodnoty null z tohoto sloupce pomocí příkazu 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 |
+------+--------+------------+

Podobně, pokud chcete změnit order_date sloupec z null na not null, nejprve aktualizujte hodnoty null na hodnoty not null, jak je uvedeno níže.

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. Změnit tabulku a upravit sloupec

Dále změníme sloupec částky z null na not null pomocí příkazu ALTER TABLE.

Zde je jeho syntaxe.

ALTER TABLE table_name ALTER COLUMN col_name data_type NOT NULL;

Nahraďte název_tabulky, název_sloupce a typ_dat za název tabulky, název sloupce a typ dat.

Zde je dotaz SQL pro změnu sloupce částky z NULL na 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;

Podobně zde jsou dotazy SQL pro změnu sloupce order_date z NULL na 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;

Výše uvedenou změnu ověříme spuštěním příkazu description table v 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    |       |
+------------+---------+------+-----+---------+-------+

Uvidíte, že sloupce částka a datum_objednávky neobsahují ŽÁDNOU hodnotu pro sloupec NULL, což znamená, že nemají povoleno ukládat hodnoty NULL.

Ubiq usnadňuje vizualizaci dat a jejich sledování na řídicích panelech v reálném čase. Vyzkoušejte Ubiq zdarma.

  1. Dotaz s LEFT JOIN nevrací řádky pro počet 0

  2. Dotaz WHERE_IN se složeným klíčem?

  3. Funkce MySQL TAN() – Vrátí tečnu hodnoty v MySQL

  4. Nativní podpora JSON v MYSQL 5.7:jaké jsou výhody a nevýhody datového typu JSON v MYSQL?