数据类型
数据库类型的分类
类型也是一种约束 ,限制,不让你做某件事情
- 可以决定占用空间的大小,既要考虑类型也要考虑磁盘,
- 检验sql是否合法,语法检查上左右类型不匹配
数值类型
- tinyint
无符号数0-255
tinyint:当我们插入的时候,如果数据越界(sql就会重新终止,或者变到这个非法范围最接近的数)
字符串也同样接收
通过数据类型来约束我们,在mysql里面只允许插入合法类型,合法数值,建议不要使用unsigned
- bit
bit(m),m指定位数,默认为1,1-64
bit显示字段的时候,是按照ascill对应的值进行显示
bit按照ascill值显示
1,0在ascill表中都是不可显示的
- float
float (m,d),m代表显示长度,d是指定小数点后面的位数,占4个字节
float(4,2)显示-99.9~99.99
msql在保存时会采取四舍五入的方案
采用四舍五入的方法,mysql存储的仍然是99.99
unsigned加后面float只支持无符号数
- decimal
decimal(m,d)和float一样
float在存储的时候,精度不是很高,所以在float精度7位当中,我们只推荐decimal,精度更高,double也不要使用,decimal支持的精度最大64位
decimal整数最大位数m=65,支持小数最大位数d=30,如果d被省略了,默认为0,m被省略,默认为10,我们建议不要省略
字符串类型
-
char
char (l):固定长度字符串,l是可以存储的长度,最大长度为255,单位是字符
l即可以插入的长度的最大值,放l个字符
字符!=字节
一个英文单词/汉字就是一个字符 -
varchar
varchar(l):可变长度字符串,l表示字符串长度,单位是字符,最大长度是65535个字节,不是字符,
和char的区别
char(8)我们存abcd,它会开8个空间,空间浪费
varchar(8)我们存abcd,它会存4个字节,调整开辟空间的量,空间不会浪费
说明
- 我们可以使用65532个字节,varchar的长度是65535个,有1-3个用来记录我们用了多少个字节
- 当我们使用utf8编码的时候,我们最大的使用参数是65535/3=21844,一个字符占用3字节
- 变长效率比较低,不变效率比较高
越界都会报错
日期
- date:年-月-日,占3字节
- datatime :时间日期 ,年-月-日-时-分-秒,占8字节
- timestamp:时间戳,从1970年开始,格式和datetime一样,占4个字节,我们创建出来,就会自动更新,默认就是当前时间 ,最近修改的时间记录下来
格式都是一样的,在数据库里面
字段得全,分隔符我们写的不同格式,在mysql中都会做调整,所以,我们最好就按照mysql里面的操作进行操作
这个地方修改了t1之后t3会自动更新
enum 和set
- enum枚举类型,单选
enum(选项1,选项2.。。)最多是65535个选项,在里面还是以整数进行存储的
底层还是存储整数
- set集合,多选
set(选项1,选项2.。。)最多是65535个选项,在里面还是以整数进行存储的
案例:调查一个人的喜好
用,进行分割
set它也是用1,2,3来表示对应的爱好,它是用比特位来表示选择什么选项,1,2代表是比特位的位数
select * from votes where find_in_set(‘swim’,sports);//这样会把爱好游泳的都搜查出来