2020-07-15

1、事务

 事务主要用于处理操作量大,复杂度高的数据。事务是必须满足4个条件:

  · 原子性,每个事务是一个最小的不可分割单元

  ·  一致性,数据执行执行完事务之后,数据要保持一致(正确)

  ·  隔离性,事务和事务之间是隔离的,相互不影响(4中隔离级别)

  · 持久性,一旦事务提交成功,数据发生了不可逆的变化

事务默认是开启自动提交的,sql语句的执行 (SET AUTOCOMMIT=0), 把自动提交给取消。

1)开始事务 begin

    执行sql (如果中间错误了,执行rollback)

    提交事务 commit

2)存档(savepoint)

3)rollback:回滚会结束用户的事务,并撤销正在进行的所有未提交的修改

2、隔离事务

1)查看隔离级别

~查看mysql 默认的隔离级别 @@global.transaction_isolation

~系统的隔离级别 @@transaction_isolation

~当前会话的隔离级别 select @@global.transaction_isolation,@@transaction_isolation;

2)隔离级别

~read uncommitted (读未提交) --> 导致脏读,读取到其他事务没有提交的数据,如果其他万一回滚,这是数据无效。

~REPEATABLE-READ(默认的隔离级别,读已提交) ->解决脏读,导致不可重复读取,在同一事务中前后两次查询的数量可能不一致。

~ repeatable-read (可重复读) ->解决不可重复读,导致幻读

~serializable(串行化)解决幻读

    一个事务一个的执行,事务都不并发,没有任何问题,但是会到性能下降

3)修改隔离级别

    set session transaction isolation level read uncommitted

    set session transaction isolation level read committed

    set session transaction isolation level  repeatable read

3、视图

1)应用场景

    1. 数据关联很复杂

    2. 有一些数据不能想某些人看 (让别人通过视图查询数据)

2)例子

1. create view temp as select st.s_id sid,st.s_name sname, cu.c_name cname, sc.s_score score from student st left join score sc on st.s_id = sc.s_id left join course cu on cu.c_id = sc.c_id

2. select * from temp where sname = '赵雷' order by score desc;

你可能感兴趣的:(2020-07-15)