1.整数类型
TINYINT | 1 | -128~127 | 0~255 |
SMALLINT | 2 | -32768~32767 | 0~65535 |
MEDIUMINT | 3 | -8388608~8388607 | 0~16777215 |
INT、INTEGER | 4 | -2147483648~2147483647 | 0~4294967295 |
BIGINT | 8 | -9223372036854775808~9223372036854775807 | 0~18446744073709551615 |
ZEROFILL :表示用数字0填满宽度,否则指定宽度无效
代码示例:
CREATE TABLE test1
(a int(3) zerofill);
UNSIGNED:无符号类型,最小取值为0,int类型默认显示宽度为int(11),无符号int类型默认显示宽度为int(10)。
代码示例:
CREATE TABLE test2(
a INT UNSIGNED
);
int(n),必须和UNSIGNED ZEROFILL一起使用才有意义。
2.浮点数类型
FLOAT 表示单精度浮点数;
DOUBLE 表示双精度浮点数;
REAL默认就是 DOUBLE。若你将 SQL 设定为“ REAL_AS_FLOAT ”,那 么,MySQL 就认为REAL 是 FLOAT。(SET sql_mode = “REAL_AS_FLOAT”;)
代码示例:
CREATE TABLE test3(
a FLOAT,
b FLOAT(3,2),
c DOUBLE,
d DOUBLE(3,2)
);
FLOAT(M,N) 或 DOUBLE(M,N) 。这里,M称为 精度 ,N称为 标度 。(M,N)中 M=整数位+小数
位,N=小数位。 N<=M<=255,0<=N<=30。
3.定点数类型
DECIMAL(M,N)的最大取值范围与DOUBLE类型一样,但是有效的数据范围是由M和N决定的;DECIMAL默认为DECIMAL(10,0);
代码示例:
CREATE TABLE test5(
a DECIMAL,
b DECIMAL(3,2)
);
decimal比浮点数更为精准,推荐使用decimal。
4.时间类型
YEAR | 年 | 1 | YYYY或YY | 1901 | 2155 |
TIME | 时间 | 3 | HH:MM:SS | -838:59:59 | 838:59:59 |
DATE | 日期 | 3 | YYYY-MM-DD | 1000-01-01 | 9999-12-03 |
DATETIME | 日期 时间 | 8 | YYYY-MM-DD HH:MM:SS | 1000-01-01 00:00:00 | 9999-12-31 23:59:59 |
TIMESTAMP | 日期 时间 | 4 | YYYY-MM-DD HH:MM:SS | 1970-01-01 00:00:00 UTC | 2038-01-19 03:14:07UTC |
5.文本类型
CHAR(a) | 固定长度 | a | 0 <= a <= 255 | a个字节 |
VARCHAR(a) | 可变长度 | a | 0 <= a<= 65535 | (实际长度 + 1) 个字节 |
CHAR(a) | 固定长度 | 浪费存储空间 | 效率高 | 存储不大,速度要求高 |
VARCHAR(a) | 可变长度 | 节省存储空间 | 效率低 | 非CHAR的情况 |
6.ENNU和SET类型
使用ennu和set时,只能使用指定字段。
代码示例:
CREATE TABLE test7(
a SET ('A', 'B', 'C')
b ENNU('A', 'B', 'C')
);
两者的区别是:ENUM类型指定的只能从其中选取单个值就行添加,SET指定的可以同时选多个值进行添加。