开发学院

您的位置:首页>教程>正文

教程正文

MariaDB Null值

MariaDB Null值

  使用NULL值时,请记住它们是未知值。它们不是空字符串或零,它们是有效值。在表创建中,列在创建的时候可以设置为是否接受NULL值。只需使用NULL或NOT NULL子句。

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

  •   NULL不区分大小写,具有以下别名:

  •   UNKNOWN (一个布尔值)

  •   \N

NULL操作符

  标准比较运算符不能与NULL一起使用(例如,=,>,> =,< =,<,或!= )因为所有与空值的比较都返回空值,而不是true或false。与NULL值或可能包含NULL值的比较必须使用“< = >”(空值安全)运算符。

  其他可用的操作还有:

  •   IS NULL −测试是否为NULL。

  •   IS NOT NULL − 测试是否不为NULL。

  •   ISNULL −如果是NULL返回1,否则返回0。

  •   COALESCE −返回第一个遇到非NULL值即并返回该值。如果所有的表达式都是空值,则返回一个空值.

排序NULL值

  在排序操作中,NULL值具有最低值,因此DESC order会在底部产生NULL值。MariaDB允许为空值设置更高的值。

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

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函数

  当任何参数为空时,函数通常输出空值。但是,有些函数是专门为管理空值而设计的。

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

  •   NULLIF() − 当比较的表达式相等时,它返回NULL,如果不相等,它返回第一个表达式。

  •   SUM和AVG等函数会忽略空值。

插入NULL值

  在设置为NOT NULL的行中插入NULL值时,会发生错误。在默认SQL模式下,非空列将根据数据类型插入默认值。

  当字段是TIMESTAMP, AUTO_INCREMENT或虚拟列时,MariaDB以不同的方式管理空值。插入带有AUTO_INCREMENT属性的列会导致序列中的下一个数字插入其位置。在TIMESTAMP字段中,MariaDB改为分配当前时间戳。在本教程后面讨论的主题虚拟列中,将分配默认值。

  唯一索引可以保存许多空值,但是主键不能为空。

NULL值和Alter命令

  当使用ALTER命令修改列时,如果没有NULL规范,MariaDB会自动赋值。