对数据库世界不熟悉的用户经常会被特定于该字段的特殊值混淆 - NULL值。该值可以在包含任何类型数据的字段中找到,并且在关系数据库的上下文中具有非常特殊的含义。最好开始讨论NULL,并简单介绍一下NULL是什么 不 :
- NULL不是数字零。
- NULL不是空字符串(“”)值。
相反,NULL是用于表示未知数据的值。通常,数据库程序员将使用短语“a NULL value”,但这是不正确的。请记住:NULL是一个未知值,其中字段显示为空白。
真实世界中的NULL
让我们看一个简单的例子:一个包含水果摊的库存的表。假设我们的库存包含10个苹果和3个橙子。我们还库存李子,但我们的库存信息不完整,我们不知道有多少(如果有的话)李子有库存。使用NULL值,我们将拥有下表中显示的库存表。
水果摊库存
InventoryID | 项目 | 数量 |
1 | 苹果 | 10 |
2 | 桔子 | 3 |
3 | 李子 | 空值 |
为李子记录包含0的数量显然是不正确的,因为这意味着我们有 没有 李子库存。相反,我们可能会有一些李子,但我们只是不确定。 可以将表设计为允许NULL值或不允许NULL值。 这是一个SQL示例,它创建一个允许一些NULL的Inventory表: SQL> CREATE TABLE INVENTORY(InventoryID INT NOT NULL,Item VARCHAR(20)NOT NULL,Quantity INT); 此处的库存表不允许使用NULL值 InventoryID 和 项目 列,但确实允许它们 数量 柱。 虽然允许NULL值完全正常,但NULL值可能会导致问题,因为任何一个为NULL的值的比较总是会导致NULL。 要检查表是否包含NULL值,请使用IS NULL或IS NOT NULL运算符。以下是IS NULL的示例: SQL> SELECT INVENTORYID,ITEM,QUANTTITY FROM INVENTORY,QUANTITY NOT NOT NULL; 鉴于我们的示例,这将返回: 使用NULL值通常会产生NULL结果,具体取决于SQL操作。例如,假设A为NULL: 算术运算符 比较运算符 这些只是运营商的一些例子 总是 如果一个操作数为NULL,则返回NULL。存在更复杂的查询,并且所有查询都被NULL值复杂化。回家点是,如果您在数据库中允许NULL值,请了解其含义和计划。 简而言之,这是空的!要NULL还是NOT NULL?
InventoryID 项目 数量 3 李子
在NULL上运行