Đôi khi bạn có thể cần phải thay đổi một cột có giá trị NULL có giá trị NULL thành một cột không có giá trị NULL. Trong bài viết này, chúng ta sẽ xem xét cách thay đổi cột từ giá trị NULL thành NOT NULL. Bạn có thể sử dụng các bước này để thay đổi cột từ NULL thành NOT NULL trong MySQL, PostgreSQL và SQL Server.
Cách thay đổi cột từ rỗng thành không rỗng
Dưới đây là các bước để thay đổi cột từ NULL thành NOT NULL.
1. Cập nhật bảng để loại bỏ giá trị rỗng.
Bước đầu tiên là xóa các giá trị null khỏi cột của chúng tôi. Giả sử bạn có một bảng doanh số bán hàng (id, số lượng, ngày_đặt_hàng)
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 | +------+--------+------------+
Như bạn có thể thấy, bảng trên chứa các giá trị rỗng trong order_date và số lượng cột.
Giả sử bạn muốn thay đổi cột số tiền từ null thành không null. Vì vậy, trước tiên, chúng tôi sẽ xóa các giá trị null khỏi cột này bằng cách sử dụng câu lệnh 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 | +------+--------+------------+
Tương tự, nếu bạn muốn thay đổi order_date cột từ null sang không null, trước tiên hãy cập nhật giá trị null thành giá trị không null, như được hiển thị bên dưới.
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. Thay đổi bảng và sửa đổi cột
Tiếp theo, chúng ta sẽ thay đổi cột số tiền từ null thành không null, sử dụng câu lệnh ALTER TABLE.
Đây là cú pháp của nó.
ALTER TABLE table_name ALTER COLUMN col_name data_type NOT NULL;
Thay thế table_name, col_name và data_type tương ứng bằng tên bảng, tên cột và kiểu dữ liệu.
Đây là truy vấn SQL để thay đổi cột số tiền từ NULL thành 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;
Tương tự, đây là các truy vấn SQL để thay đổi cột order_date từ NULL thành 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;
Chúng tôi xác minh sự thay đổi ở trên bằng cách chạy lệnh bảng mô tả trong 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 | | +------------+---------+------+-----+---------+-------+
Bạn sẽ thấy rằng số lượng cột và ngày đặt hàng không chứa giá trị KHÔNG cho cột NULL cho biết rằng chúng không được phép lưu trữ giá trị NULL.
Ubiq giúp dễ dàng trực quan hóa dữ liệu và theo dõi chúng trong trang tổng quan thời gian thực. Dùng thử Ubiq miễn phí.