sql server的空值处理策略--

sql server的空值处理策略--

ID:9507630

大小:61.50 KB

页数:6页

时间:2018-05-01

sql server的空值处理策略--_第1页
sql server的空值处理策略--_第2页
sql server的空值处理策略--_第3页
sql server的空值处理策略--_第4页
sql server的空值处理策略--_第5页
资源描述:

《sql server的空值处理策略--》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、SQLServer的空值处理策略>>  空值是所有数据库开发者和管理员都要遇到的。所以,要想开发成功的应用程序,必须知道如何处理这些值。本文和你分享了空值处理的一些技巧和技术。  数据完整性是任何数据库系统要保证的重点。不管系统计划得有多好,空数据值的问题总是存在。本文探讨了在SQLServer中处理这些值时涉及的3个问题:计数、使用空表值以及外键处理。  用COUNT(*)处理空值  大多数集合函数都能在计算时消除空值;COUNT函数则属于例外。对包含空值的一个列使用COUNT函数,空值会从计算中消除。但假如COUNT函数使用一个星号,它

2、就计算所有行,而不管是否存在空值。  如果希望COUNT函数对给定列的所有行(包括空值)进行计数,请使用ISNULL函数。ISNULL函数会将空值替换成有效的值。  事实上,对集合函数来说,如果空值可能导致错误结果,ISNULL函数就非常有用。记住在使用一个星号时,COUNT函数会对所有行进行计算。下例演示了空值在AVG和COUNT集合函数中的影响:  SETNOCOUNTON  GOCREATETABLExCount(pkey1INTIDENTITYNOTNULLCONSTRAINTpk_xCountPRIMARYKEY,Col1intN

3、ULL)GOINSERTxCount(Col1)VALUES(10)GOINSERTxCount(Col1)VALUES(15)GOINSERTxCount(Col1)VALUES(20)GOINSERTxCount(Col1)VALUES(NULL)GOSELECTAVG(Col1)AvgxCountGODROPTABLExCountGOOUTPUT:AvgARYKEY,col1INTNULL)GOINSERTParent(col1)VALUES(284)GOINSERTParent(col1)VALUES(326)GO  以下代码则创建

4、子表,并在引用父表的列中插入一个空值。CREATETABLEChild(pkey1INTIDENTITYCONSTRAINTpkChildPRIMARYKEY,Parentpkey1INTNULLCONSTRAINTfkChildParentFOREIGNKEYREFERENCESParent(pkey1),col1INTNULL)GOINSERTChild(Parentpkey1,col1)VALUES(null,2)GO  但在以下代码中,要同时从父表和子表选择值。虽然父表不包含空值,但在子表引用了父表的那个列中,将允许一个空值。  然

5、后丢弃所有表,清除这个演示所用的数据库对象。SELECT*FROMChildGOSELECT*FROMParentGODROPTABLEChild,ParentGO  在可以为空的外键中检查数据的有效性  如果由两个列共同组成主键,而且一个子表将主键作为可为空值的外键来继承,就可能得到错误的数据。可在一个外键列中插入有效的值,但在另一个外键列中插入空值。然后,可添加一个数据表检查约束,在可为空的外键中检查数据的有效性。  任何多列外键都可能遇到同样的问题。所以,你需要添加一个检查约束来检测异常。最初,检查约束将检查构成外键的所有列中可能为空

6、的值。检查约束还要检查这些列中不能为空的值。如两个检查都通过,问题就解决了。  以下示范脚本展示了这样的一个异常,以及如何用检查约束来纠正它。SETNOCOUNTONGOCREATETABLEparent(pkey1INTIDENTITYNOTNULL,pkey2INTNOTNULL,col1INTNULL,CONSTRAINTpk_parentPRIMARYKEYNONCLUSTERED(pkey1,pkey2))GO12下一页>>>>这篇文章来自..,。INSERTparent(pkey2)VALUES(2)INSERTparent(p

7、key2)VALUES(85)INSERTparent(pkey2)VALUES(41)INSERTparent(pkey2)VALUES(11)GOSELECT*FROMparentGOCREATETABLEchild(cpkey1INTIDENTITYNOTNULLCONSTRAINTpk_childPRIMARYKEYNONCLUSTERED(cpkey1),pkey1INTNULL,pkey2INTNULL,col1INTNULL,CONSTRAINTfk_parent_childFOREIGNKEY(pkey1,pkey2)REF

8、ERENCESparent(pkey1,pkey2))GOINSERTchild(pkey1,pkey2)VALUES(null,85)GOSELECT*FROMchildGOD

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。