MySQL中的数据类型大概包含:

  • 整数类型
  • 浮点类型
  • 字符串类型
  • 日期时间类型
  • 二进制类型
1、整数类型:
数据类型 存储范围
TINYINT 有符号值:-128 到 127(-27 到 27-1)
无符号值:0 到 255(0 到 28-1)
SMALLINT 有符号值:-32768 到 32768(-215 到 215-1)
无符号值:0 到 65535(0 到 216-1)
MEDIUMINT 有符号值:-8388608 到 8388607(-223 到 223-1)
无符号值:0 到 16777215(0 到 224-1)
INT 有符号值:-2147683648 到 2147683647(-231 到 231-1)
无符号值:0 到 4294967295(0 到 232-1)
BIGINT 有符号值:-9223372036854775808 到 9223373036854775807(-263 到 263-1)
无符号值:0 到 18446744073709551615(0 到 264-1)
BOOL,BOOLEAN 等价于TINYINT(1),0为false,其余为true

取值范围无需记住,我们可以通过帮助手册来查询,例如我们忘记了 TINYINT 的取值范围:

1
2
3
4
5
6
7
8
9
mysql> help TINYINT
Name: 'TINYINT'
Description:
TINYINT[(M)] [UNSIGNED] [ZEROFILL]

A very small integer. The signed range is -128 to 127. The unsigned
range is 0 to 255.

URL: http://dev.mysql.com/doc/refman/5.7/en/numeric-type-overview.html

我们有三种方法查看手册:

  • help TINYINT
  • ? TINYINT
  • \h TINYINT
2、浮点类型:
数据类型 存储范围
FLOAT[(M,D)] 负数取值范围为-3.40E+38到-1.17E-38、0和1.175E-38到3.40E+38。
M是数字总位数,D是小数点后面的位数。如果M和D被省略,根据硬件允许的限制来保存值。单精度浮点数精确到大约7位小数位。
DOUBLE[(M,D)] -1.79E+308到-2.22E-308、0和2.22E-308到1.79E+308。
DECIMAL[(M,D)] 和DOUBLE一样,内部以字符串形式存储数值
3、字符串类型:
列表型 存储需求
CHAR(M,D) M个字节,0 <= M <= 255
VARCHAR(M) L+1个字节,其中L<= M 且 0 <= M <= 65535
TINYTEXT L+1个字节,其中 L < 28
TEXT L+2个字节,其中 L < 216
MEDIUMTEXT L+3个字节,其中 L < 224
LONGTEXT L+4个字节,其中 L < 232
ENUM(‘value1’,’value2’,…) 1或2字节,取决于枚举值个数,最多65636个值
SET(‘value1’,’value2’,…) 1或2字节,取决于SET成员的个数,最多64个值
4、日期时间类型:
列表型 存储范围
TIME -838:59:59~838:59:59
DATE 1000-01-01~9999-12-31
DATETIME 1000-01-01 00:00:00~9999-12-31 23:59:59
TIMESTAMP 1970-01-01 00:00:01 UTC~2038-01-19 03:14:07
YEAR 1901~2155
5、二进制类型

一般保存二进制文件,用的比较少