MySQL基础——事务、视图

MySQL基础——事务、视图

一、事务

1. 特性:ACID
1. A:原子性:一个事务不可再分割,要么都执行要么都不执行
2. C:一致性:一个事务执行会使数据从一个一致状态切换到另外一个一致状态
3. I:隔离性:一个事务的执行不受其他事务的干扰
4. D:持久性:一个事务一旦提交,则会永久的改变数据库的数据

2. 事务的创建

1.	隐式事务:事务没有明显的开启和结束的标记
	比如:insert 、update、delete语句

2.	显示事务:事务具有明显的开启和结束的表记	
	前提:必须先设置自动提交功能为禁用
	Set autocommit=0;
3. 事务使用步骤:
步骤一:开启事务
	Set autocommit=0;
	Start transaction; #可选的
步骤二:编写事务中的sql语句(select insert update delete)
	语句1;
	语句2;
	…
步骤三:结束事务
	Commit;	#提交事务
	Rollback;	#回滚事务
#演示事务的使用步骤:
Set autocommit=0;
Start transaction;

#编写一组事务的语句
Update account set balance = 500 where username = ‘张无忌’;
Update account set balance = 1500 where username = ‘赵敏’;

#结束事务
Commit;

对于同时运行的多个事务,当这些事务访问数据库中相同的数据时,如果没有采取必要的隔离机制,就会导致各种并发问题:脏读、不可重复读、幻读

Mysql支持4中事务隔离级别。默认的事务隔离级别为:Repeatable read

	查看当前隔离级别:select @@tx_isolation;
	设置最低的隔离级别:set session | global transaction isolation level read uncommitted
4. 事务的隔离级别:
						脏读		不可重复读	幻读
Read uncommitted:		会出现		会出现		会出现
Read committed:			不会出现		会出现		会出现
Repeatable read:		不会出现		不会出现 	会出现
Serializable:			不会出现		不会出现	   不会出现
#演示savepoint的使用
Set autocommit=0;
Start transaction;
Delete from account where id = 25;
Savepoint a; #设置保存点
Delect from account where id = 28;
Rollback to a; #回滚到保存点

二、视图

视图的含义:

虚拟表,和普通表一样使用

优点:

1. 重用sql语句
2. 简化复杂的sql操作,不必知道它的查询细节
3. 保护数据,提高安全性
1. 创建视图

语法:

Create view 视图名 
as 
查询语句;
2. 视图的修改

方式一:

	Create or replace view 视图名	#视图不存在即创建,若存在则修改
	As
	查询语句;

方式二:

	Alter view 视图名
	As
	查询语句;
3. 删除视图

语法:

Drop view 视图名,视图名,…;
4. 查看视图
Desc 视图名;

Show create view 视图名;
5. 视图的更新
1)插入
Insert into myvl values(‘张飞’,’zf@qq.com);
2)修改
Update myvl set last_name = ‘张无忌’ where last_name = ‘张飞’;
3)删除
Delete from myvl where last_name = ‘张无忌’;

注意:具备以下特点的视图不允许更新

1.包含以下关键字的sql语句:分组函数、distinct、group by、having、union或者union all
2.常量视图
	Create or replace view myv2
	As
	Select ‘john’ name;
	Select * from myv2;
更新:delete myv2 set name = ‘luck’;		#报错,常量视图无法更新

3.select中包含子查询

4.join

5.from后面是一个不能更新的视图

6.where子句的子查询引用了from子句中的表

delete和truncate在事务使用时的区别:

Delect支持回滚,truncate不支持回滚。##回滚语句:Rollback
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值