在数据库中,NULL值具有非常特殊的含义。因此,重要的是要理解NULL值不同于零值或包含空格的字段。在今天的博客中,我们将探讨NULL值的含义以及如何在 Navicat Premium 中使用NULL。
什么是NULL?
应该注意的是,NULL值不是数据库唯一的。在大多数计算机编程语言中也都可以找到它,它演变成值为零的内置常数。实际上,是字符0终止了C语言中的字符串。但是,随着时间的流逝,它的意思是“什么也没有”。具体来说,NULL是指向表示NULL的特殊位模式的指针。这就是通常所说的“null pointer”。
在数据库中,零是一个有意义的值,因此NULL变成一个特殊的标记,表示不存在任何值。从这种意义上讲,NULL不像在编程语言中那样指向存储位置。在数据库中,NULL值表示缺少值,这与零值不同。为了说明,请考虑以下问题:“Rob拥有多少CD?”答案可能是“零”(0)或NULL。在后一种情况下,NULL值可能意味着我们不知道Rob拥有多少CD。以后,一旦我们确定了Rob拥有的CD数量,就可以使用数字值更新该值。
允许将NULL作为列值
任何属于键值的列都不允许使用NULL,但是对于其他字段,则完全由您决定。在创建表时,在列定义旁边包含NOT NULL子句将强制用户在INSERT和UPDATE操作中为该列包含一个值。否则,将引发错误,并且操作将失败。Navicat Premium 的“表设计”界面包括“不为空”列,用于将字段指定为可为空或不可为空。这是Navicat 15的新深色模式:
在新字段上,将自动取消选中“不是 null”复选框。
在查询中引用NULL值
编写查询时,有时您会希望过滤出具有NULL值的行。其他时候,您会特别想检索包含NULL的行。 这是两种方法的结合:
查询可以使用IS NOT NULL子句过滤掉null。这是一个示例,该示例从Sakila数据库中排除了original_language_id列中值为NULL的电影:
同样,您可以通过从NOT NULL子句中删除NOT来找出哪些行包含NULL值。现在,仅返回那些original_language_id列为NULL值的行:
总结
在今天的博客中,我们探讨了NULL值的含义以及如何在关系数据库中使用此特殊值。
有兴趣了解有关Navicat Premium的更多信息吗?您完全可以免费试用14天,以进行评估!