mysql学习整理所有问题
mysql中的者则表达式(也算做是模糊查询)
使用//.来匹配有.的字符
数字或者字母后边加上?表示数字或者字母可选还是不可选
拼接字符串concat()
文本处理函数
同时指定两个列进行全文搜索(前提是这两个列必须增加索引)和against(“” in boolen mode)进行连用
使用存储过程
其中onumber入参,taxable入参,ototal出参
declare 声名参数
处理数据库分页问题
2.深层次理解数据库
也是基于tcpIP协议的,基于Unix的嵌套字文件
InnoDB数据库引擎
常数表达式
isNull是全表扫描所以需要优化
in和多个or是有区别,in中使用的是二分查找树发
关联查询优化器:
在多个表进行关联的时候,优化器会自动筛选出数据库的表进行二叉树的最优解
关系型数据库和非关系型数据库
为什么加对应的字段,因为要将读取出的数据并保存到内存中去(降低内存)
orm对象关系映射和类进行对应
数据库语言分类
1.DDL数据库定义语言
2.数据库操纵语言
3.数据库控制语言
dual伪表
5.7版本Limit 0,20 跳过 0 条显示20
8.0 版本 Limit 20 offset 0
加密
自然链接和using链接 字段一致的时候使用
需要设置
truncate table 的效率比delete效率快
mysql8.0 :的原子化的特性新增特性
计算列
全文检索
数据库性能优化:
索引的底层结构是通过B+树进行构建的,
1.聚簇索引
在我们添加主键的时候会自动生成索引,并且它的结构是:
二分查找法,在索引的页中会保存子页的页码以及主键对应的值
2.非聚簇索引
二分查找法,在索引的页中会保存子页的页码以及字段对应的值
3.复合索引
二分查找法,在索引的页中会保存子页的页码以及按顺序的字段对应的值
应用方式,不管是增删改查where条件后面的都要加上对应的索引
因为:sql是先执行 from 后 where的字敦 在修改和删除的时候可以看成是先查询,只要查询就要增加索引进行查询
在join的时候使用using和on后面链接的字段类型必须一致:因为如果不一致存在类型转换的话那么索引将会失效,失效是指where条件之后的索引失效
第一1000行数据时候不需要创建索引,有大量重复数据的时候不需要创建索引
避免对频繁更新的表创建过多的索引
避免用无序的值生成索引
不用的索引要删除掉
不要定义冗余的索引
查询数据所保存的所有的数据页:最后一次查询的开销
使用慢查询来优化数据库:
1.开启慢查询日志
此时状态为未开启
开启
查看日志参数:开启状态,开启文件
永久设置日志:修改配置
真正的优化,索引失效:
1.where 后面的字段是运算符
2.where后面有or的时候所有字段要都有索引
3.模糊查询以%开头
4.有比较运算符号
5.!=的情况下不能使用索引
6.is null 能使用索引,is not null 不能使用索引
7.联合索引最左原则
隔离级别:
1.读未提交
2.读已经提交
3.可重复读
4.串行化
脏读:在一个事务修改了但是未提交的情况下,另一个事务是能读取到数据的,此时事务1回滚导致事务2数据错误
不可重复读:事务1修改并提交之后,正在执行的事务2中两次结果不相同。
幻读:当事务1添加数据后,事务2查询出来的数据没有加1,但是再次添加相同id的数据的时候会提示主键重复问题
锁:在加锁的时候不能重复添加
1.共享锁和排他锁
读数据用共享锁,写数据用排他锁
2.表级锁,页级锁,行级锁
3.行级锁,间隙锁,临建锁
一般在数据库引擎为innerDB的时候我们通常使用行级锁
和共享排他用法基本一致,只不过是在表的基础上加上where条件
间隙锁:假如id为3,8之间加入5为任意一种锁,此时在4567中都不能可以再重复加锁,但是不能再执行DDL(增删该查)操作了
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步