Czasami może zajść potrzeba zmiany kolumny dopuszczającej wartości null z wartościami NULL na taką, która nie zawiera wartości NULL. W tym artykule przyjrzymy się, jak zmienić wartość kolumny z NULL na NOT NULL. Możesz użyć tych kroków, aby zmienić kolumnę z NULL na NOT NULL w MySQL, PostgreSQL i SQL Server.
Jak zmienić kolumnę z wartości zerowej na niezerową
Oto kroki, aby zmienić kolumnę z NULL na NOT NULL.
1. Zaktualizuj tabelę, aby usunąć wartości zerowe.
Pierwszym krokiem jest usunięcie wartości null z naszej kolumny. Załóżmy, że masz tabelę sprzedaż(id, kwota, data_zamówienia)
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 widać, powyższa tabela zawiera wartości null w data_zamówienia i kwota kolumny.
Powiedzmy, że chcesz zmienić kolumnę kwoty z wartości null na not null. Więc najpierw usuniemy wartości null z tej kolumny za pomocą instrukcji 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 | +------+--------+------------+
Podobnie, jeśli chcesz zmienić data_zamówienia kolumna od null do not null, najpierw zaktualizuj wartości null do wartości nie null, jak pokazano poniżej.
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. Zmień tabelę i zmodyfikuj kolumnę
Następnie zmienimy kolumnę kwoty z null na not null za pomocą instrukcji ALTER TABLE.
Oto jego składnia.
ALTER TABLE table_name ALTER COLUMN col_name data_type NOT NULL;
Zastąp table_name, col_name i data_type odpowiednio nazwą tabeli, nazwą kolumny i typem danych.
Oto zapytanie SQL, aby zmienić kolumnę kwoty 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;
Podobnie, oto zapytania SQL, aby zmienić kolumnę 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;
Weryfikujemy powyższą zmianę, uruchamiając polecenie opisu tabeli w 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 | | +------------+---------+------+-----+---------+-------+
Zobaczysz, że kolumny kwota i data_zamówienia nie zawierają wartości dla kolumny NULL, co oznacza, że nie mogą przechowywać wartości NULL.
Ubiq ułatwia wizualizację danych i monitorowanie ich w pulpitach nawigacyjnych w czasie rzeczywistym. Wypróbuj Ubiq za darmo.