目录
1. 数值类型
2. bit类型
3.小数类型
3. 字符串类型
4 日期和时间类型
5. enum和set
1. 数值类型
2. bit类型
3.小数类型
1. float [ (m, d) ] [unsigned] : M指定显示长度,d指定小数位数,占用空间4个字节。
2. decimal(m, d) [unsigned] : 定点数m指定长度,d表示小数点的位数
decimal整数最大位数m为65。支持小数最大位数d是30。如果d被省略,默认为0.如果m被省略, 默认是10。
3. 字符串类型
1. char(L): 固定长度字符串,L是可以存储的长度,单位为字符,最大长度值可以为255
2. varchar(L): 可变长度字符串,L表示字符长度,最大长度65535个字节
varchar最大长度为65535(包括用于记录实际分配的大小1~3字节)个字节,并不是字符,在编码为utf8mb4最大只能开辟16383个字符。
3. char和varchar的区别
char类似c语言开辟了一段定长大小的空间,varchar大小则是变长的。
比如 char和varchar的大小都为20,后续不管插入多少个字符,char都只给你20个,varchar则会根据你插入了多少个字符而分配多少个字符。
utf8为例:
4 日期和时间类型
create table birthday (t1 date, t2 datetime, t3 timestamp);
插入数据:
insert into birthday(t1,t2) values('1997-7-1','2008-8-8 12:1:1')
timestamp不需要手动插入,默认会用当前的时间戳缺省,会随之时间自动变换。
比如评论时会自动显示当前时间,过了一段时间又会更新。
5. enum和set
enum:枚举,“单选”类型; enum('选项1','选项2','选项3',...);
该设定只是提供了若干个选项的值,最终一个单元格中,实际只存储了其中一个值;而且出于效率考虑,这些值实际存储的是“数字”,因为这些选项的每个选项值依次对应如下数字:1,2,3,....最多65535
set:集合,“多选”类型;set('选项值1','选项值2','选项值3', ...)
create table test8( name varchar(20), age enum('男','女'), hobby set('足球','看电影','代码','看书','旅游') );
插入数据:
enum可以用定义时的字面值,也可以用枚举常量(1 ~ 65535),只能选择其中一个。
set可以用定义时的字面值,可以选择多个,但常量代表对应的二进制位数(1~64),比如3-> 11,也就是前2个数据,1就是1,也就是前1个数据。
set的查询
这种写法是严格匹配的,并不会把自己别的爱好也显示出来。
find_in_set函数
find_in_set函数的返回结果如果是非0就代表真,也是集合对应的下标(从1开始)
这样就能显示包含该查询数据,也能包含自己其他的数据。