Database
 sql >> Baza danych >  >> RDS >> Database

Jak zmienić kolumnę z NULL na NOT NULL?

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.

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Klauzula SQL ORDER BY dla początkujących

  2. SQL IN vs SQL ISTNIEJE

  3. Zestaw problemów 2 – Identyfikacja jednostek i atrybutów

  4. Wskazówki dotyczące blokad odczytu/zapisu w zależności od poziomu izolacji transakcji w MSSQL

  5. SCD typu 4