附录: 数据库数据类型
数值类型
TINYINT
|
名称:
整数(1 byte)
占用空间:
1 byte
数据范围:
-128 ~ 127
0 ~ 255(无符号)
|
SMALLINT
|
名称:
整数(2 bytes)
占用空间:
2 bytes
数据范围:
-32768 ~ 32767
0 ~ 65535(无符号)
|
MEDIUMINT
|
名称:
整数(3 bytes)
占用空间:
3 bytes
数据范围:
-8388608 ~ 8388607
0 ~ 16777215(无符号)
|
---|---|---|---|---|---|
INT
INTEGER
|
名称:
整数(4 bytes)
占用空间:
4 bytes
数据范围:
-2147483648 ~ 2147483647
0 ~ 4294967295(无符号)
|
BIGINT
SERIAL
|
名称:
整数(8 bytes)
占用空间:
8 bytes
数据范围:
-9223372036854775808 ~ 9223372036854775807
0 ~ 18446744073709551615(无符号)
小贴士:
SERIAL的别名:BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE
|
FLOAT
|
名称:
单精度浮点数
占用空间:
4 bytes
|
FLOAT(p)
|
名称:
单精度浮点数
占用空间:
4 bytes 或 8 bytes
数据说明:
0 <= p <= 23,单精度4字节
24 <= p <= 53,双精度8字节
小贴士:
FLOAT 和 DOUBLE 都是近似值,容易出现数据偏差,不推荐使用
|
DOUBLE
REAL
|
名称:
双精度浮点数
占用空间:
8 bytes
|
DECIMAL(M,D)
NUMERIC(M,D)
|
名称:
可选精度的精确数字
占用空间:
可变
数据说明:
M是表示有效数字的精度。 M的范围是 1-65。如果M省略,默认值为 10。
D是表示小数点后的位数。 D的范围是 0-30。如果D省略,默认值为 0。
|
BIT(M)
|
名称:
位值类型
占用空间:
(M+7)/8 bytes
数据说明:
1 <= M <= 64, 如果 M 省略,则默认为 1
|
BOOL
BOOLEAN
TINYINT(1)
|
名称:
布尔值
|
日期类型
YEAR[(4)]
|
名称:
年份类型
占用空间:
1 byte
数据范围:
1901 ~ 2155
|
DATE
|
名称:
日期类型
占用空间:
3 bytes
数据范围:
1000-01-01 ~ 9999-12-31
|
TIME[(fsp)]
|
名称:
时间类型
占用空间:
3 bytes + 小数秒(0 ~ 3 bytes)
数据范围:
-838:59:59.000000 ~ 838:59:59.000000
小贴士:
0 <= fsp <= 6
小数秒精度占用: [ 0:占用 0 个字节;1 ~ 2:占用 1 个字节; 3 ~ 4:占用 2 个字节;5 ~ 6:占用 3 个字节 ]
示例:
TIME、TIME(0) 占用 3 bytes(固定 3 bytes)
TIME(1)、TIME(2) 占用 4 bytes(固定 3 bytes + 小数秒 1 bytes)
TIME(3)、TIME(4) 占用 5 bytes(固定 3 bytes + 小数秒 2 bytes)
TIME(5)、TIME(6) 占用 6 bytes(固定 3 bytes + 小数秒 3 bytes)
|
---|---|---|---|---|---|
DATETIME[(fsp)]
|
名称:
日期时间类型
占用空间:
5 bytes + 小数秒(0 ~ 3 bytes)
小贴士:
0 <= fsp <= 6,默认为 0
MySQL 5.6.4版本前占用 8 字节,MySQL 5.64版本后占用 5 bytes + 小数秒
小数秒精度占用: [ 0:占用 0 个字节;1 ~ 2:占用 1 个字节; 3 ~ 4:占用 2 个字节;5 ~ 6:占用 3 个字节 ]
|
TIMESTAMP[(fsp)]
|
名称:
时间戳类型
占用空间:
4 bytes + 小数秒(0 ~ 3 bytes)
数据范围:
'1970-01-01 00:00:01.000000'UTC ~ '2038-01-19 03:14:07.999999'UTC
小贴士:
0 <= fsp <= 6,默认为 0
TIMESTAMP存储的是自 '1970-01-01 00:00:00'UTC 以来的秒数
|
字符串类型
CHAR(M)
|
名称:
定长字符串
占用空间:
M bytes
数据范围:
0 ~ 255 bytes
数据说明:
M * w <= M <= 255,其中 w 为每个字符占用的字节数(gbk中每个字符占用2字节)
|
BINARY(M)
|
名称:
定长二进制数据(字节数组)
占用空间:
M bytes
数据范围:
0 ~ 255 bytes
数据说明:
0 <= M <= 255,默认为 1
|
VARCHAR(M)
|
名称:
变长字符串
占用空间:
如果 0 <= L <= 255,则占用 L + 1 个字节;如果 L >= 255,则占用 L + 2 个字符(L为字符串占用字节数)
数据说明:
0 <= L <= 65535 bytes(L为字符串占用字节数)
|
---|---|---|---|---|---|
VARBINARY(M)
|
名称:
变长二进制数据
|
TINYBLOB
TINYTEXT
|
名称:
文本类型
占用空间:
L + 1 个字节(L为字符串占用字节数,L < 2^8)
数据范围:
0 ~ 256 bytes
|
BLOB
TEXT
|
名称:
文本类型
占用空间:
L + 2 个字节(L为字符串占用字节数,L < 2^16)
数据范围:
2 ~ 65536 bytes
|
MEDIUMBLOB
MEDIUMTEXT
|
名称:
文本类型
占用空间:
L + 3 个字节(L为字符串占用字节数,L < 2^24)
数据范围:
3 ~ 16777216 bytes
|
LONGBLOB
LONGTEXT
|
名称:
文本类型
占用空间:
L + 4 个字节(L为字符串占用字节数,L < 2^32)
数据范围:
4 ~ 4294967296 bytes
|
ENUM('value1', 'value2', ...)
|
名称:
枚举类型
占用空间:
1 或 2 个字节,取决于枚举值的数量(最多 65,535 个值)
|
SET('value1', 'value2', ...)
|
名称:
Set类型
占用空间:
1、2、3、4 或 8 个字节,取决于集合成员的数量(最多 64 个成员)
|
其它类型
JSON
|
名称:
JSON类型
|
---|
推广