【MySQL】小知识:请问字段类型 char 和 varchar 有何区别?

首先,char 类型和 varchar 类型都是存储字符或字符串的字段类型。

1. 区别:

  char 存储的列是固定长度的,比如 char(5) 的列就是固定五个字符,如果插入的内容少于 5 个字符,则用空格填充。

   而 varchar 存储的列不固定长度,varchar(5) 表示最多某行一列的值占 五个字符。

2.细节补充:

  一、虽然 char 当插入少于固定长度时,会补充空格。但在查询是,mysql 会自动 trim() 结果,所以查询时是 trim 后的结果。

  比如 insert "a ",注意是 a + 空格,但插入后查询出来仍然是 "a"

  二、char() 的列虽是固定字符长度,但字节长度却不固定。

  比如:

create table table1(a char(5)) charset=utf8 engine = innoDB;
insert into table1 values('12345');     // 五个字节
insert into table1 values('举头望明月');   // 十五个字节
select length(a) from table1 limit 10;   // 5 15

create table table2(a char(5)) charset=gbk engine = innoDB;
insert into table2 values('12345');     // 五个字节
insert into table2 values('举头望明月');   // 十个字节
select length(a) from table2 limit 10;   // 5 10

  

三、varchar 超出定义的长度时,再插入,结果怎样?

  如果当前 mysql 服务端开启了严格模式(strict_mode),则插入会失败。

  如果当前 mysql 没有开启严格模式,则会将插入部分超出长度的部分(左起)舍弃掉,只存储定义的长度的部分。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

«   2021年5月   »
12
3456789
10111213141516
17181920212223
24252627282930
31
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
文章归档
网站收藏
友情链接

    Powered By Z-BlogPHP 1.5.2 Zero

    Copyright liuyang1.com. 转载文章,请注明出处。谢谢!