您的位置:首页 > 数据库

数据库中null值与其他值的比较

2016-03-21 15:38 357 查看
数据库中存在null,那么怎样查找这些值是null的记录呢?

查找到某一个字段是null的记录,最简单的想法可能是这样:

select *from tableName where columnName = null

但是这样是不行的,因为null不能和任何值比较。在SQL中,NULL值与任何其它值的比较(即使是NULL)永远不会为“真”。包含NULL的表达式总是会导出NULL值,除非在关于操作符的文档中以及表达式的函数中作了其他规定。

查询为null的记录正确写法:select *from tableName where columnName is null

null表示的含义是未知,即不知道有没有。和‘’空字符串不等,因为空字符串相当于没有值。null代表的是不知道有没有值。所以在数据查询中如果字段默认值是null,想查询出不等于某个条件的一定要加上——字段名 is null 或者字段名 is not null来包含是null或者不是null的字段

注意事项

1、null和任何值都不能比较。

2、null只能用is null 或者is not null 来判断,不能用=或者!=来判断。

3、对于varchar数据类型,无论是空字符串还是NULL值都不占用任何空间。

4、对于char类型,无论是空字符串还是NULL值会占用空间,所占用空间大小取决于建表时候指定的char数据类型的大小。

总结:定长占用空间,不定长不占用空间。是否节省空间是根据数据类型来决定的而不是是否是NULL还是空字符串,撇开数据类型来比较是没有意义的。

定长一旦表结构确定,每页存储记录数固定,不定长则不固定。

定长在update中的性能要高于不定长(个人觉得是远远高于,但是没有测试数据不敢说话)

不定长字段从较长往较短的update情况下会出现差值引起的空间的浪费;另外因为null不占空间,当null 变为非null 以及从短往长的update中都会出现整条数据位置变化,原来的位置空间被抛弃,而引起较大的空间浪费。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: