MySQL的数据类型
注意
选择合适的数据类型,能节省储存空间,提升计算性能。
(1)在符合应用要求(取值范围、精度)的前提下,尽量使用“短”数据类型
(2)数据类型越简单越好。
(3)在MySQL中,应该用内置的日期和时间数据类型,而不是用字符串来存储日期和时间。
(4)尽量采用精确小数类型(例如decimal),而不采用浮点数类型。
(5)尽量避免NULL字段,建议将字段指定为NOT NULL约束。
数值类型
整数类型
类型
大小
范围(有符号)
范围(无符号)
用途
TINYINT
1 字节
(-128,127)
(0,255)
小整数值
SMALLINT
2 字节
(-32 768,32 767)
(0,65 535)
大整数值
MEDIUMINT
3 字节
(-8 388 608,8 388 607)
(0,16 777 215)
大整数值
INT或INTEGER
4 字节
(-2 147 483 648,2 147 483 647)
(0,4 294 967 295)
大整数值
BIGINT
8 字节
(-9223372036854775808,9223372036854775 807)
(0,18 446 744 073
709 551 615)
极大整数值
小数类型
类型
大小
范围(有符号)
范围(无符号)
用途
FLOAT
4 字节
-3.402 823 466 E+38
~-1.175 494 351 E-38
0和1.175 494 351 E-38
~3.402 823 466 E+38
单精度
浮点数
值
DOUBLE
8 字节
-1.797 693 134 862 315 7 E+308
~-2.225 073 858 507 201 4 E-308)
0和2.225 073 858 507 201 4 E-
308~1.797 693 134 862 315 7
E+308
双精度
浮点数
值
DECIMAL
DECIMAL
(length,
precision)
length决定小数的最大位数
precision用于设置小数位数
length决定小数的最大位数
precision用于设置小数位数
小数值
备注:decimal(length, precision)用于表示精度确定(小数点后数字的位数确定)的小数类型,length决定该小数的最大位数,precision用于设置精度(小数点后数字的位数)。
例如:decimal (5,2)表示小数取值范围:-999.99~999.99 decimal (5,0)表示: -99999~99999的整数。
字符串类型
类型
大小
用途
CHAR(n)
0-255字节
定长字符串
VARCHAR(n)
0-65535 字节
变长字符串
TINYTEXT
0-255字节
短文本字符串
TEXT
0-65 535字节
长文本数据
MEDIUMTEXT
0-16 777 215字节
中等长度文本数据
LONGTEXT
0-4 294 967 295字节
极大文本数据
日期/时间类型
类型
大小(字节)
范围
格式
用途
DATE
3
‘1000-01-01’~’9999-12-31’
YYYY-MM-DD
日期值
TIME
3
‘-838:59:59‘~‘838:59:59‘
HH:MM:SS
时间值或持续时间
YEAR
1
‘1901’~’2155’
YYYY
年份值
DATETIME
8
‘1000-01-01 00:00:00’
~’9999-12-31 23:59:59’
YYYY-MM-DD HH:MM:SS
混合日期和时间值
TIMESTAMP
4
‘1970-01-01 00:00:00’~’2038’
YYYY-MM-DD HH:MM:SS
混合日期和时间值,
时间戳
复合类型
类型
最大值
说 明
示例
Enum (“value1”, “value2”, …)
65535
该类型的列只可以容纳所列值之一或为NULL
Gender enum(‘男‘,‘女)
Set (“value1”, “value2”, …)
64
该类型的列可以容纳一组值或为NULL
Interest set(‘唱歌‘,‘游泳‘,‘网球’)
二进制类型
类型
大小
用途
Binary(n)
0-255字节
较短的二进制
VARBinary(n)
0-65535 字节
较长的二进制
Bit(n)
0-64字节
短二进制
TINYBLOB
0-255字节
较短的二进制
TINYBLOB
0-255字节
较短的二进制
BLOB
0-65 535字节
图片、声音等文件
MEDIUMBLOB
0-16 777 215字节
图片、声音、视频等文件
LONGBLOB
0-4 294 967 295字节
图片、声音、视频等文件