Mysql中NULL和Empty String的区别是什么

97次阅读
没有评论

共计 1269 个字符,预计需要花费 4 分钟才能阅读完成。

自动写代码机器人,免费开通

这期内容当中丸趣 TV 小编将会给大家带来有关 Mysql 中 NULL 和 Empty String 的区别是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

create table tablist(TABLE_SCHEMA varchar(40),TABLE_NAME varchar(40),COLUMN_NAME varchar(40),COLUMN_TYPE varchar(40),
IS_NULLABLE varchar(10),COLUMN_DEFAULT varchar(40),COLUMN_COMMENT varchar(1000),REMARK varchar(2000));
insert into tablist(TABLE_SCHEMA,TABLE_NAME,COLUMN_NAME,COLUMN_TYPE,IS_NULLABLE,COLUMN_DEFAULT,COLUMN_COMMENT)
select TABLE_SCHEMA,TABLE_NAME,COLUMN_NAME,COLUMN_TYPE,IS_NULLABLE,COLUMN_DEFAULT,COLUMN_COMMENT
from information_schema.`COLUMNS` where TABLE_SCHEMA= leo

然后查询 tablist 表:

Mysql 中 NULL 和 Empty String 的区别是什么

看看有哪些列没有 comment 于是:

select * from tablist where COLUMN_COMMENT is null;

查到的结果居然是 Empty set。不过从以上查询结果和 navicat 都能看出:null 值在结果集中显示的是 null 的单词, 而空字符串则显示为空。

查过资料后发现 Mysql 的 null 值和空字符串是有区别的,这里很奇怪 COLUMN_COMMENT 在经过 insert 之后,null 值居然变成了空字符串(原因未明)。

使用 select * from tablist where COLUMN_COMMENT= 查询正常。

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.

在 Mysql 的 myisam 引擎中,null 值占用额外的存储空间(1bit),空字符串则完全不占用空间。同时 null 值在 B 树索引中也无法被存储,数据量大时会造成较严重的性能问题。

两者的查询方式也不一样:null 值查询使用 is null/is not null 查询,而 empty string 使用 = 或者!= 查询即可。

上述就是丸趣 TV 小编为大家分享的 Mysql 中 NULL 和 Empty String 的区别是什么了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注丸趣 TV 行业资讯频道。

向 AI 问一下细节

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-12-04发表,共计1269字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)