• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >MsSql > sql server 关于设置null的一些建议

sql server 关于设置null的一些建议

作者:xbf321 字体:[增加 减小] 来源:互联网 时间:2017-05-11

xbf321通过本文主要向大家介绍了关于sql server的书,关于sql server,sql server 2005设置,sql server 2000设置,sql server账户设置等相关知识,希望本文的分享对您有所帮助

我们设计表时,在字段是否允许Null值这个问题上,有时会争论一番。

数据库牛人Kalen Delaney则给了一下建议:

1,永远不要在用户表中允许NULL值
2,在用户表定义中包含一个NOT NULL限制
3,不要依赖数据库属性来控制NULL值的行为

对于第一点,我们反向说,如果允许NULL,会给我们带来什么影响。

1,SQL 在每条记录中都设置了一个特殊的bitmap来显示哪些允许空值的列上存储的真的是空值。如果是NULL,在访问每一行的时候SQL Server都必须对这个bitmap进行解码。
2,允许NULL还增加了应用程序代码的复杂度,总的添加一些特殊的逻辑来处理这个NULL值,这常常会导致bug。

第二点,在包含不允许NULL的列上,要加入一些默认值,如果不允许NULL,但是还没有加默认值,在没有显示列插入的话,就会造成INSERT的失败,SQL Server默认在INSERT中,对没有显示的列做NULL插入。

最后一点,主要涉及到于NULL值的比较。在我们印象中,是用IS NULL,IS NOT NULL比较呢,还是用=,<>比较呢。这取决于数据库选项ANSI NULLS,我们不可能更改数据库选项(我们大部分不是DBA),但是我们可以使用会话设置SET ANSI_NULLS相当于数据库选项ANSI NULLS。当这个选项为真是,所有与空值的比较都将得出FALSE,代码必须使用IS NULL条件来判断是否为空,而当这个选项为假时,如果进行比较的两个值都是空值将得出TRUE,SQL Server允许将 =NULL作为IS NULL的同义词,将<> NULL 作为IS NOT NULL的同义词。

如果忘记这个选项,建议用IS NULL判断空,IS NOT NULL判断非空。

测试如下:

在t3表中只有两行数据,如图:

http://files.weikejianghu.com/file_images/article/201605/2016521163212977.png

SET ANSI_NULLS OFF 时:

http://files.weikejianghu.com/file_images/article/201605/2016521163227633.png

SET ANSI_NULLS ON 时

http://files.weikejianghu.com/file_images/article/201605/2016521163234507.png

总结下来,最优的办法是:在设计表的时候,不要允许字段为NULL,并为字段附上默认值。

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • sql server 关于设置null的一些建议

相关文章

  • 2017-05-11SQL2008中通过DBCC OPENTRAN和会话查询事务
  • 2017-05-11SQL Server 2008及更高版本数据库恢复方法之日志尾部备份
  • 2017-05-11Sqlserver 2005附加数据库时出错提示操作系统错误5(拒绝访问)错误5120的解决办法
  • 2017-05-11sqlserver2005 TSql新功能学习总结(数据类型篇)
  • 2017-05-11SQL Server 2008中的数据表压缩功能详细介绍
  • 2017-05-11MSSQL2005在networkservice权限运行附加数据库报(Microsoft SQL Server,错误: 5120)
  • 2017-05-11sqlserver中获取当前日期的午夜的时间值的实现方法
  • 2017-05-11MSSQL 字符段分段更新
  • 2017-05-11SQL Server 2008中的代码安全(三) 通过PassPhrase加密
  • 2017-05-11SQL Server 2005安装实例环境图解第1/2页

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • SQL Server复制需要有实际的服务器名称才能连接到服务器
    • SQL Server 2005删除日志文件的几种方法小结
    • SQL Server使用一个语句块批量插入多条记录的三种方法
    • winXP系统安装SQLServer2005开发版具体过程与注意问题
    • sqlserver巧用row_number和partition by分组取top数据
    • SqlServer 2005的排名函数使用小结
    • SQL2008中SQL应用之-锁定(locking) 应用分析
    • SqlServer2005 链接服务器用法
    • 使用Sqlserver事务发布实现数据同步(sql2008)
    • SQL Server CROSS APPLY和OUTER APPLY的应用详解

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有