MySQL的数据类型

数据类型

一、数据类型的分类

​ 数值类型、字符串类型、日期类型、string类型;

二、数值类型

​ 位类型:bit;

​ 整数类型:tinyint(1字节)、smallint(2字节)、mediumint(3字节)、int(4字节)、bigint(8字节);

​ 浮点数类型:float、double、decimal;

​ 数值类型除了bool和bit类型都可以在后面添加unsigned;不添加默认是有符号类型;当数据大小超范围了,语言上一般是发生截断,而MySQL中直接就发生告警,操作失败;即能够保证插入到数据库表中的数据一定是合法的;所以i数据类型本身也是一种约束,倒闭程序员进行合法的使用;整数类型定义格式:属性名 属性类型 (unsigned);结合应用场景来选择合适的大小;

​ bit类型:后面括号里可以指定位数,不添加默认值为1,范围是1-64;bit字段的显示默认是以ASCII码值显示;

​ float类型:语法格式 float[(m,d)],m表示指定显示长度,d指定显示小数位数,占用空间大小为4字节;特点:整数部分等于m-d个位数,在范围内,数据会四舍五入,保存符合小数位数的数据;精度大约是7位;

​ double类型:8字节使用与float相似;

​ decimal类型:与float类似但是小数的精度并不会丢失,而float类型位数过大会造成精度丢失;decimal整数最大位数m为65。支持小数最大位数d是30。如果d被省略,默认为0.如果m被省略,默认是10,根据MySQL的版本不同发生改变;总之精度要求高就选用decimal;

三、字符串类型

​ char类型:固定长度字符串,格式:char(L),L表示可以存储的长度,单位字符(与有语言中的字符表示的不是一个意思),最大长度值为255;

​ varchar类型:变长字符串。格式:varchar(L),L表示可以存储的字符长度,最大长度为65535个字节;以UTF-8的字符单位来保存;1个字符三个字节;

​ 两个类型的区别就是,varchar和char类型中的L规定的是上限,但是char是直接开辟好空间,而varchar是动态开辟的,用多少开辟多少;对于varchar类型,0-65535个字节中实际上是有1-3个字节来保存字符数量的,而char不会有额外的开销;使用gbk的化,就是2个字节来表示一个字符;

​ 占用空间较大的类型使用text;

​ 二进制数据blob;

四、日期和时间类型

​ 即年月日-时分秒

​ 常用的日期有三个:date 格式:‘年-月-日’,占用三个字节;datetime 格式:‘年-月-日 时:分:秒’,表示范围为1000-9999,占用八个字节;timestamp 格式:和datetime格式一致,只不过时间会因为数据的更新自动变化,占用四个字节;

五、string类型——enum和set类型

​ 枚举类型 enum 格式:enum(‘选项1’,‘选项2’,‘选项3’),用来支持多选一;实际上只是储存了多个选项中的一个值,而这些选项实际上存储的是数字,从左往右的顺序依次是1,2,3…最多有65535个;

​ 集合类型 set 格式:set((‘选项1’,‘选项2’,‘选项3’),用来支持多选多或者多选一;选项对应数字依次是1,2,4,8…最多64个选项;数字0表示空串;NULL表示此位置什么也没有;此时这些数字表示的不是下标而是位图;

​ 这两个类型也是可以插入NULL;

5.1两个类型的查找

select *from where 属性='值';#需要注意的是会进行严格匹配,所以需要借助集合查询函数find_in_set()
select 函数#是可以直接执行函数的;
会形成两行的表格,第一行是函数名,第二行是函数的返回值;
find_in_set的返回值是零和非零;非零表示在集合中查找到和查到的位置下标;零表示没有查找到;
where充当判断语句会将find_in_set的返回值传递给select,然后显示非零的一行;
where由于是判断语句,所以支持and多个二条件连接起来;
select * from 表名 where find_in_set('值',集合属性) and where find_in_set('值',集合属性); 
  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值