文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2024-04-02 19:55

关注

1.测试数据


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;


# 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值,会导致+ - * /运算失效;


select 	
	*,(chinese+math+english) as 总分
from test_null;

结果如下:

在这里插入图片描述

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


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()函数的使用:


select 
    	id,
    	coalesce(name,'无名氏') name,
    	coalesce(chinese,0) chinese,
    	ifnull(math,0) math,
    	ifnull(english,0) english
from test_null;

结果如下:

在这里插入图片描述

以上就是MySQL系列关于NUll值的经验总结分析的详细内容,更多关于MySQL中的NUll值的资料请关注编程网其它相关文章!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