TCL即事务控制语言。
事务:一个或者一组sql语句组成的一个执行单元,这个执行单元要么全部执行,要么全部不执行。如果单元中某条SQl语句一旦执行失败或产生错误,整个单元将会回滚,所有受到影响的数据将回到事务开始的状态。
1.(Atomicity)原子性
原子性是指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。
2.(Consistency)一致性
事务必须使数据库从一个一致性状态变换到另外一个一致性状态。
3.(Isolation)-隔离性
是指一个事务的执行不能够受其他事务的干扰,并发执行的各个事务之间互相干扰。
4.(Durability) 持久性
持久性是指一个事务一旦提交,它对数据库中的数据的改变就是永久性的,
接下来的其他操作和数据库不应该对其有任何影响。
(一)隐式事务
事务没有明显的开启和结束标记,比如insert,update,delete语句
(二)显示事务
事务具有明显的开启和结束的标记,必须先设置自动提交功能为禁用状态。
语法
步骤一:开启事务
set autocommit = 0;
start transaction; #可以不写
步骤二:编写事务中的SQL语句(select,insert,update,delete)
步骤三:结束事务
commit;#提交事务
rollback;回滚事务,相当于不执行SQL语句
savepoint 节点名;设置保存点,搭配roolback to 节点名
set autocommit = 0;
start transaction;
use stus;
update stu set sal =10 where id =1;
update stu set sal =14 where id =2;
commit; #提交事务
#执行之后,id=1的sal=10,id=2的sal=14;
set autocommit = 0;
start transaction;
use stus;
update stu set sal =12 where id =1;
update stu set sal =12 where id =2;
rollback;
#原来表中的数据为:id=1的sal=10,id=2的sal=14; 执行之后,id=1的sal=10,id=2的sal=14;相当于回滚到了起始的状态。
set autocommit = 0;
start transaction;
use stus;
update stu set sal =15 where id =1;
savepoint a;
update stu set sal =15 where id =2;
rollback to a;
select * from stus.stu;
#原来表中的数据为:id=1的sal=12,id=2的sal=12; 执行之后,id=1的sal=15,id=2的sal=12;相当于回滚到了节点a的状态。
对于同时运行的多个事务,当这些事务访问数据库相同的数据时,如果没有采取必要的隔离机制,就会导致各种并发问题。
MySQL支持4种隔离级别,默认为REPEATABLE READ
查看和设置隔离级别
select @@transaction_isolation;
set session transaction isolation level read uncommitted; #设置隔离级别为:read uncommitted
视图是一种虚拟表,和普通的表一样使用,是通过普通的表动态的生成数据。
(一)创建视图
方法一:
create view 视图名
as
查询语句;
方法二:
create or replace view 视图名
as
查询语句;
create or replace view v #创建或修改
as
select z.id,bonus,name,budget,probability,variety,match_id
, boyname ,user_id , b.rank ,low ,high from zhutong z
inner join boys b
on b.id =z.match_id;
select * from v #使用
where boyname like '%e%';
(二)修改视图:
方法一:
create or replace view 视图名
as
查询语句;
方法二:
alter view 视图名
as
查询语句;
(三)删除视图
drop view 视图名1,视图名2,...;
(四)查看视图
desc 视图名;
(五)视图的更新
插入
insert into 视图名 values(值1,值2,...);#会影响到原始表的数据
修改
update 视图名 set 列名=值,...;
删除
delete from 视图名 where 筛选条件;
创建语法关键字 | 是否占用完全物理空间 | 使用 | |
---|---|---|---|
视图 | create view | 只保存了SQL逻辑 | 增删改查,但是一般用于查询 |
表 | create table | 保存了数据和逻辑 | 增删改查 |
delete和truncate在事务使用时的区别
delete可以使用rollback返回到事务前的状态,truncate则不能回滚到事务前的状态。
MySQL复习day01:数据库简介和 DQL数据查询语言
MySQL复习day02:DQL数据查询语言续
MySQL复习day03:DQL数据查询语言完结
MySQL复习day04:DML数据操作语言和DDL数据定义语言
MySQL复习day05:TCL事务控制语言和视图
MySQL复习day06:变量,存储过程
MySQL复习day07:函数
MySQL复习day08:流程控制结构
MySQL复习day09:逻辑架构和引擎,索引详解(explain)
感谢诸君观看,如果感觉有用的话,点个赞吧!