db2中null和空值的区别_MySQL数据库的表中 NULL 和 空值 到底有什么区别呢?

da9801c30f6cfeca9a1d6fd6ec2fa854.png

作者:极客小俊 一个专注于web技术的80后

我不用拼过聪明人,我只需要拼过那些懒人 我就一定会超越大部分人!

知乎@极客小俊,官方首发原创文章


浅谈 NULL 和 空值的区别

NULL也就是在字段中存储NULL值
空字符串值也就是字段中存储空字符('')

我们来通过测试来看看 他们彼此的区别:

1、占用空间区别

 mysql> select length(NULL), length(''), length('1');+--------------+------------+-------------+| length(NULL) | length('') | length('1') |+--------------+------------+-------------+|         NULL |          0 |           1 |+--------------+------------+-------------+1 row in set (0.03 sec)​

小结 : 从上面的测试可以看出 字符串空值('')的长度是0,是不占用空间的, 而的NULL长度是NULL,其实它是占用空间的!

NULL columns require additional space in the row to record whether their values are NULL.
意思是: NULL列需要行中的额外空间来记录它们的值是否为NULL

通俗意义上讲: ('')字符串空值就像是一个真空转态杯子,什么都没有,而NULL值就是一个装满空气的杯子,虽然看起来都是一样的,但是有着本质的区别

2、插入方式区别

 #创建一个表,tb_test​create table tb_test(id int unsigned primary key auto_increment,one varchar(10) NOT NULL,two varchar(255) DEFAULT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8;​​插入进行验证:​#全部插入 NULL,会失败  原因就是指定的不允许插入NULLinsert into tb_test(one,two) value (NULL,NULL);1048 - Column 'one' cannot be null​#全部插入 空字符串值,成功  原因就是 ('') 字符 和 NULL的类型都不一样 指定的是不允许插入NULL,又没有说不允许('')空字符串!^.^insert into tb_test(one,two) value ('','');Query OK, 1 row affected#这也是刚刚讲过not null约束测试insert语句的时候, 插入('')空字符串会成功的原因! ​

3、在查询方式上的区别对比

 #创建一个表,tb_test2​create table tb_test2(id int unsigned primary key auto_increment,one varchar(10) NOT NULL,two varchar(255) DEFAULT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8;​#模拟数据:insert into tb_test2(one,two) values (1,NULL);insert into tb_test2(one,two) values ('',2);insert into tb_test2(one,two) values (3,3);​#查询one字段#使用 is null 来查询one字段select * FROM tb_test2 where one is null; #结果就是一条也没有,因为one字段并没有代表为NULL的数据存在!​#使用 is not null 来查询one字段select * FROM tb_test2 where one is not null;  #结果被全部查询出来,因为one字段中的三个数据都不为NULL这个类型​#使用 = 和 != 来查询one字段select * FROM tb_test2 where one ='';select * FROM tb_test2 where one != '';​#查询two字段#使用 is null 来查询two字段select * FROM tb_test2 where two is null;  #结果有一条符合NULL,​#使用 is not null 来查询two字段select * FROM tb_test2 where two is not null; #结果是不符合NULL的有两条​​#使用 = 来查询two字段select * FROM tb_test2 where two ='';​#使用 != 来查询two字段#这里要注意的是为NULL的并没有查询出来,原因用 != 来查 字符串空('')的时候, 会把NULL也当做是字符串空来判断吧! select * FROM tb_test2 where two != ''; ​​

小结: 如果要单纯查NULL值列,则使用 is NULL去查,单纯去查空值('')列,则使用 =''

建议查询方式:NULL值查询使用is null/is not null查询,而空值('')可以使用=或者!=、<、>等算术运算符来查!


4、在count()统计函数上的区别

 #创建一个表,tb_test3​create table tb_test3(id int unsigned primary key auto_increment,one varchar(10) NOT NULL,two varchar(255) DEFAULT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8;​#模拟数据:insert into tb_test3(one,two) values (1,NULL);insert into tb_test3(one,two) values ('',2);insert into tb_test3(one,two) values (3,3);​#使用COUNT函数统计one字段:select count(one) from tb_test3;   #结果为: 3 条, 说明 空字符串('') 会被count()函数统计!#使用COUNT函数统计two字段:select count(two) from tb_test3;   #结果为: 2条,  原因是NULL 不会被count()函数统计到!​#注意: 使用 * 号来统计会把NULL算进去!SELECT count(*) FROM tb_test;+----------+| count(*) |+----------+|        3 |+----------+​

实际开发到底是使用NULL值还是空值('')呢?

根据实际业务来进行区分, 个人建议在实际开发中如果没有特殊的业务场景,可以直接使用空字符串值('') !

03667eac4977341a0b6e4ac3e8eb3c8e.gif

