MySQL Hướng dẫn IS NULL & IS NOT NULL với VÍ DỤ

Trong SQL Null vừa là giá trị vừa là từ khóa. Trước tiên hãy xem xét giá trị NULL -

MySQL LÀ NULL & KHÔNG PHẢI LÀ NULL

Null như một giá trị

Nói một cách đơn giản, NULL chỉ đơn giản là nơi giữ chỗ cho dữ liệu không tồn tại. Khi thực hiện các thao tác chèn trên bảng, sẽ có lúc một số giá trị trường không có sẵn.

Để đáp ứng các yêu cầu của hệ thống quản lý cơ sở dữ liệu quan hệ thực sự, MySQL sử dụng NULL làm phần giữ chỗ cho các giá trị chưa được gửi. Ảnh chụp màn hình bên dưới cho thấy giá trị NULL trông như thế nào trong cơ sở dữ liệu.

Null như một giá trị

Bây giờ chúng ta hãy xem xét một số điều cơ bản về NULL trước khi chúng ta đi sâu hơn vào cuộc thảo luận.

  • NULL không phải là kiểu dữ liệu – điều này có nghĩa là nó không được công nhận là “int”, “date” hoặc bất kỳ loại dữ liệu được xác định nào khác.
  • Các phép tính toán học liên quan đến NULL luôn luôn trả về giá trị rỗng ví dụ: 69 + NULL = NULL.
  • Tất cả Chức năng tổng hợp chỉ ảnh hưởng đến các hàng không có giá trị NULL.

Bây giờ chúng ta hãy chứng minh cách hàm đếm xử lý các giá trị null. Hãy xem nội dung hiện tại của bảng thành viên-

SELECT * FROM `members`;

Thực hiện đoạn mã trên sẽ cho chúng ta kết quả sau

membership_ number full_ names gender date_of_ birth physical_ address postal_ address contact_ number email
1 Janet Jones Female 21-07-1980 First Street Plot No 4 Private Bag 0759 253 542 janetjones@yagoo.cm
2 Janet Smith Jones Female 23-06-1980 Melrose 123 NULL NULL jj@fstreet.com
3 Robert Phil Male 12-07-1989 3rd Street 34 NULL 12345rm@tstreet.com
4 Gloria Williams Female 14-02-1984 2nd Street 23 NULL NULL NULL
5 Leonard Hofstadter MaleNULL Woodcrest NULL 845738767 NULL
6 Sheldon Cooper Male NULL Woodcrest NULL 976736763 NULL
7 Rajesh Koothrappali Male NULL Woodcrest NULL 938867763 NULL
8 Leslie Winkle Male 14-02-1984 Woodcrest NULL 987636553 NULL
9 Howard Wolowitz Male 24-08-1981 SouthPark P.O. Box 4563 987786553 lwolowitz[at]email.me

Hãy đếm tất cả các thành viên đã cập nhật contact_number của họ

SELECT COUNT(contact_number)  FROM `members`;

Thực hiện truy vấn trên sẽ cho chúng ta kết quả sau.

COUNT(contact_number)
7

Lưu ý: Các giá trị NULL chưa được đưa vào

Cái gì không?

Toán tử logic NOT được sử dụng để kiểm tra các điều kiện Boolean và trả về true nếu điều kiện đó sai. Toán tử NOT trả về false nếu điều kiện được kiểm tra là đúng

Điều kiện KHÔNG Operakết quả tor
Thật Sai
Sai Thật

Tại sao sử dụng KHÔNG null?

Sẽ có trường hợp chúng ta phải thực hiện tính toán trên tập kết quả truy vấn và trả về các giá trị. Thực hiện bất kỳ phép tính số học nào trên các cột có giá trị NULL đều trả về kết quả null. Để tránh những tình huống như vậy xảy ra, chúng tôi có thể sử dụng mệnh đề NOT NULL để giới hạn kết quả mà dữ liệu của chúng tôi vận hành.

KHÔNG có giá trị NULL

Giả sử rằng chúng ta muốn tạo một bảng với các trường nhất định phải luôn được cung cấp các giá trị khi chèn các hàng mới vào bảng. Chúng ta có thể sử dụng mệnh đề NOT NULL trên một trường nhất định khi tạo bảng.

Ví dụ hiển thị bên dưới tạo một bảng mới chứa dữ liệu của nhân viên. Mã số nhân viên phải luôn được cung cấp

CREATE TABLE `employees`(
  employee_number int NOT NULL,
  full_names varchar(255) ,
  gender varchar(6)
);

Bây giờ hãy thử chèn một bản ghi mới mà không chỉ định tên nhân viên và xem điều gì sẽ xảy ra.

INSERT INTO `employees` (full_names,gender) VALUES ('Steve Jobs', 'Male');

