專業只做數據庫實訓和認證的品牌機構

微信公眾號新浪微博
免費咨詢電話:400-0909-964
當前位置: 網站首頁 > MySQL培訓 > MySQL課程 > MySQL培訓教程:NULL值

MySQL培訓教程:NULL值

文章來源: 更新時間:2016/7/19 16:41:31

在線老師點擊咨詢:

最新學訊:近期OCP認證正在報名中,因考試人員較多請盡快報名獲取最近考試時間,報名費用請聯系在線老師,甲骨文官方認證,報名從速!

我要咨詢

MySQL培訓教程:NULL值,NULL意味著“沒有值”或“未知值”,且它被看作有點與眾不同的值。為了測試NULL,你不能使用算術比較運算符例如=、<或!=。為了說明它,試試下列查詢:

MySQL> SELECT 1 = NULL, 1 != NULL, 1 < NULL, 1 > NULL;

+----------+-----------+----------+----------+

| 1 = NULL | 1 != NULL | 1 < NULL | 1 > NULL |

+----------+-----------+----------+----------+

| NULL | NULL | NULL | NULL |

+----------+-----------+----------+----------+

很清楚你從這些比較中得到毫無意義的結果。相反使用IS NULL和IS NOT NULL操作符:

MySQL> SELECT 1 IS NULL, 1 IS NOT NULL;

+-----------+---------------+

| 1 IS NULL | 1 IS NOT NULL |

+-----------+---------------+

| 0 | 1 |

+-----------+---------------+

在MySQL中,0意味著假而1意味著真。

NULL這樣特殊的處理是為什么,在前面的章節中,為了決定哪個動物不再是活著的,使用death IS NOT NULL而不是death != NULL是必要的:

MySQL> SELECT * FROM pet WHERE death IS NOT NULL;

+--------+-------+---------+------+------------+------------+

| name | owner | species | sex | birth | death |

+--------+-------+---------+------+------------+------------+

| Bowser | Diane | dog | m | 1990-08-31 | 1995-07-29 |

+--------+-------+---------+------+------------+------------+

NULL值的概念是造成SQL的新手的混淆的普遍原因,他們經常認為NULL是和一個空字符串''的一樣的東西。不是這樣的!例如,下列語句是完全不同的:

MySQL> INSERT INTO my_table (phone) VALUES (NULL);

MySQL> INSERT INTO my_table (phone) VALUES ("");

兩個語句把值插入到phone列,但是第一個插入一個NULL值而第二個插入一個空字符串。第一個的含義可以認為是“電話號碼不知道”,而第二個則可意味著“她沒有電話”。

在SQL中,NULL值在于任何其他值甚至NULL值比較時總是假的(FALSE)。包含NULL的一個表達式總是產生一個NULL值,除非在包含在表達式中的運算符和函數的文檔中指出。在下列例子,所有的列返回NULL:

MySQL> SELECT NULL,1+NULL,CONCAT('Invisible',NULL);

+------+--------+--------------------------+

| NULL | 1+NULL | CONCAT('Invisible',NULL) |

+------+--------+--------------------------+

| NULL | NULL | NULL |

+------+--------+--------------------------+

如果你想要尋找值是NULL的列,你不能使用=NULL測試。下列語句不返回任何行,因為對任何表達式,expr = NULL是假的:

MySQL> SELECT * FROM my_table WHERE phone = NULL;

要想尋找NULL值,你必須使用IS NULL測試。下例顯示如何找出NULL電話號碼和空的電話號碼:

MySQL> SELECT * FROM my_table WHERE phone IS NULL;

MySQL> SELECT * FROM my_table WHERE phone = "";

在MySQL中,就像很多其他的SQL服務器一樣,你不能索引可以有NULL值的列。你必須聲明這樣的列為NOT NULL,而且,你不能插入NULL到索引的列中。

當使用ORDER BY時,首先呈現NULL值。如果你用DESC以降序排序,NULL值最后顯示。當使用GROUP BY時,所有的NULL值被認為是相等的。

為了有助于NULL的處理,你能使用IS NULL和IS NOT NULL運算符和IFNULL()函數。

對某些列類型,NULL值被特殊地處理。如果你將NULL插入表的第一個TIMESTAMP列,則插入當前的日期和時間。如果你將NULL插入一個AUTO_INCREMENT列,則插入順序中的下一個數字。

本文地址:http://www.erickasouza.com/mysql/kecheng/12516731364.html 轉載請注明!


在線預約 搶先報名 獲取課程排期

Oracle培訓機構

金牌講師<>

冉乃綱-老師CUUG金牌講師
冉老師 CUUG金牌講師 Oracle及RedHat高級講師、Unix/Linux 資深專家...[詳細了解老師]

免費咨詢上課流程 客服在線中

陳衛星-老師CUUG金牌講師
陳老師 CUUG金牌講師 精通Oracle管理、備份恢復、性能優化 11年Ora...[詳細了解老師]

免費咨詢上課流程 客服在線中

選學校如何選擇適合自己的學校

CUUG -CHINA UNIX USER GROUP,是國際UNIX組織UNIFORUM的中國代表,是國內悠久的專業UNIX培訓機構,被譽為中國UNIX 的搖籃。多年來,以提高教學質量為本,強調素質教育,積極引進、消化國外的新技術,有效的結合中國....[詳情]

一站式服務(從入學到就業一幫到底)

入學

學習

就業

實操

食宿
關閉
海淀校區:北京市海淀區紫竹園路88號紫竹花園D座703(CUUG)
課程咨詢:010-59426307 010-59426319 400-0909-964
企業服務:139 1050 4818(劉經理)
部分信息來源于網絡,如有錯誤請聯系指正!
微信:聞老師
微信:于老師
版權所有@北京神腦資訊技術有限公司 (CUUG,中國UNIX用戶協會) Copyright 2016 ALL Rights Reserved 京ICP備11008061號-1