Hướng dẫn tìm hiểu về NULL và NOT NULL trong MySQL

Đội ngũ Gitiho
16 May 2020

Trong MySQL, NULL vừa là giá trị và vừa là từ khóa.

Giá trị NULL

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

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

Trước hết chúng ta sẽ xem xét một số điều cơ bản về giá trị NULL trước khi đi sâu vào tìm hiểu nó :

  • NULL không phải là một kiểu dữ liệu – điều này có nghĩa là nó không được nhận dạng như là một kiểu số tự nhiên “int”, kiểu dữ liệu ngày “date” hay 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. Ví dụ: 69 + NULL = NULL.
  • Tất cả các hàm tổng chỉ ảnh hưởng đến các hàng không có giá trị NULL

Bây giờ chúng ta sẽ đi chứng minh rằng các hàm đếm xử lý các giá trị NULL. Bạn có thể tải dữ liệu “myflixdb” tại đây để thực hiện trong MySQL:

https://drive.google.com/uc?export=download&id=0B_vqvT0ovzHccjhtdGlrZ0MtZ0k

Thực hiện câu truy vấn sau để xem nội dung hiện tại của bảng members trong  “myflixdb”:

Kết quả sẽ hiện ra như sau:

Đếm số lượng tất cả các thành viên đã cập nhật số liên lạc của họ:

Thực hiện truy vấn trên cho ra kết quả sau:

Lưu ý: Giá trị NULL đã không được tính vào kết quả trên. 

NOT là gì?

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

Điều kiệnKết quả toán tử NOT
TrueFalse
FalseTrue

Tại sao chúng ta lại sử dụng NOT NULL?

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

Giá trị NOT NULL

Giả sử rằng chúng ta muốn tạo một bảng mới với với các trường nhất định mà luôn phải được cung cấp các giá trị khi chèn những 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ụ 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 (employee_number) luôn phải được cung cấp.

Bây giờ chúng ta sẽ thử chèn một bản ghi mới mà không chỉ định mã số nhân viên và xem thử chuyện gì xảy ra:

Thực thi câu lệnh trên trong MySQL sẽ hiển thị lỗi sau:

Từ khóa NULL

NULL có thể còn được sử dụng như một từ khóa khi thực thi các toán tử Boolean trên các giá trị có 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 này. Cú pháp đơn giản khi sử dụng NULL như một từ khóa như sau:

Trong đó:

  • “IS NULL” là từ khóa thực hiện so sánh Boolean. Nó trả về true nếu giá trị cung cấp là NULL và trả về false nếu giá trị cung cấp không phải là NULL
  • “NOT NULL” là từ khóa thực hiện so sánh Boolean. Nó trả về true nếu giá trị cung cấp không phải là NULL và trả về false nếu giá trị cung cấp là NULL

Hãy xem xét một ví dụ sử dụng từ khóa NOT NULL để loại bỏ tất cả cột có giá trị là NULL

Giả sử chúng ta cần chi tiết về những thành viên có số liên lạc không phải là NULL. Thực hiện câu truy vấn sau:

Thực hiện câu lệnh trên sẽ cho ra các bản ghi trong đó số liên lạc không phải là NULL.

Trong trường hợp chúng ta muốn hồ sơ các thành viên có số liên lạc là NULL. Có thể sử dụng truy vấn sau:

Kết quả sẽ hiện ra trong MySQL:

So sánh các giá trị NULL

Ba giá trị logic – thực hiện các toán tử Boolean trong các điều kiện liên quan đến NULL có thể trả về “Unknown”, “True” hoặc “False”.

Ví dụ, sử dụng từ khóa “IS NULL” khi thực hiện các toán tử so sánh liên quan đến NULL có thể trả về true hoặc false. Sử dụng những toán tử so sánh không liên quan đến NULL trả về “Unknown”(NULL)

Giả sử bạn đang so sánh 5 với 5:

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

Làm điều này tương tự với NULL:

Hãy xem xét các ví dụ khác:

Kết quả trả về là 0 có nghĩa là FALSE.

Làm tương tự với NULL:

Lần này chúng ta sử dụng từ khóa IS NULL:

Kết quả trả về là 0 có nghĩa là FALSE.

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

Tổng kết

  • NULL là giá trị giữ chỗ 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. Giá trị NULL được xử dụng như là một điều kiện đánh giá false giá trị Boolean.
  • Toán tử NOT được dùng để kiểm tra các giá trị Boolean và đánh giá true nếu giá trị Boolean là sai và false 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 giá trị NULL luôn luôn trả về kết quả NULL.
  • Toán tử so sánh như là [>,=,…] không thể được dùng để so sánh các giá trị NULL.

Ngoài ra bạn có thể truy cập ngay https://gitiho.com/ để tìm hiểu thêm nhiều các khóa học hay về tin học văn phòng: Excel, Power Point, lập trình VBA, lập trình C#, SQL, thiết kế đồ họa… Có rất nhiều ưu đãi hấp dẫn đang chờ bạn.

Các bạn có thể tham khảo thêm các bài viết khác về cách sử dụng MySQL:

Hướng dẫn sử dụng câu lệnh SELECT trong MySQL qua các ví dụ

Hướng dẫn câu lệnh DELETE trong MySQL và ví dụ minh họa

Hướng dẫn cách dùng mệnh đề WHERE trong MySQL

Đánh giá bài viết này
@ 2020 - Bản quyền của Công ty TNHH Công Nghệ Giáo Dục Gitiho Việt Nam
Giấy chứng nhận Đăng ký doanh nghiệp số: 0109077145, cấp bởi Sở kế hoạch và đầu tư TP. Hà Nội