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
NULL - giá trị
Nói một cách đơn giản, NULL chỉ đơn giản là một ngườ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 các bảng, những lúc mà giá trị chưa xác định thì ta sử dụng NULL.
Để đá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 chủ sở hữu vị trí 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.
Bây giờ chúng ta hãy xem xét một số điều cơ bản cho NULL trước khi chúng ta đi sâu vào cuộc thảo luận.
- NULL không phải là loại dữ liệu - điều này có nghĩa là nó không được nhận dạng 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 toán số học liên quan đến NULL luôn trả về NULL chẳng hạn, 69 + NULL = NULL.
- Tất cả các hàm 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 hàm đếm xử lý các giá trị null. Chúng ta 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 script trên cho chúng ta kết quả như 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 | 12345 | rm@tstreet.com |
4 | Gloria Williams | Female | 14-02-1984 | 2nd Street 23 | NULL | NULL | NULL |
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 |
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 các truy vấn trên cho chúng ta các kết quả sau.
Lưu ý: Các giá trị NULL chưa được tính vào
NOT là gì?
Toán tử logic logic được sử dụng để kiểm tra các điều kiện Boolean và trả về true nếu điều kiện này là false. Toán tử NOT trả về false nếu điều kiện được kiểm tra là đúng
Điều kiện
|
Kết quả toán tử NOT
|
True
|
False
|
False
|
True
|
Tại sao sử dụng NOT NULL?
Sẽ có trường hợp khi chúng ta sẽ 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ỳ hoạt động số học nào trên các cột có giá trị NULL 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 đề KHÔNG NULL để giới hạn kết quả mà dữ liệu của chúng tôi hoạt động.
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 một 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. Số lượng 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ờ chúng ta 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 mã trên trong bàn làm việc của MySQL sẽ báo lỗi sau -
Từ khóa NULL
NULL cũng có thể được sử dụng làm từ khóa khi thực hiện các thao tác Boolean trên các giá trị bao gồm NULL. Từ khóa "IS / KHÔNG" được sử dụng cùng với từ NULL cho các mục đích đó. Cú pháp cơ bản khi null được sử dụng làm từ khóa như sau
`comlumn_name' IS NULL
`comlumn_name' NOT NULL
ĐÂY
- "IS NULL" 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à false nếu giá trị được cung cấp không phải là NULL.
- "KHÔNG NULL" 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à 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 KHÔNG 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 chi tiết về các thành viên có số liên lạc không phải là null. Chúng tôi có thể thực hiện một truy vấn như
SELECT * FROM `members` WHERE contact_number IS NOT NULL;
Thực hiện truy vấn trên chỉ cung cấp các bản ghi trong đó số liên lạc không phải là null.
Giả sử chúng tôi muốn hồ sơ thành viên trong đó số liên lạc là null. Chúng tôi có thể sử dụng truy vấn sau đây
SELECT * FROM `members` WHERE contact_number IS NULL;
Thực hiện truy vấn trên cung cấp chi tiết 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
Ba giá trị logic - thực hiện các thao tác Boolean trong các điều kiện liên quan đến NULL có thể trả về "Unknown", "True" or "False".
Ví dụ: sử dụng từ khóa "IS NULL" khi thực hiện các hoạt động so sánh liên quan đến NULL có thể trả về giá trị True hoặc . Sử dụng các toán tử so sánh khác trả về "Unknown" (NULL).
Giả sử bạn so sánh số năm với 5
SELECT 5 =5;
Kết quả truy vấn là 1 có nghĩa là ĐÚNG
Hãy thực hiện thao tác tương tự với NULL
SELECT NULL = NULL;
Hãy xem xét một ví dụ khác
Kết quả truy vấn là 0 có nghĩa là SAI
Hãy xem xét ví dụ tương tự bằng cách sử dụng NULL
SELECT NULL > NULL;
Cho phép sử dụng từ khóa IS NULL
Kết quả truy vấn là 0, là FALSE
Kết quả truy vấn là 1 là TRUE
Tóm lược
- NULL là một trình 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á giá trị Boolean sai.
- Hoạt động logic KHÔNG đượ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 toán 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.
Đăng nhận xét