MariaDB 空值

2022-08-16 15:29 更新

使用NULL值時(shí),請(qǐng)記住它們是未知值。 它們不是空字符串或零,它們是有效值。 在表創(chuàng)建中,列規(guī)范允許將它們?cè)O(shè)置為接受空值,或拒絕它們。 只需使用NULL或NOT NULL子句。 這在缺少記錄信息(如ID號(hào))的情況下具有應(yīng)用。

用戶定義的變量的值為NULL,直到顯式賦值。 存儲(chǔ)的例程參數(shù)和局部變量允許將值設(shè)置為NULL。 當(dāng)局部變量沒有默認(rèn)值時(shí),它的值為NULL。

NULL不區(qū)分大小寫,并具有以下別名 - 

  • UNKNOWN(布爾值)
  • \ N

NULL運(yùn)算符

標(biāo)準(zhǔn)比較運(yùn)算符不能與NULL(例如,=,>,> =,<=,<或或!=)一起使用,因?yàn)樗信cNULL值的比較都返回NULL,而不是true或false。 與NULL或可能包含它的比較必須使用“<=>”(NULL-SAFE)運(yùn)算符。

其他可用的運(yùn)營(yíng)商有 - 

  • IS NULL - 它測(cè)試NULL值。

  • IS NOT NULL - 它確認(rèn)不存在NULL值。

  • ISNULL - 在發(fā)現(xiàn)NULL值時(shí)返回值1,在不存在時(shí)返回0。

  • COALESCE - 返回列表的第一個(gè)非NULL值,或者在沒有一個(gè)值的情況下返回NULL值。

對(duì)NULL值排序

在排序操作中,NULL值具有最低值,因此DESC次序在底部產(chǎn)生NULL值。 MariaDB允許為NULL值設(shè)置更高的值。

有兩種方法可以做到這一點(diǎn),如下所示 -

SELECT column1 FROM product_tbl ORDER BY ISNULL(column1), column1;

另一種方式 -

SELECT column1 FROM product_tbl ORDER BY IF(column1 IS NULL, 0, 1), column1 DESC;

NULL函數(shù)

當(dāng)任何參數(shù)為NULL時(shí),函數(shù)通常輸出NULL。 但是,還有專門用于管理NULL值的函數(shù)。 他們是 - 

  • IFNULL() - 如果第一個(gè)表達(dá)式不為NULL,它返回它。 當(dāng)它求值為NULL時(shí),它返回第二個(gè)表達(dá)式。

  • NULLIF() - 當(dāng)比較的表達(dá)式相等時(shí),它返回NULL,否則返回第一個(gè)表達(dá)式。

像SUM和AVG的函數(shù)忽略NULL值。

插入NULL值

在聲明為NOT NULL的列中插入NULL值時(shí),會(huì)發(fā)生錯(cuò)誤。 在默認(rèn)SQL模式下,NOT NULL列將根據(jù)數(shù)據(jù)類型插入一個(gè)默認(rèn)值。

當(dāng)字段是TIMESTAMP,AUTO_INCREMENT或虛擬列時(shí),MariaDB會(huì)以不同方式管理NULL值。 插入在AUTO_INCREMENT列中會(huì)導(dǎo)致序列中的下一個(gè)數(shù)字插入到其位置。 在TIMESTAMP字段中,MariaDB分配當(dāng)前時(shí)間戳。 在虛擬列中,本教程后面討論的主題將分配默認(rèn)值。

UNIQUE索引可以包含許多NULL值,但是,主鍵不能為NULL。

NULL值和Alter命令

當(dāng)您使用ALTER命令修改列時(shí),如果沒有NULL規(guī)范,MariaDB會(huì)自動(dòng)分配值。


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

掃描二維碼

下載編程獅App

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

編程獅公眾號(hào)