2024年3月27日发(作者:)

MySql数据库的列类型(字段类型)

对于每个由MySQL支持的列类型的存储需求在下面按类列出。

7.3.2 数字类型

列类型

TINYINT

SMALLINT

MEDIUMINT

INT

INTEGER

BIGINT

FLOAT(X)

FLOAT

DOUBLE

DOUBLE PRECISION

REAL

DECIMAL(M,D)

NUMERIC(M,D)

需要的存储量

1 字节

2 个字节

3 个字节

4 个字节

4 个字节

8 个字节

4 如果 X < = 24 或 8 如果 25 < = X < = 53

4 个字节

8 个字节

8 个字节

8 个字节

M字节(D+2 , 如果M < D)

M字节(D+2 , 如果M < D)

7.3.3 日期和时间类型

列类型

DATE

DATETIME

TIMESTAMP

TIME

YEAR

需要的存储量

3 个字节

8 个字节

4 个字节

3 个字节

1 字节

7.3.4 串类型

列类型 需要的存储量

CHAR(M)

VARCHAR(M)

TINYBLOB, TINYTEXT

BLOB, TEXT

MEDIUMBLOB, MEDIUMTEXT

LONGBLOB, LONGTEXT

M字节,1 <= M <= 255

L+1 字节, 在此L <= M和1 <= M <= 255

L+1 字节, 在此L< 2 ^ 8

L+2 字节, 在此L< 2 ^ 16

L+3 字节, 在此L< 2 ^ 24

L+4 字节, 在此L< 2 ^ 32

1 或 2 个字节, 取决于枚举值的数目(最大值

ENUM('value1','value2',...)

65535)

1,2,3,4或8个字节, 取决于集合成员的数

SET('value1','value2',...)

量(最多64个成员)

VARCHAR和BLOB和TEXT类型是变长类型,对于其存储需求取决于列值的实际长

度(在前面的表格中用L表示),而不是取决于类型的最大可能尺寸。例如,一个

VARCHAR(10)列能保存最大长度为10个字符的一个字符串,实际的存储需要是字

符串的长度(L),加上1个字节以记录字符串的长度。对于字符串'abcd',L是4

而存储要求是5个字节。

BLOB和TEXT类型需要1,2,3或4个字节来记录列值的长度,这取决于类型的

最大可能长度。

如果一个表包括任何变长的列类型,记录格式将也是变长的。注意,当一个表被

创建时,MySQL可能在某些条件下将一个列从一个变长类型改变为一个定长类型

或相反。见7.7.1 隐式列指定变化。

一个ENUM对象的大小由不同枚举值的数量决定。1字节被用于枚举,最大到255

个可能的值;2个字节用于枚举,最大到65535 值。

一个SET对象的大小由不同的集合成员的数量决定。如果集合大小是N,对象占

据(N+7)/8个字节,四舍五入为1,2,3,4或8 个字节。一个SET最多能有64

个成员。

MySQL数据库的表是一个二维表,由一个或多个数据列构成。

每个数据列都有它的特定类型,该类型决定了MySQL如何看待该列数据,我们可以把整型

数值存放到字符类型的列中,MySQL则会把它看成字符串来处理。

MySQL中的列类型有三种:数值类、字符串类和日期/时间类。

从大类来看列类型和数值类型一样,都是只有三种。但每种列类型都还可细分。

下面对各种列类型进行详细介绍。

数值类的数据列类型

数值型的列类型包括整型和浮点型两大类。