MYSQL数据类型
1 学习笔记概要
MYSQL数据类分为3类(数字类型,日期时间类型,字符串类型)
2 数字类型
MySQL支持所有的ANSI/ISO SQL92的数字类型
2.1 整数类型
SMALLINT[(M)] [UNSIGNED] [ZEROFILL]
取值范围:有符号:-32768到32767(-215到215-1)无符号:0到65535(0到216-1)
存储要求:2个字节
INT[(M)] [UNSIGNED] [ZEROFILL]
INTEGER[(M)] [UNSIGNED] [ZEROFILL]
取值范围:有符号:-2147483648到2147483647(-231到231-1)无符号:0到4294967295(0到232-1)
存储要求:4个字节
TINYINT、MEDIUMINT和BIGINT:
TINYINT[(M)] [UNSIGNED] [ZEROFILL]
取值范围:有符号:-128到127(-27和27-1)无符号:0到255(0到28-1)
存储要求:1个字节
MEDIUMINT[(M)] [UNSIGNED] [ZEROFILL]
取值范围:有符号:-8388608到8388607(-223到223-1)无符号:0到16777215(0到224-1)
存储要求:3个字节
BIGINT[(M)] [UNSIGNED] [ZEROFILL]
取值范围:有符号:-9223372036854775808到9223372036854775807(-263到263-1)无符号:0到18446744073709551615(0到264-1)
存储要求: 8个字节
2.2 浮点类型
FLOAT[(M,D)] [ZEROFILL]
取值范围:-3.402823466E+38到-1.175494351E-38,0 和1.175494351E-38到3.402823466E+38
存储要求:4个字节
DOUBLE[(M,D)] [ZEROFILL]、DOUBLE PRECISION[(M,D)] [ZEROFILL]
取值范围:-1.7976931348623157E+308到-2.2250738585072014E-308、 0和2.2250738585072014E-308到1.7976931348623157E+308
存储要求:8个字节
DECIMAL(M[,D]) [ZEROFILL]、NUMERIC(M[, D]) [ZEROFILL]
取值范围:实际的范围可以通过M和D的选择被限制
存储要求:M字节(低于3.23版本)M+2字节(3.23或更高版本)
2.3 M和D对DECIMAL类型取值范围的影响
类 型 说 明 | 取值范围(MySQL < 3.23) | 取值范围(MySQL * 3.23) |
DECIMAL(4, 1) | -9.9 到 99.9 | -999.9 到 9999.9 |
DECIMAL(5, 1) | -99.9 到 999.9 | -9999.9 到 99999.9 |
DECIMAL(6, 1) | -999.9 到 9999.9 | -99999.9 到 999999.9 |
DECIMAL(6, 2) | -99.99 到 999.99 | -9999.99 到 99999.99 |
DECIMAL(6, 3) | -9.999 到 99.999 | -999.999 到 9999.999 |
3 日期时间类型
DATA
取值范围:“ 1000-01-01 ”到“ 9999-12-31 ”
存储需求:3字节
TIME
取值范围:“-838:59: 59 ” 到“838:59: 59 ”
存储需求:3字节
DATATIME
取值范围:“1000-01-01 00:00: 00 ” 到“9999-12-31 23:59: 59 ”
存储需求:8字节
TIMESTAMP[(M)]
取值范围:“19700101000000”到2037年的某个时刻
存储需求:4字节
YEAR[(M)]
取值范围:1901到2155
存储需求:1字节
4 字符串类型
CHAR(M) [BINARY]
存储需求:M字节
[NATIONAL] VARCHAR(M) [BINARY]
存储需求:L+1字节(L是存储实际值需要的长度,1为存储该值实际长度)
TINYBLOB、TINYTEXT
一个BLOB或TEXT列,最大长度为255(2^8-1)个字符。
存储需求:L+1字节
BLOB、TEXT
一个BLOB或TEXT列,最大长度为65535(2^16-1)个字符。
存储需求:L+2字节
MEDIUMBLOB、MEDIUMTEXT
一个BLOB或TEXT列,最大长度为16777215(2^24-1)个字符。
存储需求:L+3字节
LONGBLOB、LONGTEXT
一个BLOB或TEXT列,最大长度为4294967295(2^32-1)个字符。
存储需求:L+4字节
ENUM('value1','value2',...)
枚举。一个仅有一个值的字符串对象,这个值式选自与值列表'value1'、'value2', ...,或NULL。一个ENUM最多能有65535不同的值。
存储需求:1或2字节s
SET('value1','value2',...)
一个集合。能有零个或多个值的一个字符串对象,其中每一个必须从值列表'value1', 'value2', ...选出。一个SET最多能有64个成员。
存储需求:1、2、3、4或8字节