Bạn nên biết gì về giá trị NULL

Hiểu việc sử dụng NULL để tránh các vấn đề về cơ sở dữ liệu

Người dùng mới vào thế giới của cơ sở dữ liệu thường bị nhầm lẫn bởi một giá trị đặc biệt cụ thể cho trường - giá trị NULL. Giá trị này có thể được tìm thấy trong một trường có chứa bất kỳ loại dữ liệu nào và có một ý nghĩa rất đặc biệt trong ngữ cảnh của một cơ sở dữ liệu quan hệ. Nó có lẽ là tốt nhất để bắt đầu thảo luận của chúng ta về NULL với một vài từ về những gì NULL không :

Thay vào đó, NULL là giá trị được sử dụng để biểu diễn một phần dữ liệu không xác định. Thông thường, các lập trình viên cơ sở dữ liệu sẽ sử dụng cụm từ "một giá trị NULL", nhưng điều này là không chính xác. Hãy nhớ rằng: NULL là một giá trị không xác định trong đó trường xuất hiện trống.

NULL trong thế giới thực

Chúng ta hãy xem xét một ví dụ đơn giản: một bảng chứa khoảng không quảng cáo cho một giá hoa quả. Giả sử rằng khoảng không quảng cáo của chúng tôi chứa 10 quả táo và 3 quả cam. Chúng tôi cũng cung cấp mận, nhưng thông tin tồn kho của chúng tôi là không đầy đủ và chúng tôi không biết có bao nhiêu (nếu có) mận đang có trong kho. Sử dụng giá trị NULL, chúng ta sẽ có bảng kiểm kê được hiển thị trong bảng bên dưới.

Trái cây đứng hàng tồn kho

InventoryID Mục Số lượng
1 Táo 10
2 Những quả cam 3
3 Mận VÔ GIÁ TRỊ


Nó sẽ rõ ràng là không chính xác để bao gồm một số lượng 0 cho bản ghi mận, bởi vì điều đó có nghĩa là chúng ta không có mận trong kho. Ngược lại, chúng tôi có thể có một số mận, nhưng chúng tôi không chắc chắn.

Để NULL hoặc NOT NULL?

Một bảng có thể được thiết kế để cho phép giá trị NULL hay không.

Dưới đây là một ví dụ SQL tạo ra một bảng Inventory cho phép một số NULL:

SQL CREATE TABLE INVENTORY (InventoryID INT NOT NULL, Item VARCHAR (20) NOT NULL, Số lượng INT);

Bảng khoảng không quảng cáo ở đây không cho phép giá trị NULL cho cột InventoryID và cột Mục , nhưng cho phép chúng cho cột Số lượng .

Trong khi cho phép một giá trị NULL là hoàn toàn tốt, giá trị NULL có thể gây ra vấn đề bởi vì bất kỳ so sánh các giá trị trong đó một là NULL luôn luôn dẫn đến NULL.

Để kiểm tra xem bảng của bạn có chứa giá trị NULL không, sử dụng toán tử IS NULL hoặc IS NOT NULL. Đây là một ví dụ về IS NULL:

SQL SELECT INVENTORYID, ITEM, SỐ LƯỢNG TỪ INVENTORY WHERE QUANTITY IS NOT NULL;

Với ví dụ của chúng tôi ở đây, điều này sẽ trả về:

InventoryID Mục Số lượng
3 Mận

Hoạt động trên NULL

Làm việc với các giá trị NULL thường tạo ra các kết quả NULL, tùy thuộc vào hoạt động SQL . Ví dụ, giả định rằng A là NULL:

Toán tử số học

Toán tử so sánh

Đây chỉ là một số ví dụ về các toán tử sẽ luôn trả về NULL nếu một toán hạng là NULL. Nhiều truy vấn phức tạp hơn tồn tại, và tất cả đều phức tạp bởi các giá trị NULL. Điểm mang về nhà là, nếu bạn cho phép giá trị NULL trong cơ sở dữ liệu của bạn, hãy hiểu ý nghĩa và kế hoạch cho chúng.

Đó là NULL trong một nutshell!