数值类型
一、整数
- Tinyint 1个字节
- Smallint 2个字节
- Mediumint 3个字节
- int 4个字节
- Bigint 8个字节
- 以上都可以是有符号类型或者无符号类型
- 如何设置有符号和无符号:默认是有符号的,添加unsigned设置为无符号类型
create table tab_int{
num1 int,
num2 int unsigned
};
- 如果插入的值超过了类型的范围,则会报异常,并插入临界值
- 如果不设置长度,会有默认的长度,如果想设置的话可以自己设置(如下
),但是此处的长度与int的范围无关,表明当长度不足x时,使用0进行填充;设置长度时需要搭配zerofill,且同时会强制变为无符号
create table tab_int{
num int(7) zerofill
};
二、小数:定点数+浮点数
- 浮点数:float(M,D) 4个字节。double(M,D) 8个字节
- 定点数:decimal(M,D) 8个字节
- M=整数个数+小数的个数,D表示小数的个数,超过的话显示临界值
- M和D都可以省略,如果是decimal类型的话,默认M=10 D=0;如果是float和double类型的话,则会根据插入数据的精度来决定
- 相比较之下,定点数的精度较高
- 类型的选择:所选择的类型越简单越好,能保存数值的类型越小越好
字符类型
一、较短的文本:char,varchar
- char(M), varchar(M) M表示能够存储的最大字符数
- char 固定长度的字符,长度可以省略且默认为1,相对比较耗空间,但是效率较高
- varchar 可变长度的字符,长度不可以省略,相对比较节省空间,但是效率较低
二、枚举类型
create table tab{
c1 enum('a', 'b' ,'c')
};
三、较长的文本:text、blob(较长的二进制数据)
日期类型
- date 只有日期
- time 只有时间
- datetime 日期+时间
- year 只有年
- timestamp 日期+时间
- datetime和timestamp的比较:datetime支持的时间范围较大,timestamp支持的时间范围较小;timestamp的时间更为准确