📜  MariaDB-空值

📅  最后修改于: 2020-11-27 05:33:52             🧑  作者: Mango


使用NULL值时,请记住它们是未知值。它们不是空字符串或零,它们是有效值。在表创建中,列规范允许将其设置为接受空值或拒绝它们。只需利用NULL或NOT NULL子句。在缺少诸如ID号之类的记录信息的情况下,这种方法很有用。

在明确分配之前,用户定义的变量的值为NULL。存储的例程参数和局部变量允许将值设置为NULL。当局部变量没有默认值时,其值为NULL。

NULL不区分大小写,并具有以下别名-

  • UNKNOWN(布尔值)
  • \ N

空运算符

标准的运算符不能与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值。他们是-

  • 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自动分配值。