mysql 字段长度 字符 字节

在创建表的时候,给字段定义完类型之后,紧接着需要指定字段的长度,比如:varchar(20),biginit(20)等。那么问题来了,varchar代表的是字节长度,还是字符长度呢?

create table test_varchar(a varchar(20));
insert into test_varchar values('苏三说技术');
select length(a),CHARACTER_LENGTH(a) from test_varchar;

执行后的结果:

我们看到中文的5个字length函数统计后长度为15,代表占用了15个字节,而使用charcter_length函数统计长度是5,代表有5个字符。所以varchar代表的是字符长度,因为有些复杂的字符或者中文,一个字节表示不了,utf8编码格式的一个中文汉字占用3个字节。不同的数据库编码格式,占用不同的字节数对照表如下:

mysql除了varchar和char是代表字符长度之外,其余的类型都是代表字节长度。

int(n) 这个n表示什么意思呢?从一个列子出发:

ZEROFILL表示长度不够填充0

执行结果:

 mysql常用数字类型字段占用字节数对照表:

从表中可以看出bigint实际长度是8个字节,但是我们定义的a显示4个字节,所以在不满4个字节时前面填充0。满了4个字节时,按照实际的长度显示,比如:123456。但是,需要注意的是,有些mysql客户端即使满了4个字节,也可能只显示4个字节的内容,比如显示:1234。

所以bigint(4),这里的4表示显示的长度为4个字节,实际长度还是8个字节。

原文地址:https://www.cnblogs.com/ooo0/p/15267358.html