Tìm hiểu giá trị NULL trong MySQL


1) Giá trị NULL là gì, từ đâu mà có !?

- 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ì những cột bị bỏ trống sẽ nhận giá trị NULL.

- Giá trị NULL có thể tạm hiểu là ô đó không có dữ liệu gì cả (nó không phải là giá trị FALSE, không phải giá trị zero, cũng không phải là chuỗi rỗng)

Ví dụ:

- Tôi có một cái bảng Student như bên dưới:

ID Name Gender Age City
1 Tây Môn Phi Tuyết Nam 19 Cần Thơ
2 Dương Nhật Tuấn Dung Nam 19 An Giang
3 Chu Trúc Thanh Nữ 21 Bạc Liêu

- Khi tôi sử dụng lệnh INSERT INTO Student (ID, Name, Age) VALUES (4, "Đường Tam Tạng", 35); để thêm một hàng mới vào bên trong cái bảng Student thì khi đó cái bảng Student sẽ trở thành:

ID Name Gender Age City
1 Tây Môn Phi Tuyết Nam 19 Cần Thơ
2 Dương Nhật Tuấn Dung Nam 19 An Giang
3 Chu Trúc Thanh Nữ 21 Bạc Liêu
4 Đường Tạm Tạng NULL 35 NULL

⛔ Hai cột Gener & City của sinh viên "Đường Tam Tạng" bị nhận giá trị NULL là bởi vì tôi không gán giá trị cho chúng khi chèn hàng vào bảng.

2) Cách truy xuất những hàng có chứa giá trị NULL

- Giá trị NULL không giống với những loại giá trị thông thường, nếu muốn truy xuất những hàng có chứa giá trị NULL thì khi khai báo 'điều kiện' trong mệnh đề WHERE, chúng ta không thể dùng toán tử dấu bằng = mà thay vào đó là phải sử dụng toán tử IS NULL.

- Tương tự, nếu muốn truy xuất những hàng không có chứa giá trị NULL thì chúng ta không thể sử dụng toán tử khác != mà thay vào đó là phải sử dụng toán tử IS NOT NULL.

- Trong bài học này tôi sẽ lấy cái bảng Student như bên dưới để làm một số ví dụ minh họa.

ID Name Gender Age City
1 Tây Môn Phi Tuyết Nam 19 Cần Thơ
2 Dương Nhật Tuấn Dung Nam 19 NULL
3 Chu Trúc Thanh Nữ 21 Bạc Liêu
4 Đường Tạm Tạng Nam 35 NULL
5 Doãn Quốc Thiên Thanh Nữ 23 Cà Mau
Ví dụ 1:

- Liệt kê những sinh viên có cột City bị nhận giá trị NULL.

SELECT * FROM Student WHERE City IS NULL;

- Sau khi thực thi câu lệnh phía trên thì tôi sẽ lấy được một bảng dữ liệu như bên dưới.

ID Name Gender Age City
2 Dương Nhật Tuấn Dung Nam 19 NULL
4 Đường Tạm Tạng Nam 35 NULL
Ví dụ 2:

- Liệt kê những sinh viên có cột City có giá trị không phải là NULL.

SELECT * FROM Student WHERE City IS NOT NULL;

- Sau khi thực thi câu lệnh phía trên thì tôi sẽ lấy được một bảng dữ liệu như bên dưới.

ID Name Gender Age City
1 Tây Môn Phi Tuyết Nam 19 Cần Thơ
3 Chu Trúc Thanh Nữ 21 Bạc Liêu
5 Doãn Quốc Thiên Thanh Nữ 23 Cà Mau