首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL NULL 值完整指南:概念釐清、操作陷阱與最佳實務

     編輯:MySQL 資料庫相關知識

NULL 是 SQL 新手最易混淆的概念。許多人誤以為 NULL 等同空字串 '',實則大相逕庭。本文系統整理 NULL 的行為特徵、正確操作方式與常見陷阱。

NULL vs 空字串:語意差異

INSERT INTO my_table (phone) VALUES (NULL);    -- 電話號碼「未知」
INSERT INTO my_table (phone) VALUES ('');      -- 「沒有電話」,確定為空

前者代表資料缺失,後者代表明確的空值。

正確的 NULL 判斷方式

NULL 的運算特性

  • 任何與 NULL 運算(含比較)結果皆為 NULL
  • SELECT NULL, 1+NULL, CONCAT('Invisible', NULL) → 全部回傳 NULL
  • 例外:IFNULL()、COALESCE() 可處理 NULL

索引與 NULL

  • MyISAM、InnoDB、BDB、MEMORY 引擎允許 NULL 欄位建立索引
  • 其他引擎需宣告 NOT NULL 才能建索引

資料匯入與 NULL

  • LOAD DATA INFILE:空值或缺失欄位預設寫入 ''
  • 需寫入 NULL 時,資料檔使用 \N 或字面值 NULL

排序與分組行為

  • DISTINCT、GROUP BY、ORDER BY 視所有 NULL 為相等
  • ORDER BY ASC:NULL 排最前;DESC:NULL 排最後

聚合函數處理

  • COUNT()、MIN()、SUM() 忽略 NULL 值
  • COUNT(*) 計算列數(含 NULL),COUNT(col) 計算非 NULL 個數
  • 範例:SELECT COUNT(*), COUNT(age) FROM person

特殊欄位類型的 NULL 行為

  • TIMESTAMP 欄位插入 NULL → 自動填入目前日期時間
  • AUTO_INCREMENT 整數欄位插入 NULL → 填入下一個序號

掌握 NULL 語意與操作規則,能避免查詢邏輯錯誤,確保資料完整性與業務正確性。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
操作目的正確語法錯誤語法
尋找 NULL 值WHERE phone IS NULLWHERE phone = NULL(永遠不會匹配)
尋找非 NULL 值WHERE phone IS NOT NULLWHERE phone != NULL
尋找空字串WHERE phone = ''—