MySQL(07)—常见的数据类型

常见的数据类型

1. 数值类型

1.1 整型
整数类型 字节 范围
Tinyint 1 有符号:-128127 无符号:0255
Smallint 2 有符号:-3276832767 无符号:065535
Mediumint 3 有符号:-83886088388607 无符号:01677215
Int、integer 4 有符号:- 21474836482147483647 无符号:04294967295
Bigint 8 有符号: -9223372036854775808 9223372036854775807
无符号:0
9223372036854775807*2+1
1.2 小数
浮点数类型 字节 范围
float 4 ±1.75494351E-38~±3.402823466E+38
double 8 ±2.2250738585072014E-308~ ±1.7976931348623157E+308
定点数类型 字节 范围
DEC(M,D) DECIMAL(M,D) M+2 最大取值范围与double相同,给定decimal的有效取值范围由M和D 决定
1.3 位类型
位类型 字节 范围
Bit(M) 1~8 Bit(1)~bit(8)

2. 字符类型

2.1 char和varchar类型

说明:用来保存MySQL中比较短的字符串

字符串类型 最多字符数 描述以及存储需求
char(M) M M为0-255之间的整数
varchar(M) M M为0-65535之间的整数
2.2 binary和varbinary类型

说明:类似于char和varvchar,不同的是他们包含二进制字符串而不包括非二进制字符串

2.3 Enum类型

说明:又称为枚举类型,要求插入的值必须属于列表中指定的值之一

如果列表成员为1-255,则需要1字节存储

如果列表成员为25-65535,则需要2字节存储,最多需要65535个成员!

2.4 Set类型

说明:和Enum类型相似,里面可以保存0-64个成员。和Enum类型最大的区别是:SET类型一次可以选取多个成员,而Enum只能选一个,根据成员个数不同,存储所占字节也不相同

成员数 字节数
1-8 1
9-16 2
17-24 3
25-32 4
33-64 8

3. 日期类型

日期和时间类型 字节 最小值 最大值
date 4 1000-01-01 9999-12-31
datetime 8 1000-01-01 00:00:00 9999-12-31 23:59:59
timestamp 4 19700101080001 2038年的某个时刻
time 3 -838:59:59 838:59:59
year 1 1901 2155
  1. Timestamp支持的时间范围较小,取值范围: 19700101080001——2038年的某个时间 Datetime的取值范围:1000-1-1 ——9999—12-31
  2. timestamp和实际时区有关,更能反映实际的日期,而datetime则只能反映出插入时的当地时区
  3. timestamp的属性受Mysql版本和SQLMode的影响很大