说明:
语法:
bit [M]; #M默认为1,最大为64
bit类型示例:
tinyint、smallint、int、bigint在使用上相同,仅仅是数据表示的范围不同。
语法:
tinyint [unsigned];
tinyint类型使用示例:
double类型的使用于float类型相同,只是精度不同,所占字节数不同。
语法:
float[(m, d)] [unsigned] #M指定显示长度,d指定小数位数,占用空间4个字节
float类型示例:
案例: 小数:float(4,2)表示的范围是-99.99 ~ 99.99。
由于浮点类型的数据的是以二进制形式存储的,因此无可避免的会有精度损失,并且值得注意的是,整数部分也可能有精度损失。
语法:
decimal(m, d) [unsigned] #定点数m指定长度,d表示小数点的位数
decimal类型示例:
如果想要更高精度的小数,使用decimal更能满足需求。
语法:
char(L) #固定长度字符串,L是可以存储的长度,单位为字符,最大长度值可以为255
char类型示例:
语法:
varchar(L) #可变长度字符串,L表示字符长度,最大长度65535个字节
varchar类型示例(一下为utf8编码):
由于MySQL中表的一行最多只能存储65535个字节,因此在属性列中增加属性,varchar能在一行中能使用的空间就变小了。
如何选择定长字符和变长字符?
date #日期 'yyyy-mm-dd' ,占用三字节
datetime #时间日期格式 'yyyy-mm-dd HH:ii:ss' 表示范围从 1000 到 9999 ,占用八字节
timestamp #时间戳,从1970年开始的 yyyy-mm-dd HH:ii:ss 格式和 datetime 完全一致,占用四字节
日期和时间类型示例:
enum语法:
enum('选项1','选项2','选项3',...);
enum只是提供了若干个选项的值,最终一个单元格中,实际只存储了其中一个值;而且出于效率考虑,这些值实际存储的是“数字”,因为这些选项的每个选项值依次对应如下数字:1,2,3,…最多65535 个;当我们添加枚举值时,也可以添加对应的数字编号。
set语法:
set('选项值1','选项值2','选项值3', ...);
set只是提供了若干个选项的值,最终一个单元格中,设计可存储了其中任意多个值;而且出于效率考虑,这些值实际存储的是“数字”,因为这些选项的每个选项值依次对应如下数字:1,2,4,8,16,32,… 最多64个。
说明:不建议在添加枚举值,集合值的时候采用数字的方式,因为不利于阅读。
enum和set类型示例:
enum和set类型查找
为了查询含有代码的记录,而不是只有代码的记录,需要借助以下函数:
find_in_set(sub,str_list) #如果 sub 在 str_list 中,则返回下标;如果不在,返回0;str_list 用逗号分隔的字符串。
find_in_set示例:
用find_in_set解决set查询问题: