Skip to main content

NULL值的定义和正确使用

命中註定一個你/陳怡婷 (四月 2024)

命中註定一個你/陳怡婷 (四月 2024)
Anonim

对数据库世界不熟悉的用户经常会被特定于该字段的特殊值混淆 - NULL值。该值可以在包含任何类型数据的字段中找到,并且在关系数据库的上下文中具有非常特殊的含义。最好开始讨论NULL,并简单介绍一下NULL是什么 不 :

  • NULL不是数字零。
  • NULL不是空字符串(“”)值。

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

    真实世界中的NULL

    让我们看一个简单的例子:一个包含水果摊的库存的表。假设我们的库存包含10个苹果和3个橙子。我们还库存李子,但我们的库存信息不完整,我们不知道有多少(如果有的话)李子有库存。使用NULL值,我们将拥有下表中显示的库存表。

    水果摊库存

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

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

    要NULL还是NOT NULL?

    可以将表设计为允许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;

    鉴于我们的示例,这将返回:

    InventoryID项目数量
    3李子

    在NULL上运行

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

    算术运算符

    • A + B = NULL
    • A - B = NULL
    • A * B = NULL
    • A / B = NULL

    比较运算符

    • A = B = NULL
    • A!= B = NULL
    • A> B = NULL
    • A!<B = NULL

    这些只是运营商的一些例子 总是 如果一个操作数为NULL,则返回NULL。存在更复杂的查询,并且所有查询都被NULL值复杂化。回家点是,如果您在数据库中允许NULL值,请了解其含义和计划。

    简而言之,这是空的!