(一)数值型
1.整型
1)Tinyint 1字节
2)Smallint 2字节
3)Mediumint 3字节
4)Int(interger) 4字节
5)Bigint 8字节
注意:
1)默认设置为有符号。
2)设置无符号:列名 数据类型 unsigned。
3)如果插入的数值超出了整型的范围,会报out of range异常,并且插入临界值。
4)如果不设置长度,会有默认的长度,长度代表了显示的最大宽度。
5)如果不够可以用0在左边填充,但需要搭配zerofill使用:列名 数据类型 zerogill。
6)如果使用了zerofill,数据自动设置为无符号数。
2.浮点型
1)float(M,D) 4字节
2)double(M,D) 8字节
3.定点型
dec(M,D)/decimal(M,D)
注意:
1)M表示整数部分和小数点部分的位数之和,D表示小数点后面的位数,如果超过范围插入临界值。
2)M和D都可以省略,如果是float和double,则会根据插入数值精度来决定精度;如果是decimal,则M默认为10,D默认为0。
3)定点型精确度较高。
4)选用类型原则:所选的类型越简单越好,能保存数值的类型越小越好。
(二)字符型
连接字符:concat(,,,);
1.较短的文本
1)char(M)
代表固定长度的字符,空间较耗费,效率较高。
M代表最多的字符数,可以省略,默认为1。
2)varchar(M)
代表可变长度的字符,空间较节省,效率较低。
M代表最多字符数,不可以省略。
3)其他字符型
binary、varbinary保存二进制。
enum保存枚举值:列名 Enum(字符1,字符2,...)。
set保存集合:列名 set(字符1,字符2,...)。
2.较长的文本
1)text
2)blob(较长的二进制数据)
(三)日期型
1)date
保存年月日。
2)datetime 8字节
保存年月日时分秒,只能反映出插入时的当地时区。
date_format(日期型数据,'%y年%m月%d日')into 字符串类型;
3)timestamp 4字节
保存年月日时分秒,支持的时间范围较小。
和实际时区有关,更能反映实际的日期,受mysql和sqlmode版本的影响很大。
数据库时区time_zone,显示:show variables like 'time_zone';设置:set time_zone=时区;
4)time
5)year