MySQL系列关于NUll值的经验总结分析教程

吾爱主题 阅读:149 2024-04-02 08:06:39 评论:0
目录
  • 1.测试数据
  • 2.null值带给我们的不便影响
  • 3.空格、空值和null,我们应该怎么判断呢?
    • 1)空格、空值和null的区别
    • 2)出现了null值,我应该怎么办?

1.测试数据

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 create table test_null (      id int ,      name varchar (20),      chinese int ,      math int ,      english int ) charset=utf8;   insert into test_null values (1, null ,80,70,68), (2, '张三' ,60, null , null ), (3, '李四' , null ,90,80), (4, '王五' ,90,60,75), (5, null , null ,50,95);

结果如下:

2.null值带给我们的不便影响

1)过滤有所不同,只能使用is null或者is not null;

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 # null 值不能使用 == 或 != 来比较 # 下面两种用法都是错误的 select * from test_null where name == null ;   select * from test_null where name != null ;   # null 值一般使用 is null is not null 来比较 # 下面两种用法才是正确的 select * from test_null where name is null ;   select * from test_null where name is not null ;

2)出现null值,会导致+ - * /运算失效;

?
1 2 3 select      *,(chinese+math+english) as 总分 from test_null;

结果如下:

3)null值对聚合函数无影响,聚合函数会直接忽略null值;

?
1 2 3 4 5 select      sum (chinese) 语文总分,      sum (math) 数学总分,      sum (english) 外语总分 from test_null

结果如下:

3.空格、空值和null,我们应该怎么判断呢?

1)空格、空值和null的区别

用一个形象的比喻来说明这三者的区别。首先空格很好理解,一个空字符串吗,占据一定的空间大小。不好理解的其实是空值和null,空值相当于一个杯子是真空状态的,什么也没有,null表示的杯子中有空气。

mysql中,null是未知的,且占用空间的。null使得索引、索引统计和值都更加复杂,并且影响优化器的判断。空值('')是不占用空间的,注意空值的''之间是没有空格的。在进行count()统计某一列记录数的时候,如果存在null值,会被系统自动忽略掉,但是空值会被统计到其中。判断null使用的是is nullis not null,但判断空字符使用的是= ,!=, <>来进行处理。对于timestamp数据类型,如果插入null值,则出现的值是当前系统时间。插入空值,则会出现0000-00-00 00:00:00。对于已经创建好的表,普通的列将null修改为not null带来的性能提升较小,所以调优时候没有比要注意。

2)出现了null值,我应该怎么办?

通过上面的分析我们已经知道了,当表中存在null值,会导致加、减、乘、除运算失效。那么我们怎么处理这些null值比较好呢?

第一种方式:直接使用is not null将这些null值过滤掉,但是这样会将其它非缺失值的字段过滤掉,造成数据的浪费。

第二种方式:也是我们推荐的方式,我们使用函数进行缺失值的填充。

ifnull()和coalesce()函数的使用:

?
1 2 3 4 5 6 7 select          id,          coalesce ( name , '无名氏' ) name ,          coalesce (chinese,0) chinese,          ifnull(math,0) math,          ifnull(english,0) english from test_null;

结果如下:

以上就是mysql系列关于null值的经验总结分析的详细内容,更多关于mysql中的null值的资料请关注服务器之家其它相关文章!

原文链接:https://huang-tong-xue.blog.csdn.net/article/details/106851833

可以去百度分享获取分享代码输入这里。
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

【腾讯云】云服务器产品特惠热卖中
搜索
标签列表
    关注我们

    了解等多精彩内容