类型名称 | 说明 |
---|---|
int | 整数类型 |
double | ⼩数类型 |
decimal(m,d) | 指定⻓度的⼩数类型 |
date | ⽇期类型,格式为 yyyy-MM-dd,包含年⽉⽇,不包含时分秒 |
datetime | ⽇期类型,格式为 YYYY-MM-DD HH:MM:SS,包含年⽉⽇时分秒 |
varchar(M) | ⽂本类型, M 为 0~16383 之间的整数(可变⻓度) |
char(M) | ⽂本类型, M 为 0~255 之间的整数(不可变⻓度) |
类型 | 有符号取值范围(signed) | ⽆符号取值范围(unsigned) | 占⽤字节 |
---|---|---|---|
TINYINT | -128 ~ 127 | 0 ~ 255 | 1 |
SMALLINT | -32768 ~ 32767 | 0 ~ 65535 | 2 |
MEDIUMINT | -8388608 ~ 8388607 | 0 ~ 16777215 | 3 |
INT | -2147483648 ~ 2147483647 | 0 ~ 4294967295 | 4 |
BIGINT | -9223372036854775808 ~ 9223372036854775807 | 0 ~ 8446744073709551615 | 8 |
浮点数类型和定点数类型的可以表示⼩数。
浮点数类型有两种:
定点数类型只有⼀种:DECIMAL(M,D)。
M 表示总共的位数(整数位数 + ⼩数位数),D 表示⼩数部分多少位。
类型 | 有符号 | ⽆符号 | 占⽤字节 |
---|---|---|---|
FLOAT | (-3.402823466E+38 ~ -1.175494351E-38), 0 , (1.175494351E-38 ~ 3.402823466E+38) | 0, 1.175494351E-38 ~ 3.402823466E+38 | 4 |
DOUBLE | (-1.7976931348623157E+308 ~ 2.2250738585072014E-308),0, (2.2250738585072014E-308 ~1.7976931348623157E+308) | (2.2250738585072014E-308 ~1.7976931348623157E+308) | 8 |
DECIMAL(M,D)⽐较特殊, M 的范围[1,65],D 的范围[0,30],其中 D≤M,占⽤字节是变⻓的(M+2)。
FLOAT 和 DOUBLE 不指定精度时,默认会按照实际的精度存储(有计算机硬件和操作系统决定),DECIMAL 不指定精度时,默认为 (10,0)。
因为 FLOAT 和 DOUBLE 并不精确,所以在计算⼀些精度要求⽐较⾼的时候字段时(⽐如⾦额)要⽤ DECIMAL。
演示:
xCREATE TABLE test(
double_price double,
decimal_price decimal(2, 2)
);
INSERT INTO test
VALUES (0.47, 0.47),
(0.44, 0.44),
(0.19, 0.19);
SELECT sum(double_price), sum(decimal_price) FROM test;
类型 | 说明 | 最⼤⻓度 |
---|---|---|
BIT(M) | 位字段类型 | ⼤约(M+7)/8 个字节 (M 最⼤是 64) |
BINARY(M) | 固定⻓度的⼆进制字符串 | 255 |
VARBINARY(M) | 可变⻓度的⼆进制字符串 | 16384 |
TINYBLOB(M) | ⾮常⼩的 BLOB | 256 |
BLOB(M) | ⼆进制⼤对象 可以存储⼆进制⽂件 | 16K |
字符串类型⽤来存储字符串数据,除了可以存储字符串数据外,还可以存储其他数据,⽐如图⽚和声⾳的⼆进制数据。 MySQL ⽀持两类字符型数据:⽂本字符串和⼆进制字符串。
类型 | 说明 | 最⼤⻓度 |
---|---|---|
CHAR(N) | 定⻓ 字符 | 255 |
VARCHAR(N) | 变⻓ 字符 | 16383 |
TINYTEXT | ⾮常⼩的变⻓字符串 | 255 |
TEXT | ⼩的变⻓字符串 | 16K |
MEDIUMTEXT | 中等⼤⼩的变⻓字符串 | 16M |
LONGTEXT | ⼤的变⻓字符串 | 4G |
ENUM | 枚举类型 | 最多 65536 个值 |
SET | 集合类型 | 最多 64 个值 |
类型 | ⽇期格式 | ⽇期范围 | 字节 |
---|---|---|---|
YEAR | YYYY | 1901 ~ 2155 | 1 |
TIME | HH:MM:SS | -838:59:59 ~ 838:59:59 | 3 |
DATE | YYYY-MM-DD | 1000-01-01 ~ 9999-12-3 | 3 |
DATETIME | YYYY-MM-DD HH:MM:SS | 1000-01-01 00:00:00 ~ 9999-12-31 23:59:59 | 8 |
TIMESTAMP | YYYY-MM-DD HH:MM:SS | 1970-01-01 00:00:01 UTC ~ 2038-01- 19 03:14:07 UTC | 4 |