我的编程空间,编程开发者的网络收藏夹
学习永远不晚

MySQL中的''、' '和 NULL在Innodb存储的区别

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

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

MySQL中的''、' '和 NULL在Innodb存储的区别

这篇文章主要介绍“MySQL中的''、' '和 NULL在Innodb存储的区别”,在日常操作中,相信很多人在MySQL中的''、' '和 NULL在Innodb存储的区别问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”MySQL中的''、' '和 NULL在Innodb存储的区别”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

一、测试环境

mysql> create table testn(a varchar(20),b varchar(20));
Query OK, 0 rows affected (0.43 sec)
mysql> insert into testn values('','gaopeng');
Query OK, 1 row affected (0.08 sec)
mysql> insert into testn values(' ','gaopeng');
Query OK, 1 row affected (0.12 sec)
mysql> insert into testn values(NULL,'gaopeng');
Query OK, 1 row affected (0.08 sec)
mysql> commit;
Query OK, 0 rows affected (0.00 sec)

我们看到包含了3行,包含了3种情况,下面我们分别分析。

二、解析

第一行 insert into testn values(‘’,’gaopeng’);

原始存储如下:

070000000010002200000014061c000000002fe5bb0000016e011067616f70656e67
  • 07 :第2个字段可变长度7

  • 00 :第1个字段可变长度0

  • 00 :NULL位图 没有NULL字段

  • 0000100022:5字节固定

  • 00000014061c ROWID

  • 000000002fe5 TRX ID

  • bb0000016e0110 ROLL PTR

  • :第一个字段没有存储 字符’’

  • 67616f70656e67 :第二个字段 ‘gaopeng’

第二行:insert into testn values(‘ ‘,’gaopeng’);

原始存储如下:

070100000018002200000014061d000000002fe6bc0000017901102067616f70656e67
  • 07 :第2个字段可变长度7

  • 01 :第1个字段可变长度1

  • 00 :NULL位图 没有NULL字段

  • 0000180022:5字节固定

  • 00000014061d ROWID

  • 000000002fe6 TRX ID

  • bc000001790110 ROLL PTR

  • 20:空字符’ ‘

  • 67616f70656e67 :第二个字段 ‘gaopeng’

第三行:insert into testn values(NULL,’gaopeng’);

原始存储如下:

0701000020ffac00000014061e000000002febbf0000017c011067616f70656e67
  • 07:第2个字段可变长度7

  • 01:NULL位图为为00000001 表示第一个字段为NULL

  • 000020ffac:5字节固定

  • 00000014061e ROWID

  • 000000002feb TRX ID

  • bf0000017c0110 ROLL PTR

  • :第一个字段NULL

  • 67616f70656e67:第二个字段 ‘gaopeng’

三、总结

  • ‘’不做存储,但是会记录可变长度的长度为0,NULL位图本位为0。

  • NULL不做实际存储,也不会记录可变长度,但是NULL位图本位为1。

  • ‘ ‘ 做存储为0X20,记录可变长度为01,NULL位图本位为0。

到此,关于“MySQL中的''、' '和 NULL在Innodb存储的区别”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!

免责声明:

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

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

MySQL中的''、' '和 NULL在Innodb存储的区别

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Linux中多命令执行';'和'&&'的区别有哪些

这篇文章将为大家详细讲解有关Linux中多命令执行;和&&的区别有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。在Linux运维过程中或者日常Linux系统操作过程中会同时执行多条命令,这样的话需要通
2023-06-09

mysql 在存储过程中的用户变量、系统变量、局部变量的区别

MySQL数据库中的变量分为MySQL系统变量和MySQL用户变量。 一、MySQL用户变量:基于会话变量实现的, 可以暂存值, 并传递给同一连接里的下一条sql使用的变量.当客户端连接退出时,变量会被释放。 1、用户变量定义: 用户变量:以"@"开始,形式为
mysql 在存储过程中的用户变量、系统变量、局部变量的区别
2020-01-27

mysql存储中使用while批量插入数据(批量提交和单个提交的区别)

目录批量提交完整写法单个提交完整写法结论批量提交while 语句写法:while '条件' do循环体语句;end while;完整写法drop procedure if exists test_insert;delimiter $
2022-08-17

编程热搜

目录