005d4504c530c7e77e8b495be575c0e4.png

如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦! 听说 点赞 的人运气不会太差,每一天都会元气满满哦 嘿嘿!!! ❤️ ❤️ ❤️ 大家的支持就是我坚持下去的动力。点赞后不要忘了 关注 我哦!

更多精彩内容请前往 GeekerJun 或 个人博客、

也可以百度关键字: 极客小俊 获取更多知识干货!

如果以上内容有任何错误或者不准确的地方,欢迎在下面 留个言指出、或者你有更好的

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/526901.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

新联会是什么组织的作用_“新国标”脚蹬子受到人们热议!它的作用是什么,可有可无吗?...

在“新国标”实施的这段时间里&#xff0c;有很多人都开始正常出行&#xff0c;人们也不再为电动车而烦恼。因为你要骑行老国标电动车&#xff0c;那么你就去上牌即可。如果你想体验“新国标”电动车&#xff0c;那么在你购买的时候也会给你上牌&#xff0c;那么上路是没有任何…

server精简版代理意外终止 sql_来自阿里巴巴内部JAVA面试宝典意外流出

前言来自阿里巴巴内部面试宝典意外流出&#xff01;面试宝典内容(JVMMybatisZookeeper)&#xff0c;附答案解析MyBatis系列面试宝典1.MyBatis是什么&#xff1f;Mybatis 是一个半 ORM(对象关系映射)框架&#xff0c;它内部封装了 JDBC&#xff0c;开发时只需要关注 SQL 语句本身…

天津科技大学计算机网络,计算机网络PPT(天津科技大学讲稿-张强)第一章英文对照...

计算机网络课程讲义Chapter 1 IntroductionA note on the use of these ppt slides:We’re making these slides freely available to all (faculty, students, readers). They’re in PowerPoint form so you can add, modify, and delete slides (including this one) and sl…

sox处理mp3_音频处理常用Linux命令总结(一)

今天总结一下常用的linux音频处理工具soX - Sound eXchangesoxisoxi 常用选项soxi: SoX vUsage: soxi [-V[level]] [-T] [-t|-r|-c|-s|-d|-D|-b|-B|-p|-e|-a] infile1 ...-V[n] Increment or set verbosity level (default is 2)-T With -s, -d or -D, display the tota…

2019年12月计算机统考答案,2019年12月计算机等级WPS考前冲刺练习题及答案

【导语】2019年12月计算机等级考试已经进入冲刺阶段&#xff0c;为了方便考生及时有效的备考&#xff0c;那么&#xff0c;无忧考网为您精心整理了2019年12月计算机等级WPS考前冲刺练习题及答案&#xff0c;把握机会抓紧练习吧。如想获取更多计算机等级考试的模拟题及备考资料&…

七乐彩中奖规则表_【开奖】双色球第2020094期开奖结果出炉!你中奖了吗?

东莞福彩——让您人生多福&#xff0c;生活多彩&#xff01;购福彩&#xff0c;做公益&#xff0c;圆梦想。●活动进行时●点击了解↓↓↓●【活动1】727福彩嘉年华&#xff1a;福彩携1000万体验券喊你来生日趴&#xff01;●【活动2】刮刮乐新票“超给力”重磅来袭&#xff01…

远程计算机 函数不支持,win7远程桌面连接提示要求的函数不受支持怎么办

摘要 腾兴网为您分享:win7远程桌面连接提示要求的函数不受支持怎么办&#xff0c;作业大师&#xff0c;智学网&#xff0c;虚拟助手&#xff0c;喜马拉雅等软件知识&#xff0c;以及winrar纯净&#xff0c;powerdesigner中文&#xff0c;云协同&#xff0c;smc选型软件&#xf…

arcgis vue 添加图层优化_行业 | ArcGIS制图技巧(超全)

