五月综合激情婷婷六月,日韩欧美国产一区不卡,他扒开我内裤强吻我下面视频 ,无套内射无矿码免费看黄,天天躁,日日躁,狠狠躁

新聞動(dòng)態(tài)

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

發(fā)布日期:2022-01-14 17:49 | 文章來源:源碼中國

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

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

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

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

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

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

最后一點(diǎn),主要涉及到于NULL值的比較。在我們印象中,是用IS NULL,IS NOT NULL比較呢,還是用=,<>比較呢。這取決于數(shù)據(jù)庫選項(xiàng)ANSI NULLS,我們不可能更改數(shù)據(jù)庫選項(xiàng)(我們大部分不是DBA),但是我們可以使用會(huì)話設(shè)置SET ANSI_NULLS相當(dāng)于數(shù)據(jù)庫選項(xiàng)ANSI NULLS。當(dāng)這個(gè)選項(xiàng)為真是,所有與空值的比較都將得出FALSE,代碼必須使用IS NULL條件來判斷是否為空,而當(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é)下來,最優(yōu)的辦法是:在設(shè)計(jì)表的時(shí)候,不要允許字段為NULL,并為字段附上默認(rèn)值。

版權(quán)聲明:本站文章來源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請(qǐng)保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非maisonbaluchon.cn所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學(xué)習(xí)參考,不代表本站立場(chǎng),如有內(nèi)容涉嫌侵權(quán),請(qǐng)聯(lián)系alex-e#qq.com處理。

實(shí)時(shí)開通

自選配置、實(shí)時(shí)開通

免備案

全球線路精選!

全天候客戶服務(wù)

7x24全年不間斷在線

專屬顧問服務(wù)

1對(duì)1客戶咨詢顧問

在線
客服

在線客服:7*24小時(shí)在線

客服
熱線

400-630-3752
7*24小時(shí)客服服務(wù)熱線

關(guān)注
微信

關(guān)注官方微信
頂部