ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

年后找工作—MySql学习

2022-01-29 22:33:42  阅读:135  来源: 互联网

标签:事务 索引 数据库 子句 学习 工作 分组 MySql 一致性


MySql记忆点
1.between and 是封闭区间
2.ifnull(可能为null的项目,如果为null想转化的值)函数
3.groupby 用在where语句后,groupby一般跟分组函数一起使用。分组函数(sum,avg,max,min)
4.groupby语句,select 只能是分组的项目 以及分组函数。加别的项目会出错

面霸
一、事务的四大特性(ACID)
1、原子性(Atomicity)
2、一致性(Consistency)
3、隔离性(Isolation)
4、持久性(Durability)
二、事务的隔离级别(默认事务级别为可重复读)
MySQL数据库的四种事务隔离级别
Read Uncommitted(读取未提交内容)
Read Committed(读取提交内容)
Repeatable Read(可重读)
Serializable(可串行化) 
一、事务的四大特性(ACID)
如果一个数据库声称支持事务的操作,那么该数据库必须要具备以下四个特性:
1、原子性(Atomicity)
  原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚,因此事务的操作如果成功就必须要完全应用到数据库,如果操作失败则不能对数据库有任何影响。
2、一致性(Consistency)
  一致性是指事务必须使数据库从一个一致性状态变换到另一个一致性状态,也就是说一个事务执行之前和执行之后都必须处于一致性状态。
  拿转账来说,假设用户A和用户B两者的钱加起来一共是5000,那么不管A和B之间如何转账,转几次账,事务结束后两个用户的钱相加起来应该还得是5000,这就是事务的一致性。
3、隔离性(Isolation)
  隔离性是当多个用户并发访问数据库时,比如操作同一张表时,数据库为每一个用户开启的事务,不能被其他事务的操作所干扰,多个并发事务之间要相互隔离。
  即要达到这么一种效果:对于任意两个并发的事务T1和T2,在事务T1看来,T2要么在T1开始之前就已经结束,要么在T1结束之后才开始,这样每个事务都感觉不到有其他事务在并发地执行。
4、持久性(Durability)
  持久性是指一个事务一旦被提交了,那么对数据库中的数据的改变就是永久性的,即便是在数据库系统遇到故障的情况下也不会丢失提交事务的操作。
  例如我们在使用JDBC操作数据库时,在提交事务方法后,提示用户事务操作完成,当我们程序执行完成直到看到提示后,就可以认定事务以及正确提交,
即使这时候数据库出现了问题,也必须要将我们的事务完全执行完成,否则就会造成我们看到提示事务处理完毕,但是数据库因为故障而没有执行事务的重大错误。

什么时候考虑给字段加索引
€数据量庞大
€该字段很少的DML操作
€该字段经常出现在where子句中
*主键和具有unique约束的字段会自动增加索引
索引的好处:减小了检索范围
create index 索引名 on 表名(字段名)
索引的实现原理:通过B Tree 缩小检索范围 ,底层索引进行排序,分区。索引会携带数据在表中的“物理地址”(rowid ),最终通过索引检索到数据之后,获取到关联的物理地址,通过物理地址定位表中的数据,效率最高。

视图
视图可以隐藏表的实现细节。保密级别较高的系统,对外只提供数据库的视图。

如果我们想要匹配单个字符,就需要使用下划线 () 通配符。(%)和()的区别在于,(%)代表零个或多个字符,而(_)只代表一个字符。

当然你也需要注意 索引是否会失效。因此除了考虑建立字段索引以外,你还需要考虑:
1、不要在WHERE子句后面对字段做函数处理,同时也避免对索引字段进行数据类型转换
2、避免在索引字段上使用<>,!=,以及对字段进行NULL判断(包括 IS NULL, IS NOT NULL)
3、在索引字段后,慎用IN和NOT IN,如果是连续的数值,可以考虑用BETWEEN进行替换
因为在WHERE子句中,如果对索引字段进行了函数处理,或者使用了<>,!=或NULL判断等,都会造成索引失效。

完整的SELECT语句内部执行顺序是:
1、FROM子句组装数据(包括通过ON进行连接)
2、WHERE子句进行条件筛选
3、GROUP BY分组
4、使用聚集函数进行计算;
5、HAVING筛选分组;
6、计算所有的表达式;
7、SELECT 的字段;
8、ORDER BY排序
9、LIMIT筛选

标签:事务,索引,数据库,子句,学习,工作,分组,MySql,一致性
来源: https://blog.csdn.net/weixin_43605103/article/details/122748506

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有