第三讲:数据类型
1.列类型
①数值型:ⅰ.整数型:tinyint(1个字节)、smallint(2个字节)、mediumint(3个字节)、int(4个字节)、bigint(8个字节);
ⅱ小数型:float(4个字节)、double(8个字节)、decimal(8个字节);
②日期时间型:year(YYYY)、timestamp、time(HH:MM:SS)、date(YYYY-MM-DD)、datetime;
③字符串型:set(集合类型,不定项选择)、enum(枚举类型,单项选择)、blob(二进制数据)、text、varchar、char;
2.数值型-整数型
①可以使用unsigned来标识是否有符号(不写就认为有符号);
②定义显示宽度,通过规定数据的显示宽度,达到统一显示的宽度;
注:类型(M) M表示显示数据的最小宽度,需要使用前导零填充达到目的,称之为zerofill;
例:alter table tbl_int add c tinyint(2) zerofill;
也存在布尔bool类型,但就是tinyint(1)别名;
3.数值型-小数型
①浮点数:小数点可变化
float(单精度):默认精度为6位左右;
double(双精度):默认精度为16位左右;
注:支持控制数值的范围,type(M,D) M所有数值的位数,不包括小数点和符号;D允许小数位数
支持科学计数法:1.234 X 10^3 <==> 1.234E3
②定点数
decimal(M,D) M表示总位数,默认为10;D表示小数范围,默认为2;
③小数支持zerofill
④支持无符号unsigned
4.时间类型
①datetime(年月日时分秒):YYYY-MM-DD HH:MM:SS
注:支持任意分隔符的日期,但不建议使用特殊的分隔符,使逻辑不清晰
支持零值,表示当前没有规定,例:2013-04-0 表示4月整个月(逻辑想法)
②date(年月日):YYYY-MM-DD
③timestamp(时间戳):格式痛datetime,存储时是整数,但是表示时是日期时间类型
注:检索列时,+0可以检索时间戳
5.字符串类型
①char(M) 固定长度
varchar(M) 可变长度,需要一个字节保存总长度
注:M允许的字符串长度
M在varchar中的表示是允许最大的长度,char内表示严格限定的长度
M表示的是字符数,而不是字节数,但总的长度使用还是字节数
②真实的varchar长度:总长度65535,实际最大值为65532
注:varchar特点:当类型数据超过255个字符时,采用2个字节表示长度 65535 - 2 = 65533
整条记录需要额外的自己,用于保存当前字段的null值,除非所有的字段都不是null,才可以省略;
一个记录,不论有多少字段存在null。都使用统一的一个字节来表示,而不是每个字段一个字节;
③text
文本(大小2^16),有很多兄弟类型:tinytext,longtext表示的字符串长度不一样
6.列类型-如何选择
①尽量精确
②考虑应用语言处理
③考虑兼容性