↑ 点击上方「中国测绘学会」可快速关注我们地理信息系统(Geographic Information System或 Geo&#xff0d;Information system&#xff0c;GIS)有时又称为“地学信息系统”。它是一种特定的十分重要的空间信息系统。它是在计算机硬、软件系统支持下&#xff0c;对整个或部分地…

图片大_2020跨年图片 元旦快乐祝福图片 2019再见2020你好图片大全 新年图片

听说你会画蛋&#xff0c;“圆蛋”画得好这是上天的垂青&#xff0c;但要成为一名令人仰慕的画家&#xff0c;还要靠你不懈的追求。愿你为“圆蛋”而努力&#xff0c;因元旦而快乐终生&#xff01;元旦要到&#xff0c;预祝你用开心享受节日每一秒&#xff0c;用高兴感受生活真…

ise的时钟ip核_Vivado CIC IP核滤波器详解(一)

引言&#xff1a;从本文开始&#xff0c;我们详细介绍Xilinx CIC IP核滤波器相关知识&#xff0c;包括CIC IP核提供的特性、IP核接口描述以及IP核设计指导等相关内容。1.概述级联积分器梳状(CIC)滤波器&#xff0c;也称为Hogenauer滤波器&#xff0c;是用于实现数字系统中大采样…

潍坊经贸每年单招计算机的成绩,2018潍坊职业学院单招成绩查询时间

2018潍坊职业学院单招成绩查询时间2017-12-28 16:59:50文/丁雪竹潍坊职业学院单招什么时候出成绩&#xff0c;考试分数什么时候公布&#xff1f;高三网小编整理了2018潍坊职业学院单招成绩查询入口&#xff0c;希望大家都能在系统官网上查询到自己的成绩。潍坊职业学院单招什么…

天津大学计算机预推免机试_2019预推免汇总 | 9.18New!

设计保研2019年预推免汇总栏目开通了&#xff01;为了抢夺优质生源&#xff0c;每年9月&#xff0c;各大高校会以院系为单位组织开展预推免活动。对于设计保研的同学而言&#xff0c;预推免不容忽视&#xff01;为了帮助大家打赢这场信息战&#xff0c;小设将在官方通知发布的第…

和在线视频会议服务器,什么是视频会议服务器端和客户端?

什么是视频会议服务器端?越来越多的企业采用私有化在企业内部部署视频会议&#xff0c;就不可避免的需要自行搭建视频会议服务器&#xff0c;什么是视频会议服务器端&#xff0c;视频会议服务器端有什么用?视频会议服务器端是整套视频会议的枢纽,是用来传输以及存储用户信息的…

zookeeper 默认端口_ZooKeeper知识点汇总

一、ZooKeeper简介1. ZooKeeper是什么​ Apache ZooKeeper是一个开源的分布式服务框架&#xff0c;为分布式应用提供协调服务&#xff0c;用来解决分布式应用中的数据管理问题&#xff0c;如&#xff1a;配置管理、域名服务、分布式同步、集群管理等官网 https://zookeeper.apa…

侍魂服务器维修,侍魂胧月传说合服活动开启 4月15日更新内容预告

侍魂胧月传说合服活动开启。侍魂胧月传说将会在4月15日执行停机更新&#xff0c;此次更新将会开启合服活动&#xff0c;即对多组服务器进行合服互通&#xff0c;随之而来还有服务器内开展一些合服活动&#xff0c;此外还有对家族矿战玩法的优化及商城的调整更新&#xff0c;那么…

电脑pro,大师屏幕,小米归来!小米笔记本Pro 15 OLED首发评测

2016 年 7 月&#xff0c;小米正式杀入笔记本市场&#xff0c;推出了两款轻薄本。在当时主流的轻薄本市场都用着低色域 TN 屏和塑料机身的情况下&#xff0c;小米用高素质的屏幕和金属 CNC 一体化机身搅动了整个市场。遗憾的是&#xff0c;小米笔记本的模具在这之后更新的并不频…

无线路由器的DNS服务器怎么设置,无线路由器DNS的设置方法

路由器DNS怎么设置&#xff1f;其实一般情况下路由器上的DNS是无需进行设置&#xff1b;如果你电脑、手机等设备连接到路由器后&#xff0c;只能够登录QQ&#xff0c;网页打不开。这是因为路由器上的DNS配置被接触/串改了原标题&#xff1a;"无线路由器DNS的设置方法"…

仪表盘刻度调整_惊艳了我的仪表盘 那些年我遇到最美的“面孔”

文| G哥汽仪表盘上的信息可以让车主们了解自己座驾的状况&#xff0c;出彩的仪表盘设计甚至能让消费者购车时对这款车一见倾心&#xff0c;回顾过往曾经惊艳到我们的那些酷炫仪表盘&#xff0c;那些面孔你是否还依稀还记得……汽车的什么地方最凸显其科技感&#xff1f;营造高科…

负数比较大小_人教版六下【第一单元】负数比较负数的大小

点击蓝色文字关注我们吧&#xff01;主讲人邬卫老师&#xff0c;长沙市喻沛名师“错例研究”工作室成员。今天讲的微课是人教版小学数学六年级下册第一单元《负数》中有关“比较负数的大小”的典型错题分析。 摘要仿例组练 掌握了这些解题策略及方法之后&#xff0c;我们…

创建数组_如何创建数组

js数组js的数组不是典型的数组典型的数组元素的数据类型相同使用连续的内存储存通过数字下标获取元素但是js的数组不这样元素的数据类型可以不同内存不一定连续的&#xff08;对象是随机储存的&#xff09;不可以通过数字下标&#xff0c;而是通过字符串下标这意味着数组可以有…