你应该知道NULL值

了解使用NULL来避免数据库问题

新的数据库世界的用户常常被特定的字段值 - NULL值所困惑。 该值可以在包含任何类型数据的字段中找到,并且在关系数据库的上下文中具有非常特殊的含义。 最好用几个关于NULL 不是什么的话来开始我们对NULL的讨论:

相反,NULL是用来表示未知数据的值。 通常,数据库程序员会使用短语“一个NULL值”,但这是不正确的。 请记住:NULL是未知的值,其中该字段显示为空白。

真实世界中的NULL

我们来看一个简单的例子:一个包含水果摊的库存的表。 假设我们的库存包含10个苹果和3个桔子。 我们也储存李子,但我们的库存信息不完整,我们不知道有多少(如果有)李子库存。 使用NULL值,我们可以在下表中显示库存表。

水果摊位清单

InventoryID 项目 数量
1 苹果 10
2 桔子 3
3 李子 空值


将李子记录的数量设为0显然是不正确的,因为这意味着我们在库存中没有李子。 相反,我们可能会有一些李子,但我们不确定。

为NULL或NOT NULL?

表可以设计为允许或不允许NULL值。

以下是创建允许一些NULL的Inventory表的SQL示例:

SQL> CREATE TABLE INVENTORY(InventoryID INT NOT NULL,Item VARCHAR(20)NOT NULL,Quantity INT);

此处的Inventory表不允许InventoryIDItem列的NULL值,但确实允许它们用于Quantity列。

虽然允许NULL值非常好,但NULL值可能会导致问题,因为任何一个值为NULL的值的比较总是会导致NULL。

要检查您的表是否包含NULL值,请使用IS NULL或IS NOT NULL运算符。 这是一个IS NULL的例子:

SQL> SELECT INVENTORYID,ITEM,QUANTITY FROM INVENTORY WHER QUANTITY NOT NOT NULL;

以我们的例子为例,这将返回:

InventoryID 项目 数量
3 李子

在NULL上运行

使用NULL值通常会生成NULL结果,具体取决于SQL操作 。 例如,假设A是NULL:

算术运算符

比较运算符

这些只是运算符的一些示例,如果一个操作数为NULL,它将始终返回NULL。 存在更复杂的查询,并且所有查询都由NULL值复杂化。 回家的要点是,如果你在数据库中允许NULL值,理解它们的含义和计划。

简而言之,这是NULL