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.