NULL là giá trị không xác định, khác hoàn toàn với 0 hay chuỗi rỗng — NULL = NULL trả về NULL (không phải TRUE), phải dùng IS NULL/IS NOT NULL; aggregate functions bỏ qua NULL tự động.
- NULL trong SQL đại diện cho giá trị không xác định hoặc thiếu — hoàn toàn khác với số 0, chuỗi rỗng
'', hayfalse. - Đây là nguồn gốc của nhiều bug khó phát hiện.
- Kiểm tra NULL phải dùng
IS NULL/IS NOT NULL, tuyệt đối không dùng= NULLvìNULL = NULLtrả về NULL (không phải TRUE), khiến WHERE clause không match gì cả. - Aggregate functions như
SUM(),AVG(),MAX()tự động bỏ qua NULL —AVG(score)chỉ tính trung bình các hàng có giá trị, không tính NULL là 0. - Xử lý NULL khi select:
COALESCE(phone, 'N/A')trả về giá trị đầu tiên không NULL.
Pitfall trong JOIN: nếu foreign key có NULL, INNER JOIN sẽ loại bỏ hàng đó — dùng LEFT JOIN và kiểm tra NULL trong kết quả.