資料庫查詢 is null與 null的區別

2022-08-26 11:09:09 字數 1867 閱讀 6639

在mysql中,篩選非空的時候經常會用到is not null和!=null,這兩種方法單從字面上來看感覺是差不多的,其實如

果去執行一下試試的話差別會很大!

為什麼會出現這種情況呢?

null 表示什麼也不是, 不能=、>、< … 所有的判斷,結果都是false,所有只能用 is null進行判斷。

預設情況下,推薦使用 is not null去判斷,因為sql預設情況下對!= null的判斷會永遠返回0行,但沒有語法錯誤

。如果你一定想要使用!= null來判斷,需要加上這個語句:

set ansi_nulls off

這時你會發現is not null 和 != null 是等效的

個字段如果設為「null」,表示如果這個欄位的值為空時,自動插入乙個「null」值。

乙個字段如果設為「not null」,表示如果這個欄位的值為空時,不自動插入「null」值(任其無值)。

所以,設為「null」的意思反而是「不能無值」(由mysql自動賦「null」值),而設為「not null」是「可以無值」

。其實要證明這一點很簡單,建乙個測試表,兩個字段(vc型),乙個設為「null」,乙個設為「not null」,兩個都

插入空值,看看結果就明白了。

null 不是 '' 也不是 0。

你的字段定義為 not null,但是卻賦值了乙個 null,那麼資料庫系統會按照該欄位型別選擇乙個預設的值放進去,

比如 char 就是用空字串。

但注意,空字串其實已經是乙個確定的值了,就是乙個長度為 0 的字串!

至於 null 值,給你乙個正確的理解:把 null 理解為 unknown。

主要意思是'不知道',就是它可能是任何值;

另外一層意思是'資訊缺失',比如某個儲存姓名資訊的字段值是 null,代表姓名資訊缺失。

所以 null 值不是任意乙個確定的值!

舉例來說,邏輯 與/或 運算會的吧?

與運算:true and true = true, true and false = false, false and true = false, false and false =

false

第乙個 true and null,它的結果完全靠 null 確定。如果它是 true 結果就是 true,如果它是 false,結果就是

false。因為 null 代表不知道,所以結果也是不知道,所以是 null。

第二個 false and null,它的結果不需要靠 null 確定,因為 and 運算的特性,有 false 出 false,所以結果是

false。

第三個 null and null,就好理解了吧,它完全就是空對空了,兩個運算元都是不知道,結果自然也是不知道,所以

是 null。

有如下例子:

sql> select * from test;

id name       emil

---------- ---------- --------------------

1 hj         124rd

2 fg

sql>

test表中emil未填寫任何資料查詢:

select name from test where emil = null;

sql> select name from test where emil = null;

未選定行

select name from test where emil is null;

name

----------

fgsql>

顯示一條結果。

預設情況下推薦使用is null 作條件判斷,因為sql預設情況下對where xx =null的判斷永遠返回0行,不提示語法錯誤。

資料庫的查詢與更新

首先建立資料庫 建立表,並輸入測試資料 code 建立資料庫 create database 學生管理資訊 onprimary name 學生管理資訊 data,filename d sql 學生管理資訊 data.mdf size 3,maxsize unlimited,filegrowth 10...

資料庫約束與多表查詢

小案例 假設乙個網購平台買賣商品,那麼他的資料庫中一定會有商品表,使用者表還有訂單表。在這三個表中沒有存在約束的話,那麼這三個表可以被單獨任意更改,我可以隨意的刪除使用者,但是被刪除的使用者訂單資訊還是存在於訂單表中,那麼此時資料庫中的資料就變得毫無意義,這也就體現了資料庫表之間的約束的重要性。資料...

資料庫查詢

0 echo else 釋放記錄集所占用的記憶體 mysql free result result 關閉該資料庫連線 mysql close connection 1.建立到資料庫伺服器的乙個連線。這個資訊包括伺服器位址 mysql使用者名稱 密碼 選擇的資料庫名,這些變數儲存在php的變數中。2....