把NULL值單獨(dú)拿出來說,是因?yàn)樵跀?shù)據(jù)庫中,NULL值是一個(gè)非常特殊的值。不注意的話,很容易犯錯(cuò)誤。 在創(chuàng)建表時(shí),對于表中的每個(gè)字段,可以指定字段是否必須包含值。對于不是必須包含值的字段,可以向字段中插入NULL值。 比如像下面這樣,定義teacher_id和teacher_name這兩個(gè)字段必須有值,而gender字段可以沒有值。
每個(gè)字段,要么是NOT NULL,要么是可為NULL。如果不指定的話,默認(rèn)的是可為NULL,也就是允許不包含值。 說了這么多,那么NULL值到底是什么呢? 其實(shí),NULL值什么都不是!記住,是什么都不是,沒有人知道NULL值是什么! 那為什么會(huì)在數(shù)據(jù)庫中設(shè)計(jì)這樣一個(gè)NULL值呢?是因?yàn)橛盟鼇肀硎疽环N”不知道“、”不確定“的狀態(tài)。它既不等于0,也不等于空格’ ‘,更不等于空字符串”,甚至,它也不等于NULL。 想像一下,如果我們不知道張三的年齡,那么可以將張三的年齡賦值為NULL,而同樣的,我們也不知道李四的年齡,那么也可以將李四的年齡賦值為NULL。這個(gè)時(shí)候如果問,張三的年齡與李四的年齡一樣嗎?那肯定是一個(gè)無法回答的問題。這樣去理解NULL值與NULL值不相等,是不是容易多了。 那既然NULL值跟什么都不相等,我們?nèi)绾稳ヅ袛嘁粋€(gè)字段的值為NULL值呢? 可以使用如下語句來判斷:
使用gender = null;這樣的判斷方式是錯(cuò)誤的! 其實(shí),NULL值在數(shù)據(jù)庫中的作用還是蠻大的。舉個(gè)例子,一次期中考試過后,學(xué)校要對進(jìn)步比較大的同學(xué)進(jìn)行獎(jiǎng)勵(lì)。對于上學(xué)期期末考試總成績在300分以下的同學(xué),如果這次期中考試總成績在500分以上,則發(fā)放200元獎(jiǎng)學(xué)金;在400-500分之間,則發(fā)放100元獎(jiǎng)學(xué)金;在400分以下,則發(fā)放0元獎(jiǎng)學(xué)金,也就是不獎(jiǎng)勵(lì)。 畫出表格如下: 那么上面這種描述,對上學(xué)期期末考試總成績在300分以上的同學(xué)如何獎(jiǎng)勵(lì)并沒有說明。此時(shí),我們就可以為獎(jiǎng)學(xué)金字段賦值為NULL,表示這個(gè)時(shí)候,我們還不知道學(xué)校如何對這部分學(xué)生進(jìn)行獎(jiǎng)勵(lì)。 鑒于NULL值的特殊性,在使用NULL值時(shí),我給出了下面兩點(diǎn)忠告供大家參考:
Mac老師個(gè)人微信號:201855204 |
|