MySQL 字段类型占用空间(全)

@nango
MySQL支持多种列类型:数值类型、日期/时间类型和字符串(字符)类型。
首先来看下各类型的存储需求(即占用空间大小):

数值类型存储需求

列类型存储需求
TINYINT1个字节
SMALLINT2个字节
MEDIUMINT3个字节
INT, INTEGER4个字节
BIGINT8个字节
FLOAT(p)如果0 <= p <= 24为4个字节, 如果25 <= p <= 53为8个字节
FLOAT4个字节
DOUBLE [PRECISION], item REAL4个字节
DECIMAL(M,D), NUMERIC(M,D)变长(0-4个字节)
BIT(M)大约(M+7)/8个字节


int(10)这里的10指的是数值的宽度,并不是字节

日期和时间类型的存储需求

列类型存储需求
DATE3个字节
DATETIME8个字节
TIMESTAMP4个字节
TIME3个字节
YEAR1个字节



字符串类型的存储需求

列类型存储需求
CHAR(M)M个字节,0 <= M <= 255
VARCHAR(M)L+1个字节,其中L <= M 且0 <= M <= 65535
BINARY(M)M个字节,0 <= M <= 255
VARBINARY(M)L+1个字节,其中L <= M 且0 <= M <= 255
TINYBLOB, TINYTEXTL+1个字节,其中L < 28
BLOB, TEXTL+2个字节,其中L < 216
MEDIUMBLOB, MEDIUMTEXTL+3个字节,其中L < 224
LONGBLOB, LONGTEXTL+4个字节,其中L < 232
ENUM(‘value1’,’value2’,…)1或2个字节,取决于枚举值的个数(最多65,535个值)
SET(‘value1’,’value2’,…)1、2、3、4或者8个字节,取决于set成员的数目(最多64个成员)


上表的M只是为了说明占用空间大小,在实际创建表中char(20)、varchar(20),20指的是字符而不是字节(4.0版本以上,以下指的是字节);那么字符和字节的转换要看字符集,utf-8下,1字符=3字节;gbk下,1字符=2字节。

接下来会剖析varchar最大长度和text占用空间问题。

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页