麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 數(shù)據(jù)庫 > SQL Server > 正文

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

2024-08-31 01:03:59
字體:
供稿:網(wǎng)友

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

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

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

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

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

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

最后一點(diǎn),主要涉及到于NULL值的比較。在我們印象中,是用IS NULL,IS NOT NULL比較呢,還是用=,<>比較呢。這取決于數(shù)據(jù)庫選項(xiàng)ANSI NULLS,我們不可能更改數(shù)據(jù)庫選項(xiàng)(我們大部分不是DBA),但是我們可以使用會話設(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判斷非空。

測試如下:

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

sql,null,ANSI,NULLS,bug

SET ANSI_NULLS OFF 時(shí):

sql,null,ANSI,NULLS,bug

SET ANSI_NULLS ON 時(shí)

sql,null,ANSI,NULLS,bug

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


注:相關(guān)教程知識閱讀請移步到MSSQL教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 午夜精品福利在线观看 | 国产成人精品区一区二区不卡 | 色阁五月| 黄色网络免费看 | 国产成人精品免高潮在线观看 | 国产一级毛片高清 | 成人男女视频 | 国产精品久久久久久久久久电影 | 久久久精品视频免费看 | 黄色av.com| 久久丝袜脚交足黄网站免费 | 亚洲看片网 | 国产精品自拍片 | 欧美精品一区二区久久 | 免费观看视频在线 | 日韩色电影| 日本视频免费看 | 国产成人精品午夜视频' | 欧美精品电影一区二区 | 蜜桃麻豆视频 | 毛片在线视频免费观看 | 视频一区 中文字幕 | 久久久婷婷一区二区三区不卡 | 天堂亚洲一区 | 欧美成人小视频 | 天天夜干 | 久久久久999 | 色播一区 | 北京一级毛片 | wwwav国产 | 成人午夜一区二区 | 中午字幕无线码一区2020 | 激情小说另类 | 麻豆视频在线观看 | 午夜视频在线观看免费视频 | 韩日黄色片 | 一级黄色免费大片 | 欧美成人一区二区三区电影 | 久久精品成人免费国产片桃视频 | 黄网站在线免费看 | 欧美高清第一页 |