MariaDB - Null 值

  • 简述

    使用 NULL 值时,请记住它们是未知值。它们不是空字符串或零,它们是有效值。在表创建中,列规范允许将它们设置为接受空值或拒绝它们。只需使用 NULL 或 NOT NULL 子句。这适用于缺少记录信息(如 ID 号)的情况。
    在显式赋值之前,用户定义的变量的值为 NULL。存储的例程参数和局部变量允许设置 NULL 值。当局部变量没有默认值时,它的值为 NULL。
    NULL 不区分大小写,并具有以下别名 -
    • UNKNOWN(布尔值)
    • \N
  • NULL 运算符

    标准比较运算符不能与 NULL 一起使用(例如,=、>、>=、<=、< 或 !=),因为所有与 NULL 值的比较都返回 NULL,而不是 true 或 false。与 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 会自动分配值。