TCL
一、什么是事务?
由一个或多个sql语句组成的一个执行单元,单元内的sql语句要么全都执行要么全都不执行;
二、事务的ucid(属性)
1.原子性:事务是一个不可分的最小单元,事务操作要么都执行要么都不执行;
2.一致性:是指事务所处理的数据从一个一致状态转换为另外一个抑制状态;
3.隔离性:指事务的操作以及其实用的数据不受其他并发事务的影响,并发事务之间因该相互隔离;
4.持久性:指事务一旦提交,则他所修改的数据则会是永久的将不会因接下来的任何操作以及数据库故障影响
三、事务的隔离级别
1.隔离级别产生的原因:多个并发事务同时操作同一个数据库中的同一组数据造成的并发问题;
2.并发问题有哪些?
(1)脏读:一个事务读取到了另外一个事务未提交的数据
(2)不可重复读:同一个事物多次访问对应表中的数据不一致
(3)幻读:一个事务读取数据时,另外一个事务对这组数据进行更新导致第一个事务读到了没有更新的数据
四、并发问题的处理方法
1.设置隔离级别
(1)READ UNCOMMITTED:允许所有的并发问题都出现(脏读、不可重复读、幻读)
(2)READ COMMITEO:只可以避免脏读问题,其他不可重复读以及幻读问题依然存在
(3)REPEATABLE READ:可以避免脏读以及不可重复读问题,但幻读问题还是存在
(4)SERIALIIABLE:所有的并发问题均可以避免,但是性能很低
DQL
五、DQL中的连接查询
1.92标准连接查询:
①等值连接:多表等值连接结果为多表的交集部分
②n表连接需要n-1条连接条件
③多表顺序可变
④一般为了区分字段需要为表起别名
⑤可以添加之前所学过的分组查询以及排序使用
⑥支持内连接,以及部分外连接
2.99标准连接查询:
①支持内连接以及外连接(左外left[outer]、右外rigth[outer])
②外连接:外连接结果=内连接结果+主表中有而从表中没有的且显示为null
③左外连接:left join左边为主表
④右外连接:right join右边为主表
⑤full两边都为主表
3.外连接:
(1)应用场景:用于查询一个表中有,另外一个表中没有的记录
(2)特点:
①外连接查询的结果为主表中所有的记录,如果从表中有与之配对的结果则显示匹配的结果;如果从表中没有与之相匹配的则显示null;
②左外连接:left join左边为主表;右外连接:right join右边为主表;full两边都为主表
③左外右外交换两个表的顺序,可以实现相同的结果