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