共计 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 表:
看看有哪些列没有 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 问一下细节