汽车装饰网站模板,网页架构人才培训中心,招标网站大全,济南企业做网站每日激励#xff1a;“当你觉得你会幸运时#xff0c;幸运就会眷顾你#xff0c;所以努力吧#xff0c;只要你把事情做好#xff0c;并觉得你会幸运#xff0c;你将会变得幸运且充实。” 绪论#xff1a; 本章继续学习MySQL的知识#xff0c;本章主要讲到mysql中的所… 每日激励“当你觉得你会幸运时幸运就会眷顾你所以努力吧只要你把事情做好并觉得你会幸运你将会变得幸运且充实。” 绪论 本章继续学习MySQL的知识本章主要讲到mysql中的所有类型本篇原本是之前出的结果写了忘记发了存到了现在抱歉抱歉~mysql中的类型大致能分为数值、时间、string、文本和二进制类型它们下面都还有很多细节下面我将主要从实操方面带你去领略mysql类型的细节。后续将继续更新mysql的约束下将快速更新敬请期待 ———————— 早关注不迷路话不多说安全带系好发车啦建议电脑观看。 —————— 本章因为大多为插入和创建表而这些在之前已经讲过不懂的可以看一下这篇表的必备操作blog所以代码展示就会较少因为主要就是在创建表时进行了设置类型然后观察插入的细节就不冗余的写代码了 MySQL数据类型分类
大致如下图 其中各个类型的范围 1. tinyint类型 tingyint只能插入1byte的数据(-128~127) 当插入超过1byte的数据时就会报错 还能定位无符号的tinyind unsigned此时就是从0~255注意不是用来扩大数据范围的 当插入数据超过范围时MySQL就会直接拦截报错不像语言将超过范围的数据编译器会截断。也就是说被成功插入到mysql中的数据他们就一定是合法的mysql中一般而言数据类型本身也是一种约束。这样就能倒逼程序员让其尽可能正确的插入
附 约束约束了使用者表示即使使用者不能很好的使用mysql也能保证数据的合法性mysql表中建立属性列列名称 类型在后正好和编程反过来 2. bit类型
bit [ ( M ) ] 位字段类型。M表示每个值的位数范围从1到64。如果M被忽略默认为1。
例假如M 1 也就是 1个比特位 就只能插入0 1
当插入比特位时他是按照ASCII码来显示的而又因为ASCII中0 1是不可视的数据所以下图看不见 证明如下前提修改online列属性bit(10)这样就能存在较大的ASCII码值当存入可视化的数据就能看的见了如a 位图结构最大是64当超过64后就会报错
3. float浮点数类型
float [ ( m , d ) ][ unsigned ]M指定显示长度d指定小数位数共占用空间4个字节。 举例使用 当 m 4表示能装的数据、d 2表示精度的个数如99.99就是刚刚好符合条件的 当精度你写的不够时会给你默认为设置的小数个数例如m 4、d 2时输入10.0 就会存成 10.00 因为m 4 且 d 会自动补齐所以输入为 100.0 就不行了因为小数会补成00这样就超过了4位也就是100.00 这是超过了4位的 当在小数点超出范围后就会进行将超出范围的小数四舍五入的方式存入但注意的是当四舍五入后同样是不能超过范围的也就是第5点 但并不表示如何时候都进行四舍五入当在99.995往后时超过的小数点的值大于等于5时就不能插入了因为这样四舍五入后就会变成 100.00 就会 超过 范围 float也能定义为无符号的这样就不能插入负数了 浮点数中的整数部分也是有精度的当超过一定值后就会省略
4. decimal
大部分同float类似同样能插入小数并且对于超出范围的小数将会四舍五入并且对一些特别的也不会插入成功 99.995以及会将小数点个数不足的补上0。 虽然decimal和float很像但还是有区别的 decimal不会像float一样去对于一些过大的数据进行处理也就是它的精度比float更高 float表示的精度大约是7位。decimal整数最大位数m为65。支持小数最大位数d是30。如果d被省略默认为0.如果m被省略默认是10
5. 字符串类型
5.1 char
char(L)固定长度字符串L是可以存储的长度单位为字符字符的概念和语言中不同他代表的就是一个符号例当char(2) 表示可以存放两个字符可以是字母或汉字但是不能超过2个。 再例如中文同样也是符号个数 L的最大范围是255
5.2 varchar变成字符串
varchar(L): 可变长度字符串L表示字符长度最大长度65535个字节 也就是21845个字符1字符char 8字节byte同样当有括号时本质和char很像。 具体如下图当设置为6字符时当插入“中国人加油” 时就有7个字符了此时就超了所以插不进去 关于varchar(len)len到底是多大这个len值和表的编码密切相关
varchar长度可以指定为0到65535之间的值但是有1 - 3 个字节用于记录数据大小所以说有效字节数是65532。当我们的表的编码是utf8时varchar(n)的参数n最大值是65532/321844[因为utf中一个字符占用3个字节]如果编码是gbkvarchar(n)的参数n最大是65532/232766因为gbk中一个字符占用2字节
具体如下图当中文类型为utf-8 5.3 比较char和varchar 如何选择定长或变长字符串
如果数据确定长度都一样就使用定长char比如身份证手机号md5如果数据长度有变化,就使用变长(varchar), 比如名字地址但是你要保证最长的能存的进去。
定长的磁盘空间比较浪费但是效率高。变长的磁盘空间比较节省但是效率低。定长的意义是直接开辟好对应的空间变长的意义是在不超过自定义范围的情况下用多少开辟多少
6. 日期和时间类型
常用的日期有如下三个
1. date:
日期 ‘yyyy-mm-dd’ 占用三字节
2. datetime:
时间日期格式 ‘yyyy-mm-dd HH:ii:ss’ 表示范围从 1000 到 9999 占用八字节
3. timestamp
时间戳从1970年开始的 yyyy-mm-dd HH:ii:ss 格式和datetime 完全一致占四字节
三种时间类型类型实操
create table if not exists t11(t1 date,t2 datetime,t3 timestamp);插入数据
date xxxx-xx-xx
datetimexxxx-xx-xx xx:xx:xxinsert into t11(t1,t2) values(2000-10-01,1949-10-01 08:00:00);对于时间戳来说不需要自己插入时间当修改表内的属性时就会自动更改。 可以类似的理解成评论的实现方法 当你发送评论时就会自动的带上你的时间而这个时间一般就是使用了datestamp类型
7. enum枚举和set集合
enum枚举 单选 类型enum(‘选项1’,‘选项2’,‘选项3’,…) 该设定只是提供了若干个选项的值最终一个单元格中实际只存储了其中一个值。set集合“多选”类型set(‘选项值1’,‘选项值2’,‘选项值3’, …); 该设定只是提供了若干个选项的值最终一个单元格中设计可存储了其中任意多个值
例 有一个调查表votes需要调查人的喜好 比如登山游泳篮球武术中去选择(可以多选)男女[单选]。
其中性别就用enum类型因为只能单选一个、爱好就可以用set类型他是可以多选的
具体如下
1. 当enum类型处插入别的其他值时就会报错 2. 在enum中的类型可以用下标表示插入数据
他是从1开始的例如男女的话下标就分别是1 2
3. set的插入
使用方法和enum类似同样不能使用超出范围的数据 不同于enum的是可以同时设置多个参数并且以逗号区分
insert into votes values(曹操,1,乒乓球足球游泳);
其中的1 在就enum中表示 男
而set中可以插入多个值4. set用数字来插入
但注意的是该数字并不是下标这个数字是和元素的个数有关的位图例如下图set有5中类型那么它的位图就有5个00000注意的是位图的看法和正常的二进制是相反的
例当为1时10000代表取出第一个元素当为2时01000代表取出第二个元素当为3时11000注意此时是同时取出第一个和第二个元素若设置为0下标该值会被设置为空串注意并不是NULL 为什么说是相反的因为: 当值为7时11100就代表取出前三个元素正常二进制的700111而此处的7我们反过来看11100也就对应着所要元素位置 5. 对enum和set类型的查找和一些细节处理
enum能使用下标和直接查询
select * from votes where gender2;//查询votes表中的女2. set类型能使用下标和直接查询
但注意的是它不能查找出有多个爱好中包含羽毛球的人后面补充
也能直接同时查找出有多个值
通过上两个案例来看发现对set类型来说当在一行数据中的set类型有多个值时若直接查找其中的某一个值是无法找到的 因为select是直接看所有元素的并不会判断其中是否包含。 处理方法
首先需要知道select后面是可以跟函数的如find_in_set作用在集合中找是否有该元素若查找到返回下标反之返回0具体如下图 那么可以 在set类型中如何找到从有多个爱好set值中只要包含羽毛球爱好的人就符合条件 那么就可以在select中使用find_in_set函数用于select的where后面进行判断只要返回非0就表示真了 具体如下 其中若要同时查找多个元素注意的是find_in_set并不能同时查找多个元素因为find_in_set是查找元素若要执行同时查找可以用 and进行逻辑与操作or 逻辑或进行再次的筛选。 找到爱好同时包含羽毛球和代码的人 具体如下图 本章完。预知后事如何暂听下回分解。
如果有任何问题欢迎讨论哈
如果觉得这篇文章对你有所帮助的话点点赞吧
持续更新大量MySQL细致内容早关注不迷路。