Thực thi đoạn script trên trong MySQL workbench đưa ra lỗi sau:

KHÔNG có giá trị NULL

Từ khóa không có giá trị

NULL cũng có thể được sử dụng làm từ khóa khi thực hiện các phép toán Boolean trên các giá trị bao gồm NULL. Từ khóa “IS/NOT” được sử dụng cùng với từ NULL cho những mục đích như vậy. Cú pháp cơ bản khi sử dụng null làm từ khóa như sau

`comlumn_name'  IS NULL
`comlumn_name' NOT NULL

tại ĐÂY

  • “LÀ KHÔNG là từ khóa thực hiện so sánh Boolean. Nó trả về true nếu giá trị được cung cấp là NULL và trả về false nếu giá trị được cung cấp không phải là NULL.
  • "CÓ GIÁ TRỊ"là từ khóa thực hiện so sánh Boolean. Nó trả về true nếu giá trị được cung cấp không phải là NULL và trả về false nếu giá trị được cung cấp là null.

Bây giờ chúng ta hãy xem một ví dụ thực tế sử dụng từ khóa NOT NULL để loại bỏ tất cả các giá trị cột có giá trị null.

Tiếp tục với ví dụ trên, giả sử chúng ta cần thông tin chi tiết về các thành viên có số liên lạc không phải là null. Chúng ta có thể thực hiện truy vấn như sau

SELECT * FROM `members` WHERE contact_number IS NOT NULL;

Việc thực hiện truy vấn trên chỉ cung cấp các bản ghi có số liên lạc không rỗng.

Giả sử chúng ta muốn các bản ghi thành viên có số liên lạc là null. Chúng ta có thể sử dụng truy vấn sau

SELECT * FROM `members` WHERE contact_number IS NULL;

Thực hiện truy vấn trên sẽ cung cấp thông tin chi tiết về thành viên có số liên lạc là NULL

membership_ number full_names gender date_of_birth physical_address postal_address contact_ number email
1 Janet Jones Female 21-07-1980 First Street Plot No 4 Private Bag 0759 253 542 janetjones@yagoo.cm
3 Robert Phil Male 12-07-1989 3rd Street 34 NULL 12345 rm@tstreet.com
5 Leonard Hofstadter Male NULL Woodcrest NULL 845738767 NULL
6 Sheldon Cooper Male NULL Woodcrest NULL 976736763 NULL
7 Rajesh Koothrappali Male NULL Woodcrest NULL 938867763 NULL
8 Leslie Winkle Male 14-02-1984 Woodcrest NULL 987636553 NULL
9 Howard Wolowitz Male 24-08-1981 SouthPark P.O. Box 4563 987786553 lwolowitz[at]email.me

So sánh giá trị null

Logic ba giá trị – thực hiện các phép toán Boolean với các điều kiện liên quan đến NULL có thể trả về “Không xác định”, “Đúng” hoặc “Sai”.

Ví dụ, sử dụng từ khóa “IS NULL” khi thực hiện các thao tác so sánh liên quan đến NULL có thể trở lại đúng or sai. Sử dụng các toán tử so sánh khác trả về “Không xác định”(NULL).

Giả sử bạn so sánh số năm với số 5

SELECT 5 =5;

Kết quả truy vấn là 1 có nghĩa là TRUE

5 =5
1

Hãy thực hiện thao tác tương tự với NULL

SELECT NULL = NULL;
NULL = NULL
NULL

Hãy xem một ví dụ khác

SELECT 5 > 5;
5 > 5
0

Kết quả truy vấn là 0 có nghĩa là FALSE

Hãy xem ví dụ tương tự bằng cách sử dụng NULL

SELECT NULL > NULL;
NULL > NULL
NULL

Hãy sử dụng từ khóa IS NULL

SELECT 5 IS NULL;
5 IS NULL
0

Kết quả truy vấn là 0 là FALSE

SELECT NULL IS NULL;

NULL IS NULL
1

Kết quả truy vấn là 1 là TRUE

Tổng kết

  • NULL là phần giữ chỗ giá trị cho các trường bảng tùy chọn.
  • MySQL xử lý giá trị NULL khác với các loại dữ liệu khác. Các giá trị NULL khi được sử dụng trong một điều kiện sẽ đánh giá thành giá trị Boolean sai.
  • Phép toán logic NOT được sử dụng để kiểm tra các giá trị Boolean và đánh giá là đúng nếu giá trị Boolean là sai và sai nếu giá trị Boolean là đúng.
  • Mệnh đề NOT NULL được sử dụng để loại bỏ các giá trị NULL khỏi tập kết quả
  • Thực hiện các phép tính số học trên các giá trị NULL luôn trả về kết quả NULL.
  • Các toán tử so sánh như [, =, v.v.] không thể được sử dụng để so sánh các giá trị NULL.