• ADADADADAD

    MySQL中的''、' '和 NULL在Innodb存储的区别[ mysql数据库 ]

    mysql数据库 时间:2024-11-28 13:02:40

    作者:文/会员上传

    简介:

    一、测试环境mysql>createtabletestn(avarchar(20),bvarchar(20));QueryOK,0rowsaffected(0.43sec)mysql>insertintotestnvalues('','gaopeng');QueryOK,1r

    以下为本文的正文内容,内容仅供参考!本站为公益性网站,复制本文以及下载DOC文档全部免费。

    一、测试环境
    mysql>createtabletestn(avarchar(20),bvarchar(20));QueryOK,0rowsaffected(0.43sec)mysql>insertintotestnvalues('','gaopeng');QueryOK,1rowaffected(0.08sec)mysql>insertintotestnvalues('','gaopeng');QueryOK,1rowaffected(0.12sec)mysql>insertintotestnvalues(NULL,'gaopeng');QueryOK,1rowaffected(0.08sec)mysql>commit;QueryOK,0rowsaffected(0.00sec)

    我们看到包含了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存储的区别.docx

    将本文的Word文档下载到电脑

    推荐度:

    下载
    热门标签: mysqlinnodb