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命令修改列时,如果没有NULL规范,MariaDB会自动分配值.