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 对于数据库设计和查询优化至关重要。
发表评论