SQL NULL Values(空值)

2022-05-20 15:23 更新

什么是SQL NULL值?


 SQL 中,NULL 用于表示缺失的值。數(shù)據(jù)表中的 NULL 值表示該值所處的字段為空。

 具有NULL值的字段是沒有值的字段。

 如果表中的字段是可選的,則可以插入新記錄或更新記錄而不向該字段添加值。然后,該字段將被保存為NULL值。

 值為 NULL 的字段沒有值。尤其要明白的是,NULL 值與 0 或者包含空白(spaces)的字段是不同的。

注意:理解NULL值與零值或包含空格的字段不同是非常重要的。具有NULL值的字段是在記錄創(chuàng)建期間留空的字段!


如何測試NULL值?


 使用比較運(yùn)算符(例如=,<或<>)來測試NULL值是不可行的。

 我們將不得不使用IS NULL和IS NOT NULL運(yùn)算符。

IS NULL語法

SELECT column_names
FROM table_name
WHERE column_name IS NULL;

IS NOT NULL語法

SELECT column_names
FROM table_name
WHERE column_name IS NOT NULL;

演示數(shù)據(jù)庫


 假設(shè)我們有以下的“人員”表:

ID LastName FirstName Address City
1 Doe John 542 W. 27th Street New York
2 Bloggs Joe   London
3 Roe Jane   New York
4 Smith John 110 Bishopsgate London

 假設(shè)“人員”表中的“Address”列是可選的。如果插入的記錄沒有“Address”值,則“Address”列將以空值保存。


IS NULL運(yùn)算符


 以下SQL語句使用IS NULL運(yùn)算符來列出所有沒有地址的人員:

SELECT LastName, FirstName, Address FROM Persons
WHERE Address IS NULL;

 結(jié)果集將如下所示:

LastName FirstName Address
Bloggs Joe  
Roe Jane  

提示:始終使用IS NULL來查找空值。


IS NOT NULL運(yùn)算符


 以下SQL語句使用IS NOT NULL運(yùn)算符來列出所有具有地址的人員:

SELECT LastName, FirstName, Address FROM Persons
WHERE Address IS NOT NULL;

 結(jié)果集將如下所示:

LastName FirstName Address
Doe John 542 W. 27th Street
Smith John 110 Bishopsgate


語法:


 創(chuàng)建表的時(shí)候,NULL 的基本語法如下:

SQL> CREATE TABLE CUSTOMERS(
   ID   INT              NOT NULL,
   NAME VARCHAR (20)     NOT NULL,
   AGE  INT              NOT NULL,
   ADDRESS  CHAR (25) ,
   SALARY   DECIMAL (18, 2),       
   PRIMARY KEY (ID)
);

 這里,NOT NULL表示對(duì)于給定列,必須按照其數(shù)據(jù)類型明確賦值。有兩列并沒有使用 NOT NULL 來限定,也就是說這些列可以為 NULL。

 值為 NULL 的字段是在記錄創(chuàng)建的過程中留空的字段。


示例:


 NULL 值會(huì)給選取數(shù)據(jù)帶來麻煩。不過,因?yàn)?NULL 和其他任何值作比較,其結(jié)果總是未知的,所以含有 NULL 的記錄不會(huì)包含在最終結(jié)果里面。

 必須使用 IS NULL 或者 IS NOT NULL 來檢測某個(gè)字段是否為 NULL。

 考慮下面的 CUSTOMERS 數(shù)據(jù)表,里面包含的記錄如下所示:

+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  1 | Ramesh   |  32 | Ahmedabad |  2000.00 |
|  2 | Khilan   |  25 | Delhi     |  1500.00 |
|  3 | kaushik  |  23 | Kota      |  2000.00 |
|  4 | Chaitali |  25 | Mumbai    |  6500.00 |
|  5 | Hardik   |  27 | Bhopal    |  8500.00 |
|  6 | Komal    |  22 | MP        |          |
|  7 | Muffy    |  24 | Indore    |          |
+----+----------+-----+-----------+----------+

 下面是 IS NOT NULL 運(yùn)算符的用法:

SQL> SELECT  ID, NAME, AGE, ADDRESS, SALARY
     FROM CUSTOMERS
     WHERE SALARY IS NOT NULL;

 上面語句的運(yùn)行結(jié)果如下:

+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  1 | Ramesh   |  32 | Ahmedabad |  2000.00 |
|  2 | Khilan   |  25 | Delhi     |  1500.00 |
|  3 | kaushik  |  23 | Kota      |  2000.00 |
|  4 | Chaitali |  25 | Mumbai    |  6500.00 |
|  5 | Hardik   |  27 | Bhopal    |  8500.00 |
+----+----------+-----+-----------+----------+

 下面是 IS NULL 運(yùn)算符的用法:

SQL> SELECT  ID, NAME, AGE, ADDRESS, SALARY
     FROM CUSTOMERS
     WHERE SALARY IS NULL;

 其運(yùn)行結(jié)果如下:

+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  6 | Komal    |  22 | MP        |          |
|  7 | Muffy    |  24 | Indore    |          |
+----+----------+-----+-----------+----------+



以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)