NULL 在 MySQL 中的含义
NULL 是 MySQL 中的一个特殊值,表示“未知”或“不存在”的数据。它不是空字符串、0 或任何其他默认值,而是一个独立的概念,用于标记缺失或未定义的数据。
NULL 的特性
NULL 与任何其他值的比较结果均为 NULL,包括与自身的比较。例如NULL = NULL的结果是 NULL,而不是 TRUE。判断是否为 NULL 必须使用IS NULL或IS NOT NULL运算符。
SELECT * FROM table_name WHERE column_name IS NULL;NULL 与空值的区别
空值(如空字符串''或数字0)是具体的值,而 NULL 表示“无值”。例如:
- 空字符串
''是长度为 0 的字符串。 - 数字
0是一个具体的数值。 - NULL 表示该字段未被赋值或未知。
处理 NULL 的函数
MySQL 提供了多个函数处理 NULL 值:
IFNULL(expr1, expr2):如果expr1为 NULL,则返回expr2。COALESCE(expr1, expr2, ...):返回第一个非 NULL 的表达式。NULLIF(expr1, expr2):如果expr1等于expr2,则返回 NULL,否则返回expr1。
SELECT COALESCE(column_name, 'default_value') FROM table_name;NULL 在索引中的行为
唯一索引(UNIQUE)允许包含多个 NULL 值,因为 NULL 被视为未知值,不违反唯一性约束。但主键(PRIMARY KEY)不允许 NULL 值。
默认值与 NULL
如果列定义为NOT NULL,则必须显式指定默认值或插入时提供值,否则会报错。例如:
CREATE TABLE example ( id INT NOT NULL, name VARCHAR(100) DEFAULT 'unknown' );总结
NULL 是 MySQL 中表示缺失或未知数据的特殊标记。正确理解和使用 NULL 对于数据库设计和查询优化至关重要。