濮阳杆衣贸易有限公司

主頁(yè) > 知識(shí)庫(kù) > sql server 關(guān)于設(shè)置null的一些建議

sql server 關(guān)于設(shè)置null的一些建議

熱門標(biāo)簽:電銷機(jī)器人虛擬號(hào)碼 松原導(dǎo)航地圖標(biāo)注 創(chuàng)業(yè)電銷機(jī)器人 沈陽(yáng)智能外呼系統(tǒng)代理 滄州營(yíng)銷外呼系統(tǒng)軟件 海南自動(dòng)外呼系統(tǒng)價(jià)格 九鹿林外呼系統(tǒng)怎么收費(fèi) 浙江地圖標(biāo)注 舞鋼市地圖標(biāo)注app

我們?cè)O(shè)計(jì)表時(shí),在字段是否允許Null值這個(gè)問(wèn)題上,有時(shí)會(huì)爭(zhēng)論一番。

數(shù)據(jù)庫(kù)牛人Kalen Delaney則給了一下建議:

1,永遠(yuǎn)不要在用戶表中允許NULL值
2,在用戶表定義中包含一個(gè)NOT NULL限制
3,不要依賴數(shù)據(jù)庫(kù)屬性來(lái)控制NULL值的行為

對(duì)于第一點(diǎn),我們反向說(shuō),如果允許NULL,會(huì)給我們帶來(lái)什么影響。

1,SQL 在每條記錄中都設(shè)置了一個(gè)特殊的bitmap來(lái)顯示哪些允許空值的列上存儲(chǔ)的真的是空值。如果是NULL,在訪問(wèn)每一行的時(shí)候SQL Server都必須對(duì)這個(gè)bitmap進(jìn)行解碼。
2,允許NULL還增加了應(yīng)用程序代碼的復(fù)雜度,總的添加一些特殊的邏輯來(lái)處理這個(gè)NULL值,這常常會(huì)導(dǎo)致bug。

第二點(diǎn),在包含不允許NULL的列上,要加入一些默認(rèn)值,如果不允許NULL,但是還沒(méi)有加默認(rèn)值,在沒(méi)有顯示列插入的話,就會(huì)造成INSERT的失敗,SQL Server默認(rèn)在INSERT中,對(duì)沒(méi)有顯示的列做NULL插入。

最后一點(diǎn),主要涉及到于NULL值的比較。在我們印象中,是用IS NULL,IS NOT NULL比較呢,還是用=,>比較呢。這取決于數(shù)據(jù)庫(kù)選項(xiàng)ANSI NULLS,我們不可能更改數(shù)據(jù)庫(kù)選項(xiàng)(我們大部分不是DBA),但是我們可以使用會(huì)話設(shè)置SET ANSI_NULLS相當(dāng)于數(shù)據(jù)庫(kù)選項(xiàng)ANSI NULLS。當(dāng)這個(gè)選項(xiàng)為真是,所有與空值的比較都將得出FALSE,代碼必須使用IS NULL條件來(lái)判斷是否為空,而當(dāng)這個(gè)選項(xiàng)為假時(shí),如果進(jìn)行比較的兩個(gè)值都是空值將得出TRUE,SQL Server允許將 =NULL作為IS NULL的同義詞,將> NULL 作為IS NOT NULL的同義詞。

如果忘記這個(gè)選項(xiàng),建議用IS NULL判斷空,IS NOT NULL判斷非空。

測(cè)試如下:

在t3表中只有兩行數(shù)據(jù),如圖:


SET ANSI_NULLS OFF 時(shí):

SET ANSI_NULLS ON 時(shí)

總結(jié)下來(lái),最優(yōu)的辦法是:在設(shè)計(jì)表的時(shí)候,不要允許字段為NULL,并為字段附上默認(rèn)值。

您可能感興趣的文章:
  • sqlserver2005 安裝圖解教程以及SQL 2005 SP3補(bǔ)丁安裝圖文教程
  • MySQL server has gone away 問(wèn)題的解決方法
  • sqlserver中distinct的用法(不重復(fù)的記錄)
  • SQL Server 2008 安裝和配置圖解教程(附官方下載地址)
  • SQL Server 2008 阻止保存要求重新創(chuàng)建表的更改問(wèn)題的設(shè)置方法
  • SQL Server數(shù)據(jù)庫(kù)入門學(xué)習(xí)總結(jié)
  • SQL Server 2012 安裝圖解教程(附sql2012下載地址)
  • Sql Server 2008完全卸載方法(其他版本類似)
  • SQL Server 在Management Studio中使用Web瀏覽器

標(biāo)簽:咸寧 臺(tái)灣 商洛 日喀則 西藏 公主嶺 寶雞

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《sql server 關(guān)于設(shè)置null的一些建議》,本文關(guān)鍵詞  sql,server,關(guān)于,設(shè)置,null,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《sql server 關(guān)于設(shè)置null的一些建議》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于sql server 關(guān)于設(shè)置null的一些建議的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    绿春县| 定兴县| 马公市| 惠水县| 黄大仙区| 湘阴县| 河北省| 得荣县| 华蓥市| 雅安市| 绩溪县| 德清县| 虹口区| 南雄市| 宿松县| 长岛县| 崇信县| 洛扎县| 静乐县| 镇沅| 南雄市| 平利县| 平顶山市| 桂平市| 宜章县| 安塞县| 宁夏| 湘潭市| 八宿县| 繁昌县| 隆子县| 大名县| 赤城县| 修武县| 正蓝旗| 礼泉县| 四平市| 霞浦县| 晋江市| 平舆县| 阿坝|