mysql的NULL和空值

ModbusRTU串口读写报文解析 解析MODBUS报文的格式,讨论异常状态、读多个寄存器与写多个寄存器 阅读详情

相信很多用了mysql很久的人,对这两个字段属性的概念还不是很清楚,一般会有以下疑问:

1、我字段类型是not null,为什么我可以插入空值

2、为毛not null的效率比null高

3、判断字段不为空的时候,到底要  select * from table where column <> '' 还是要用 select * from table where column is not null 呢。


带着上面几个疑问,我们来深入研究一下null 和 not null 到底有什么不一样。

首先,我们要搞清楚“空值” 和 “NULL” 的概念:

1、空值是不占用空间的

2、mysql中的NULL其实是占用空间的,下面是来自于MYSQL官方的解释

“NULL columns require additional space in the row to record whether their values are NULL. For MyISAM tables, each NULL column takes one bit extra, rounded up to the nearest byte.”

打个比方来说,你有一个杯子,空值代表杯子是真空的,NULL代表杯子中装满了空气,虽然杯子看起来都是空的,但是区别是很大的。


搞清楚“空值”和“NULL”的概念之后,问题基本就明了了,我们搞个例子测试一下:

[php]  view plain copy
  1. CREATE TABLE  `test` (  
  2.  `col1` VARCHAR( 10 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ,  
  3.  `col2` VARCHAR( 10 ) CHARACTER SET utf8 COLLATE utf8_general_ci NULL  
  4. ) ENGINE = MYISAM ;  


插入数据:

[php]  view plain copy
  1. INSERT INTO `test` VALUES (null,1);  
mysql发生错误:

[php]  view plain copy
  1. #1048 - Column 'col1' cannot be null   

再来一条

[php]  view plain copy
  1. INSERT INTO `test` VALUES ('',1);  
成功插入。

可见,NOT NULL 的字段是不能插入“NULL”的,只能插入“空值”,上面的问题1也就有答案了。


对于问题2,上面我们已经说过了,NULL 其实并不是空值,而是要占用空间,所以mysql在进行比较的时候,NULL 会参与字段比较,所以对效率有一部分影响。

而且B树索引时不会存储NULL值的,所以如果索引的字段可以为NULL,索引的效率会下降很多。


我们再向test的表中插入几条数据:

[php]  view plain copy
  1. INSERT INTO `test` VALUES ('', NULL);  
  2. INSERT INTO `test` VALUES ('1', '2');  

现在表中数据:

现在根据需求,我要统计test表中col1不为空的所有数据,我是该用“<> ''” 还是 “IS NOT NULL” 呢,让我们来看一下结果的区别。

[php]  view plain copy
  1. SELECT * FROM `test` WHERE col1 IS NOT NULL  


[php]  view plain copy
  1. SELECT * FROM `test` WHERE col1 <> ''  



可以看到,结果迥然不同,所以我们一定要根据业务需求,搞清楚到底是要用那种搜索条件。

全球最大光伏电池缺陷异常检测数据集PVELAD【发布】 下载地址 1:GitHub - binyisu/PVEL-AD 下载地址 2:http://aihebut.com/col.jsp?id=118 下载地址 3:NAVEDownload 竞赛测试系统:Photovoltaic cell anomaly detection | Kaggle 一、简介 PVEL-AD 数据集又叫做EL2021数据集是用于对光伏电池异常缺陷检测方法进行基准测试的数据集,重点是光伏电池工业检测。PVEL-AD包含 36,543 张具有各种内部缺陷和异构背... 阅读详情

相关推荐

利用python爬取东方财富网股吧评论并进行情感分析(一)

利用python爬取东方财富网股吧评论(一) python-东方财富网贴吧文本数据爬取 分享一下写论文时爬数据用到的代码,有什么问题或者改善的建议的话小伙伴们一起评论区讨论。 新的改变 我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客: 全新的界面设计 ,将会带来全新的写作体验; 在创作中心设置你喜爱的代码高亮样式,Markdown 将代码片显示选择的高亮样式 进行展示; 增加了 图片拖拽 功能,你可以将本地的图片直

YMG521000的博客 1万+

mysql探究之null与not null

相信很多用了mysql很久的人,对这两个字段属性的概念还不是很清楚,一般会有以下疑问: 1、我字段类型是not null,为什么我可以插入空值 2、为毛not null的效率比null高 3、判断字段不为空的时候,到底要  select * from table where column 带着上面几个疑问,我们来深入研究一下null 和 not null 到底有什么不一样。 首

fwkjdaghappy1的专栏 5万+

WGS-84 ECEF ENU 坐标系学习记录

地球坐标系固定在地球上而随地球一起在空间做公转和自转运动,因此地球上任一固定点在地球坐标系的坐标就不会由于地球旋转而变化。地心地固直角坐标系和大地坐标系都属于这种坐标系。 一、 几种坐标系 地心地固直角坐标系(ECEF)坐标系 其原点为地球的质心,x轴延伸通过本初子午线(0度经度)和赤道(0deglatitude)的交点。 z轴延伸通过的北极(即,与地球旋转轴重合)。 y轴完成右手坐标系,穿...

YYshuangshuang的博客 1万+

【MySQL】基础篇【约束概述 NOT NULL】

为什么需要约束 数据完整性(Data Integrity)是指数据的精确性(Accuracy)和可靠性(Reliability)。它是防止数据库中 存在不符合语义规定的数据和防止因错误信息的输入输出造成无效操作或错误信息而提出的。 为了保证数据的完整性,SQL规范以约束的方式对表数据进行额外的条件限制。

weixin_59131972的博客 1079

android11-修改屏幕显示方向和触摸方向

参数0表示12点钟方向显示参数90表示3点钟方向显示参数180表示6点钟方向显示参数270表示9点钟方向显示。

Paper_Love的博客 2118

复现论文报错解决

博主复现论文代码过程中遇到的各种报错及解决方案~

rellvera的博客 1059

为什么建议MySQL列属性尽量NOT NULL

本文测试环境:MySQL5.7,Engine=InnoDB,charset=utf8。 【1】简解 先看一段官方的话:很多表都包含可为null(空值)的列,即使应用程序并不需要保存null也是如此,这是因为可为null是列的默认属性。通常情况下最好指定为Not null,除非真的需要存储null值。 如果查询中包含可为null的列,对MySQL来说更难优化,因为可为null的列使得索引、索引统计和......

小小默:进无止境 5173

第150篇 激光雷达点云分割——地面分离、聚类分析和物体提取

本文介绍了点云分割的三种经典几何方法:RANSAC地面分离、欧式聚类和区域生长。RANSAC通过随机采样拟合平面实现地面分割,欧式聚类基于空间距离进行物体分割,区域生长则结合法线信息提升分割精度。文章对比了各种方法的优缺点,提供了参数选择建议,并指出实际项目中常组合使用这些方法。最后给出了面试应答技巧,强调几何方法速度快、可解释性强等优势,适合大多数机器人项目的实时需求。

郑伟强dev的专栏 192

mysql null与not null

NULL 和 空字符 NULL 和 NOT NULL的区别

半路出家,立地为猿 2733

欺诈文本分类微调(一):基座模型选型

通义千问Qwen2具有0.5B、1.5B、7B、72B等一系列参数大小不等的模型,我们需要做的是从大到小依次测试每个模型的能力,找到满足自己需要的最小参数模型。依1.5B和1.5B-Instruct的主要区别:按照官方文档,前者是预训练模型,后者是经过指令微调的模型。

golfxiao的专栏 2655

把 ABAP 选择屏幕 Selection Screen 打造成可维护的交互面板:常用屏幕元素与动态控制全解析

本文详细介绍了ABAP报表中Selection Screen的设计技巧,包括空行(SKIP)、横线(ULINE)、注释(COMMENT)等基础元素的使用方法,以及如何通过MODIF ID实现动态界面调整。重点讲解了行内布局(BEGIN OF LINE)、按钮(PUSHBUTTON)和区块(BLOCK)等高级功能,帮助开发者将选择屏幕从"能用"提升到"好用、易扩展、可维护"的水平。文章还分享了项目实践中的命名规范和分组策略,特别适合需要优化ABAP报表用户体验的开发人员

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 331

mysql设置not null和null区别

mysql设置not null和null区别

hexiaoniao的博客 4685

【人工智能之深度学习】15. 工业时序预测实战:LSTM与TCN融合的装备故障预警系统设计与实现

摘要:工业装备故障预警是智能制造领域的核心技术之一,其通过分析传感器时序数据实现故障提前预测,可显著降低运维成本并提升设备可靠性。本文针对工业时序数据多源异构、非平稳性、噪声干扰及样本不平衡等挑战,提出一种LSTM与TCN融合的故障预警架构——利用TCN捕捉局部时序特征,结合注意力增强LSTM建模长期依赖关系,通过门控机制实现特征自适应融合。以3MW风电齿轮箱为研究对象,设计包含数据预处理、特征工程、模型训练及部署的完整流程,实验结果表明,该融合模型准确率达94.6%,故障预测提前量较单一模型提升30%以上

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 1441

MySQL 中NULL和空值的区别?

做一个积极的人 编码、改bug、提升自己 我有一个乐园,面向编程,春暖花开! 01 小木的故事 作为后台开发,在日常工作中如果要接触Mysql数据库,那么不可避免会遇到Mysql中的NULL和空值。那你知道它们有什么区别吗? 学不动了,也不想知道它们有什么区别。大兄弟,不行啊,要面试! 前些天我的好朋友小木去应聘工作,他面试完回来和我聊天回味了一道他的面试题。 面试官:你有用过MyS...

阿飞云漫步 2万+

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

MySQL 中NULL和空值的区别

1、空值不占空间,NULL值占空间。当字段不为NULL时,也可以插入空值。 2、当使用 IS NOT NULL 或者 IS NULL 时,只能查出字段中没有不为NULL的或者为 NULL 的,不能查出空值。 3、判断NULL 用IS NULL 或者 is not null,SQL 语句函数中可以使用IFNULL()函数来进行处理,判断空字符用 =''或者<>''来进行处理。 4、在进行count()统计某列的记录数的时候,如果采用的NULL值,会别系统自动忽略掉,但是空值是会进行统计到其中的。 5、

kang1011的博客 6252

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

MySQL 开发避坑:NULL 和空值不是一回事

MySQL 中 NULL 和空值 '' 是容易混淆的两个概念:NULL 表示字段没有实际值,存储上占用空间,查询时必须使用 IS NULL / IS NOT NULL;空值是真正的空字符串,不占用长度空间,可以使用 = / != 查询。聚合函数如 COUNT() 会统计空值,但不会统计 NULL。开发中尤其要注意:不能用 = NULL 判断空值,否则会导致查询结果不准确。

m0_70325779的博客 6681

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

mysql空值比较_mysql中null和空值的区别

背景:今天因为MySQL中NULL和空值的区分错误,解决一个很简单的数据库查询问题花了一个小时,很是懊悔,所以开始正文吧!区别详细:1 空值和NULL为两个概念空值在MySQL中不占空间,NULL在mysql中占有空间。2 空值不一定为空① 在MySQL数据库中,空值是一个比较特殊的字段,在不同的情形下,空值往往代表不同的含义。这是MySQL数据库的一种特性。如在普通的字段中(字符型的数据),空值...

weixin_28992423的博客 1386

MySQL中NULL与空值的区别

在MySQL数据库中,NULL和空值是两个经常被提及的概念,但它们在含义和处理方式上有着本质的区别。理解这些差异对于编写高效、准确的SQL查询至关重要。本文将深入探讨MySQL中NULL和空值的概念、它们之间的区别以及如何在查询中正确处理它们。

My_wife_QBL的博客 1143

mysql中null与“空值”的坑

数据库在企业环境中是非常常用的,不仅仅是DBA,运维人员和开发人员都要熟悉数据库的使用,增删改查等操作。而对于使用数据库的人员来说,对于字段、属性的熟悉是相当重要的。今天就给大家分享下mysql下面的字段类型null 和''的区别,新手很需要。

流風餘韻的专栏 3万+

mysql查询空值和null_Mysql null 和 空值 的区别

在建表时字段设置为空还是默认不为空到底该如何设置,来做下分析,首先我们要搞清楚 空值” 和 “NULL” 的概念1:空值('')是不占用空间的2、mysql中的NULL其实是占用空间的,下面是来自于MYSQL官方的解释二 官方文档 NULL columns require additional space in the rowto record whether their valu...

weixin_39664998的博客 417

mysql中的null值和空值区别

转自: http://itindex.net/detail/49930-%E7%AC%94%E8%AE%B0-mysql-null mysql中的null值和空值区别,注意到null值是未知的,占用空间,并且不走索引;下面转载两篇文笔记之: http://my.oschina.net/junn/blog/161769 相信很多用了mysql很久的人,对这两个字段属

刘锐群的笔记 637

MySQL NULL与空值

一 NULL和空值 NULL也就是在字段中存储NULL值,空值也就是字段中存储空字符(’’)。 1、占用空间区别 mysql> select length(NULL), length(''), length('1'); +--------------+------------+-------------+ | length(NULL) | length('') | length('1') ...

xupeng1644的博客 2527

深入理解mysql的空值和NULL值

下面参考: 官方文档mysql 5.7 博文:https://blog.youkuaiyun.com/ITYang_/article/details/50791162 https://blog.youkuaiyun.com/zengcong2013/article/details/79149023 1.我们先探讨字段为NOT NULL情况下是否可以存储空值 首先来个例子: 如图: 虽然字段是not ...

Ru_yin_hai的博客 2294

MySQL null与not null和null与空值‘‘的区别

null 表示什么也不是, 不能=、>、< … 所有的判断,结果都是false,所有只能用 is null进行判断。 转自:https://segmentfault.com/a/1190000009540449 相信很多用了MySQL很久的人,对这两个字段属性的概念还不是很清楚,一般会有以下疑问: 我字段类型是not null,为什么我可以插入空值 为毛not null的效率比null高 判断字段不为空的时候,到底要select * from table where column &.

渣渣 756

insert into 插入空值_MySQL数据库的表中 NULL 和 空值 到底有什么区别呢?

作者:极客小俊 一个专注于web技术的80后我不用拼过聪明人,我只需要拼过那些懒人 我就一定会超越大部分人!知乎@极客小俊,官方首发原创文章浅谈 NULL 和 空值的区别NULL也就是在字段中存储NULL值空字符串值也就是字段中存储空字符('')我们来通过测试来看看 他们彼此的区别:1、占用空间区别mysql小结 : 从上面的测试可以看出 字符串空值('')的长度是0,是不占用空间的, 而的...

weixin_39543835的博客 2180

mysql中Null 与空值的区别

mysql中null确实很难缠,往往很多高手在sql优化时都被它坑过,下面总结了他们的区别: MySQL中,null是未知的,且占用空间的。null使得索引、索引统计和值都更加复杂,并且影响优化器的判断。 空值('')是不占用空间的,注意空值的''之间是没有空格。 在进行count()统计某列的记录数的时候,如果采用的 NULL 值,会被系统自动忽略掉,但是空值是会进行统计到其中的。 判断...

布道 6541
上一篇: MySQL数据类型详解
下一篇: MySQL性能优化的最佳21条经验
DSIslander
博客等级 码龄20年 14粉丝 2原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值