原则:所选择的类型越简单越好,能保存数值的类型越小越好(节省空间)
整数类型 | 字节 | 范围 |
---|---|---|
Tinyint | 1 | 有符号:-128~127 无符号:0~255 |
Smallint | 2 | 有符号:-32768~32767 无符号:0~65535 |
Mediumint | 3 | 有符号:-8388608~8388607 无符号:0~1677215 |
Int、Integer | 4 | 有符号:-2147483648~2147483647 无符号:0~4292967295 |
Bigint | 8 | 有符号:-9223372086854775808~9223372086854775807 无符号:0~9223372036854775807*2+1 |
如何设置无符号和有符号
CREATE TABLE tab_int( t1 INT, t2 INT UNSIGNED )
浮点数类型 | 字节 | 范围 |
---|---|---|
float | 4 | ±1.75494351E-38±3402823466E+38 |
double | 8 | ±2.2250738585072014E-308~±1.7976931348623157E+308 |
定点数类型 | 字节 | 范围 |
---|---|---|
DEC(M,D) DECIMAL(M,D) |
M+2 | 最大取值范围与double相同,给定decimal的有效取值范围由M和D决定 |
字符串类型 | 最大字符数 | 描述及存储需求 | 特点 | 空间的耗费 | 效率 |
---|---|---|---|---|---|
char(M) | M(可以省略,默认为1) | M为0~255之间的整数 | 固定长度的字符 | 比较耗费 | 相比较高 |
varchar(M) | M(不可以省略) | M为0~65535之间的整数 | 可变长度的字符 | 比较节省 | 相比较低 |
binary和varbinary类型:类似于char和varchar
枚举:要求插入的值必须属于列表中指定的值之一
Set类型:和Enum类型类似
CREATE TABLE tab_set( s1 SET('a','b','c','d') ); INSERT INTO tab_set VALUES('a'); INSERT INTO tab_set VALUES('a,b'); INSERT INTO tab_set VALUES('a,c,d');
日期和时间类型 | 字节 | 最小值 | 最大值 |
---|---|---|---|
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 | 2028年的某个时刻 |
time | 3 | -838:59:59 | 838:59:59 |
year | 1 | 1901 | 2155 |