数值型:
整型
小数:
定点数
浮点数
字符型:
较短的文本:char、varchar
较长的文本:text、blob(较长的二进制数据)
日期型:
一、整型:
特点:
①如果不设置无符号还是有符号,默认是有符号,如果设置无符号,需要添加unsigned
②如果插入的数值超出了整数的范围,会报out of range异常,并且插入临界值
③如果不设置长度,会有默认的长度
长度代表了显示的最大宽度,如果不够会在用0在左边填充,但必须搭配zerofill使用
#1.如何设置无符号和有符号
create table tab_int (t1 int,t2 int unsigned);
create table tab_int(t1 int(7) zerofill,t2 int(7) zerofill);
二、小数
特点:
①M:整数部位+小数部位/D:小数部位,如果超过范围,则插入临界值
②M和D可以省略,如果是decimal,则M默认为10,D默认为0
如果是float和double,则会根据插入的数值的精度来决定精度
③定点型的精度要求较高,如果要求插入数值的精度较高如货币运算等则考虑使用
原则:
所选择的类型越简单越好,能保存的数值类型越小越好
#测试M和D
create table tab_float(f1 float(5,2),f2 double(5,2),f3 decimal(5,2));
insert into tab_float values(123.45,123.45,123.45);
insert into tab_float values(123.456,123.456,123.456);
insert into tab_float values(123.4,123.4,123.4);
insert into tab_float values(1223.4,1523.4,1523.4);
三、字符型
写法 M的意思 特点 空间的耗费 效率
char char(M) 最大的字符,可以省略,默认为1 固定长度的字符 比较费时 高
varchar varchar(M) 最大的字符,不可以省略 可变长度的字符 比较节省 低
其他:
binary和varbinary用于保存较短的二进制
enum:用于保存枚举
set:用于保存集合
四、日期型
字节 范围 时区的影响
datetime 8 1000-9999 不受
timestamp 4 1970-2038 受
datetime和timestamp的区别:
1、Timestamp支持的时间范围较小,取值范围:19700101080001——2038年的某个时间
Datetime的取值范围:1000-1-1 ——9999—12-31
2、timestamp和实际时区有关,更能反映实际的日期,而datetime则只能反映出插入时的当地时区
3、timestamp的属性受Mysql版本和SQLMode的影响很大
create table tab_date(t1 datetime,t2 timestamp);
insert into tab_date values(now(),now());