MySQL各类数据类型的最大长度与范围限制
在MySQL中,每种数据类型都有自己的最大长度限制,首先要了解一下各种字符咱用的空间。
UTF-8 : 一个英文/数字字符占1个字节,一个中文(含繁体)字符占3个字节。
Unicode: 一个英文/数字字符占2个字节,一个中文(含繁体)字符占2个字节。
标点符号: 英文标点占1个字节,中文标点占2个字节。举例:英文句号“.”占1个字节的大小,中文句号“。”占2个字节的大小。
MySQL对应不同的数据类型都有最大长度与范围限制,当存储的数据超出上述限制时,应选择更大的数据类型,以免造成数据溢出和损失。MySQL中不同的数据类型有不同的最大长度限制,主要如下:
1、字符型
char(n):最大长度为255个字符
varchar(n):最大长度为65535个字符(受字符编码影响)
tinytext:最大长度为255个字符
text:最大长度为65535个字符(5.5.3之前),或21844字符(5.5.3之后,utf8mb4编码)
mediumtext:最大长度为16777215个字符
longtext:最大长度为4294967295个字符
2、数值型
tinyint: 1字节,范围-128~127
smallint: 2字节,范围-32768~32767
mediumint: 3字节,范围-8388608~8388607
int/integer: 4字节,范围-2147483648~2147483647
bigint: 8字节,范围-9223372036854775808~9223372036854775807
3、日期时间型
date: 3字节,范围’1000-01-01’到’9999-12-31’
time: 3字节,范围’-838:59:59’到’838:59:59’
year: 1字节,范围1901到2155
datetime: 8字节,范围’1000-01-01 00:00:00’到’9999-12-31 23:59:59’
4、浮点数型
float(n):4字节,n代表数字位数,总位数不超过24
double(n):8字节,n代表数字位数,总位数不超过53
decimal(m,d):m+2字节,m代表整数位数,d代表小数位数,总位数不超过65
另外需要科普一下常用的char、varchar字符类型的长度的区别:
char:固定长度,最大长度是255字符。适合用在身份证号码、手机号码等定、等长的加密密码等。
varchar:可变长度,最大长度65535字节,其实最多只能存储65532个字节,还有3个字节用于存储长度。
1、char的存取速度优于varchar
2、char(20)表示这个字段最多存20个字符,如果只存了16个字符,那么也会占用20个字符的空间
3、varchar(20)表示这个字段最多存20个字符,如果只存了16个字符,那么只占用16个字符的空间
4、即使使用Varchar数据类型,也不能够太过于慷慨!比如你只使用到90个字符,VARCHAR(100)与VARCHAR(200),虽然他们用来存储90个字符的数据,其存储空间相同。但是对于内存的消耗是不同的。