MySQL中NULL和空字符串的區別


相信很多用了MySQL很久的人,對這兩個字段屬性的概念還不是很清楚,一般會有以下疑問:

  1. 字段類型是NOT NULL,為什么可以插入空值?
  2. NOT NULL的效率比NULL高?
  3. 判斷字段不為空的時,到底要 select * from table where column <>  還是要用 select * from table wherecolumn is not null 呢?

帶着上面幾個疑問,我們來深入研究一下NULL 和 NOT NULL 到底有什么不一樣。
首先,我們要搞清楚“空字符串” 和 “NULL” 的概念:

  • 空值是不占用空間的
  • MySQL中的NULL是占用空間的

打個比方來說,你有一個杯子,空值代表杯子是真空的,NULL代表杯子中裝滿了空氣,雖然杯子看起來都是空的,但是區別是很大的。

注意事項:

  1. 在進行count()統計某列的記錄數的時候,如果采用的NULL值,系統會自動忽略掉,但是空值是會進行統計到其中的。
  2. 判斷NULLIS NULL 或者 IS NOT NULL, SQL語句函數中可以使用ifnull()函數來進行處理,判斷空字符用=''或者 <>''來進行處理
  3. 對於MySQL特殊的注意事項,對於timestamp數據類型,如果往這個數據類型插入的列插入NULL值,則出現的值是當前系統時間。插入空值,則會出現 0000-00-00 00:00:00
  4. 對於空值的判斷到底是使用is null 還是='' 要根據實際情況來進行區分。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM