前言:
数值型
- 整形
- 小数:
- 定点数
- 浮点数
字符型:
较短的文本 | char | varchar |
---|---|---|
较长的文本 | text | blob (较长的二进制数据) |
日期型:
date | datetime | timestamp | time | year |
---|
整形
Tinyint | 1 |
---|---|
Smallint | 2 |
mediumint | 3 |
int/interger | 4 |
Bigint | 8 |
特点:
1,如果不设置有符号或者无符号,默认为有符号,如果想设置为无符号,需要加入unsigned关键字
2,如果插入的数值,超出了整形的范围,会报out of range 异常,并且插入临界值,
3,如果不设置长度,会有默认的长度
4,长度代表了显示的最大宽度,如果不够会用0来在左边做填充,但必须搭配zerofill使用
案例:如何设置无符号和有符号
create table text(
t1 int,
t2 int unsigned #无符号类型(就是没有负数)
);
除了Bigint 其他符号,下限是0,
小数
分类
浮点型 | 定点型 |
---|---|
float(M,D) | dec(M,D) |
double(M,D) | decimal(M,D) |
M:代表整数和小数加起来的总数
D:代表小数点后的位数
比如double(10,2),代表只能插入10个数字,但小数点后面保留2位数字
如果超过范围,则插入临界值
M和D都可以省略
如果是decimal,则m默认为10,D默认为0
如果是float和double,则会根据插入的数值的精度,来决定精度
定点性的精确度较高,如果要求插入的数值的精度较高,比如货币运算
create table tab_float(
f1 float(5,2),
f2 float(5,2),
f3 decimal(5,2)
);
原则:所选择的类型,越简单越好,能保存数值的类型,越小越好
字符型
较短的文本 | 较长的文本 |
---|---|
char | text |
varchar | blob (较长的二进制数据) |
特点:
char(m) , varchar(m) m的意思,最大字符数,
char:固定长度字符,可以省略,默认为1,比较耗费空间,效率高一点
varchar:可变长度字符,不可以省略,比较节省空间,效率低一点
存储性别,尽量用char
其他:
binary 和 varbinary用于保存较短的二进制
enum用于保存枚举
set用于保存集合
日期型
日期和时间类型 | 字节 | 最小值 | 最大值 | 特点 |
---|---|---|---|---|
date | 4 | 1000-01-01 | 9999-12-31 | 只保存日期 |
datetime | 8 | 1000-01-01 00:00:00 | 9999-12-31 23:59:59 | 保存日期+时间 |
timestamp | 4 | 1970010108001 | 2038年某个时刻 | 保存日期+时间 |
time | 3 | -838:59:59 | 838:59:59 | 只保存时间 |
year | 1 | 1901 | 2155 | 只保存年 |
create table tab_date(
t1 datetime,
t2 timestamp
);
insert into tab_date values(now(),now());
注意:datetime 不受时区影响,timestamp 受时区影响