你應該知道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