TINYINT
数值类型:
TINYINT:1字节
SMALLINT:2字节
MEDIUINT:3字节
INT:4字节
BIGINT:8字节
数据范围:默认有符号,-128~127 超出这个范围的数据不会被存入表内。若要设置无符号,在属性后面加上unsigned。
由于这种特性,数据类型本身就是一种约束!
BIT
BIT(M)
可以指定 M 位数,M最大是64位.
位类型显示的时候按照ASCII码值的方式,可能显示不出来,可以转成十进制来查看.
FLOAT
语法:
FLOAT [(m,d)] [unsigned] : m指定显示长度,d指定小数位数,占用空间4个字节
其中,小数部分必须是d位!若超过d位,则采取四舍五入的方式存取数据(在合法范围内 ).
float在数据过大的时候,有一些明显精度损失.
DECIMAL
decimal 和 float 很像,但表示的精度不同,decimal 精度的准确性要比float更好.使用浮点数的时候,若希望有较高精度,建议使用decimal
CHAR
语法:
char(L) : 固定长度L的字符串,L最大为255,单位是字符.
char类型的字符,和语言内的字符概念不一样,mysql中的字符就是一种符号,一个汉字也是一个字符.
VARCHAR
语法:
varchar(L) : 变长的字符串.最多存65535个字节,其中有1~3个字节来记录数据大小(动态调整)
在utf8编码中,L最大是21844;而在gbk编码下就是 (655-3)/2 .MySQL里一行也有字节大小上限!
日期和时间类型
date: 日期 'yyyy-mm-dd',占用三个字节
datetime : 时间日期格式 'yyyy-mm-dd HH:II:SS' 表示范围从1000~9999,占用8字节
timestamp : 时间戳(自动变化),占用四字节.
date:生日等不需要具体时间的日期.
datetime:主要是用于固定的时间.
timestamp:主要用于可能更新的时间.
ENUM 和 SET
语法:
enum('选项1','选项2','选项3',...);
set('选项1','选项2','选项3',...);
enum 只是提供了若干个选项的值,最终的单元格里只存储了选项中的一个,出于效率考虑,实际存储的是数字,这些选项的每个值对应1,2,3,4,…65535,所以当我们添加枚举的时候,也可以插入数字.
set 只是提供了若干个选项的值,最终的单元格里只存储了选项中的一个,出于效率考虑,实际存储的是数字,这些选项的每个值对应1,2,4,8,…64(位图,不是下标!!
).
enum 和 set 不建议插入数字,不方便阅读.
集合查询
//函数
find_in_set(sub,str_list)
//说明
如果sub在sub_list中,返回下标;不在返回0.
sub是单个选项,str_list是用逗号分开的字符串.
若要筛选多个选项,可在查询语句使用and连接多个查询函数.