日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

SQL基礎入門:第4課:特殊的NULL值(4)

 L羅樂 2019-02-06

把NULL值單獨拿出來說,是因為在數(shù)據(jù)庫中,NULL值是一個非常特殊的值。不注意的話,很容易犯錯誤。

在創(chuàng)建表時,對于表中的每個字段,可以指定字段是否必須包含值。對于不是必須包含值的字段,可以向字段中插入NULL值。

比如像下面這樣,定義teacher_id和teacher_name這兩個字段必須有值,而gender字段可以沒有值。

  1. CREATE TABLE teacher

  2. (

  3. teacher_id VARCHAR(20) NOT NULL,

  4. teacher_name VARCHAR(50) NOT NULL,

  5. gender VARCHAR(10) NULL,

  6. primary key ( teacher_id )

  7. );

每個字段,要么是NOT NULL,要么是可為NULL。如果不指定的話,默認的是可為NULL,也就是允許不包含值。

說了這么多,那么NULL值到底是什么呢?

其實,NULL值什么都不是!記住,是什么都不是,沒有人知道NULL值是什么!

那為什么會在數(shù)據(jù)庫中設計這樣一個NULL值呢?是因為用它來表示一種”不知道“、”不確定“的狀態(tài)。它既不等于0,也不等于空格’ ‘,更不等于空字符串”,甚至,它也不等于NULL。

想像一下,如果我們不知道張三的年齡,那么可以將張三的年齡賦值為NULL,而同樣的,我們也不知道李四的年齡,那么也可以將李四的年齡賦值為NULL。這個時候如果問,張三的年齡與李四的年齡一樣嗎?那肯定是一個無法回答的問題。這樣去理解NULL值與NULL值不相等,是不是容易多了。

那既然NULL值跟什么都不相等,我們?nèi)绾稳ヅ袛嘁粋€字段的值為NULL值呢?

可以使用如下語句來判斷:

  1. gender is null; --判斷gender字段為null值

  2. gender is not null; --判斷gender字段不為null值

使用gender = null;這樣的判斷方式是錯誤的!

其實,NULL值在數(shù)據(jù)庫中的作用還是蠻大的。舉個例子,一次期中考試過后,學校要對進步比較大的同學進行獎勵。對于上學期期末考試總成績在300分以下的同學,如果這次期中考試總成績在500分以上,則發(fā)放200元獎學金;在400-500分之間,則發(fā)放100元獎學金;在400分以下,則發(fā)放0元獎學金,也就是不獎勵。

畫出表格如下:

那么上面這種描述,對上學期期末考試總成績在300分以上的同學如何獎勵并沒有說明。此時,我們就可以為獎學金字段賦值為NULL,表示這個時候,我們還不知道學校如何對這部分學生進行獎勵。

鑒于NULL值的特殊性,在使用NULL值時,我給出了下面兩點忠告供大家參考:

允許NULL值的字段,不能作為主鍵字段;
盡量避免將字段設置為可為NULL,事實上,應該定下規(guī)范,所有字段都必須設置為NOT NULL;


Mac老師個人微信號:201855204

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多