MySQL数据库之Mysql中空字符和空值的区别
小标 2019-03-06 来源 : 阅读 1379 评论 0

摘要:本文主要向大家介绍了MySQL数据库之Mysql中空字符和空值的区别 ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助。

本文主要向大家介绍了MySQL数据库之Mysql中空字符<''>和空值的区别 ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助。

MySQL数据库之Mysql中空字符和空值的区别

Mysql中空字符<''>和空值的区别,一直都知道mysql中空字符串(”)和空值(null)之间有区别,但是没好好研究过。直到项目上,这两个概念被我搞混了之后才想起来研究一下。

根据网上的说法,空字符串(”)是不占用空间,而空值(null)是占用空间。(这里我不太明白,因为我的理解是,字符串都会有一个结束符,这个结束符不会占用空间吗??)。

虽然有不明白的地方,但是不影响这篇文章对这两个值的分析。

为了分析区别,这里新建一张表 test_null,并插入4行数据。


CREATE TABLE test_null (

    id int,

    value_1 varchar(128),

    value_2 varchar(128) not null

)

   



这里需要说一下,将字段设置为 not null之后是可以插入空字符(”)的。影响的只是不能插入空值(null)。

首先比较一下,空字符(”)和空值(null)查询方式的不同。




由此可见,null 和 ”的查询方式不同。而且比较字符 ‘=’’>’ ‘<’ ‘<>’是不能用于查询null。如果需要查询空值(null),需使用is null 和is not null。

第二种比较,参与运算。




由此可见,空值(null)是不能参与任何计算,因为空值参与任何计算都为空。所以,当程序业务中存在计算的时候,需要特别注意。如果非要参与计算,需使用ifnull函数,将null转换为”才能正常计算。

第三种比较,统计数量




由此可见,当统计数量的时候。空值(null)并不会被当成有效值去统计。同理,sum()求和的时候,null也不会被统计进来,这样就能理解,为什么null计算的时候结果为空,而sum()求和的时候结果正常了。

以上对比,算得上是程序中经常会遇到但又不容易注意的问题。

网络上,针对这两个值。有一种说法会比较好理解。在存电话号码字段中,空值(null)代表你没有电话,而空字符串(”)则代表,你有电话但是没有填写。或者理解,填写了又删除掉。

还有一种理解方式。null是尚未定义的值,表示未知。而”,确定为一个空字符串。所以未知的值,无法进行各种比较(大于,小于,等于),也不能用于计算(加减乘除)。

我的理解是,不考虑是否占用内存。null代表什么都没有,”代表的就是一个空白的字符串。所以,null什么都没有就不能用于比较。

无论怎么理解,都需要记住这两个值的区别。避免在项目中碰到错误。


          

本文由职坐标整理并发布,希望对同学们学习MySQL有所帮助,更多内容请关注职坐标数据库MySQL数据库频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程