MariaDB - Null 空值

使用 NULL 值时,请记住它们是未知值。 它们不是空字符串或零,它们是有效值。 在表创建中,列规范允许将它们设置为接受空值或拒绝它们。 只需使用 NULL 或 NOT NULL 子句。 这适用于丢失 ID 号等记录信息的情况。

在显式赋值之前,用户定义变量的值为 NULL。 存储例程参数和局部变量允许设置 NULL 值。 当局部变量没有默认值时,它的值为 NULL。

NULL 不区分大小写,有以下别名 −

  • UNKNOWN (a boolean value)
  • \N

NULL 运算符

标准比较运算符不能与 NULL(例如 =, >, >=, <=, <, 或 !=)一起使用,因为所有与 NULL 值的比较都返回 NULL,而不是真或假。 与 NULL 或可能包含它的比较必须使用 "<=>" (NULL-SAFE) 运算符。

其他可用的运算符是 −

  • IS NULL − 它测试 NULL 值。

  • IS NOT NULL − 它确认不存在 NULL 值。

  • ISNULL − 它在发现 NULL 值时返回值 1,在不存在时返回 0。

  • COALESCE − 它返回列表的第一个非 NULL 值,或者在没有值的情况下返回 NULL 值。


对 NULL 值进行排序

在排序操作中,NULL 值具有最低值,因此 DESC 顺序导致底部的 NULL 值。 MariaDB 允许为 NULL 值设置更高的值。

有两种方法可以做到这一点,如下所示−

SELECT column1 FROM product_tbl ORDER BY ISNULL(column1), column1;

另一种方式 −

SELECT column1 FROM product_tbl ORDER BY IF(column1 IS NULL, 0, 1), column1 DESC;

NULL 函数

函数通常在任何参数为 NULL 时输出 NULL。 但是,有专门为管理 NULL 值而设计的函数。 他们是 −

  • IFNULL() − 如果第一个表达式不是 NULL,则返回它。 当它的计算结果为 NULL 时,它返回第二个表达式。

  • NULLIF() − 当比较的表达式相等时返回 NULL,否则返回第一个表达式。

SUM 和 AVG 等函数会忽略 NULL 值。


插入 NULL 值

在声明为 NOT NULL 的列中插入 NULL 值时,会发生错误。 在默认 SQL 模式下,NOT NULL 列将改为插入基于数据类型的默认值。

当字段是 TIMESTAMP、AUTO_INCREMENT 或虚拟列时,MariaDB 以不同方式管理 NULL 值。 在 AUTO_INCREMENT 列中插入会导致序列中的下一个数字插入其位置。 在 TIMESTAMP 字段中,MariaDB 分配当前时间戳。 在虚拟列(本教程稍后讨论的主题)中,分配了默认值。

UNIQUE 索引可以包含多个 NULL 值,但是主键不能为 NULL。

NULL 值和 Alter 命令

当您使用 ALTER 命令修改列时,在没有指定 NULL 的情况下,MariaDB 会自动赋值。