Ràng buộc NOT NULL trong MySQL


1) Giá trị NULL là gì !?

- Khi chúng ta chèn một hàng mới vào bên trong cái bảng, nếu chúng ta không xác định đầy đủ giá trị cho tất cả các cột thì mặc định những cột bị bỏ trống sẽ nhận giá trị NULL.

Ví dụ:

- Tôi có một cái bảng SinhVien & một câu lệnh như bên dưới.

MSSV HoTen NamSinh GioiTinh ThanhPho
INSERT INTO SinhVien (MSSV, GioiTinh, ThanhPho) VALUES (1, "", "Cần Thơ");

- Sau khi tôi thực thi câu lệnh INSERT INTO phía trên thì cái bảng SinhVien sẽ trở thành:

MSSV HoTen NamSinh GioiTinh ThanhPho
1 NULL NULL Cần Thơ

- Lưu ý: Giá trị NULL có ý nghĩa là không có dữ liệu gì cả, nó hoàn toàn khác so với một chuỗi rỗng (chuỗi rỗng cũng là một giá trị, điển hình như trong cái bảng SinhVien nằm ở ví dụ phía trên, sinh viên được tôi chèn vào có GioiTinh là một chuỗi rỗng chứ không phải là NULL)

2) Chức năng của ràng buộc NOT NULL

- Ràng buộc NOT NULL dùng để thiết lập việc một cột không được phép chấp nhận giá trị NULL, tức là chúng ta không thể chèn hoặc cập nhật một hàng nếu không gán giá trị (hoặc gán giá trị là NULL) cho cột này.

Ví dụ:

- Đoạn mã bên dưới dùng để tạo một cái bảng SinhVien. Trong đó, hai cột MSSV & GioiSinh bị thiết lập ràng buộc NOT NULL, điều đó đồng nghĩa với việc hai cột này không thể chứa giá trị NULL.

CREATE TABLE SinhVien(
	MSSV INT NOT NULL,
	HoTen VARCHAR(255),
	NamSinh YEAR,
	GioiTinh VARCHAR(10) NOT NULL
);

3) Thêm ràng buộc NOT NULL khi bảng đã được tạo

- Đối với trường hợp bảng đã được tạo trước đó, nhưng do quên thiết lập ràng buộc NOT NULL cho cột nên bây giờ các bạn muốn bổ sung, để làm được điều đó thì chúng ta sử dụng lệnh chỉnh sửa bảng như bên dưới.

ALTER TABLE table_name MODIFY column_name DATA TYPE NOT NULL;

- Ví dụ, để bổ sung ràng buộc NOT NULL cho cột HoTen (trong bảng SinhVien) thì tôi sử dụng câu lệnh bên dưới.

ALTER TABLE SinhVien MODIFY HoTen VARCHAR(255) NOT NULL;

4) Xóa ràng buộc NOT NULL

- Để xóa ràng buộc NOT NULL trên cột thì chúng ta sử dụng lệnh chỉnh sửa bảng như bên dưới.

ALTER TABLE table_name MODIFY column_name DATA TYPE;

- Ví dụ, để xóa ràng buộc NOT NULL trên cột HoTen (trong bảng SinhVien) thì tôi sử dụng câu lệnh bên dưới.

ALTER TABLE SinhVien MODIFY HoTen VARCHAR(255);