学习MySQL之TCL语言

TCP(Transaction Control Language) 事务控制语言

事务

一、含义
事务: 一条或多条SQL语句组成一个执行单位,一组SQL语句要么都执行要么都不执行
二、特点(ACID)
A原子性(Atomicity): 事务中所有操作是不可再分割的原子单位。事务中所有操作要么
全部执行成功,要么全部执行失败。
C一致性(Consistency): 事务执行后,数据库状态与其它业务规则保持一致。如转账业
务,无论事务执行成功与否,参与转账的两个账号余额之和应该是不变的。
I隔离性(Isolation): 隔离性是指在并发操作中,不同事务之间应该隔离开来,使每个并
发中的事务不会相互干扰。
D持久性(Durability): 一旦事务提交成功,事务中所有的数据操作都必须被持久化到数
据库中,即使提交事务后,数据库马上崩溃,在数据库重启时,也必须能保证通过某种
机制恢复数据。
三、事务的使用步骤★
了解:
隐式(自动)事务:没有明显的开启和结束,本身就是-条事务可以自动提交,比如insert、 update、 delete
显式事务:具有明显的卅局机结束
使用显式事务:
①开启事务
set autocommit=0;
start transaction;#可以省略
②编写一组逻辑sql语句
注意: SQL语句支持的是insert、update、delete
设置回滚点: .
savepoint回滚点名;
③结束事务
提交: comnit;
回滚: rollback;
回滚到指定的地方: rollback to回滚点名;

四、并发事务
1、事务的并发问题是如何发生的?
多个事务同时操作同一个数据库的相同数据时
2、并发问题都有哪些?
对于同时运行的多个事务,当这些事务访问数据库中相同的数据时,如果没有采取必要的隔离机制,就会导致各种并发问题:
脏读:对于两个事务T1, T2,T1读取了已经被T2更新但还没有被提交的字段.之后,若T2回滚,T1读取的内容就是临时且无效的.
不可重复读:对于两个事务T1, T2, T1读取了一个字段,然后T2更新了该字段.之后, T1再次读取同一个字段,值就不同了
幻读:对于两个事务T1, T2, T1从一个表中读取了一个字段,然后T2在该表中插入了一些新的行.之后,如果T1再次读取同一个表,就会多出几行
3、如何解决并发问题
通过设置隔离级别来解决并发问题
4、隔离级别
脏读 不可重复读 幻读
read uncommi tted:读未提交 X X X
read committed:读已提交 √ X X
repeatable read:可重复读 √ √ X
serializable:串行化 √ √ √

视图

一、含义
mysql 5. 1版本出现的新特性,本身是一个虚拟表,它的数据来自于表,通过执行时动态生成。
好处:
1、简化sql语句
2、提高了sql的重用性
3、保护基表的数据,提高了安全性
二、创建
create view视图名
as
查询语询;
三、修改
方式一:
create or replace view 视图名
as
查询语句;
方式二:
alter view 视图名
as
查询语句
四、删除
drop view 视图1,视图2,
五、查看
desc视图名:
show create view
视图名;
六、使用
1.插入
insert
2.修改
update
3.删除
delete
4.查看
select
注意:视图一般用于查询的,而不是更新的,所以具备以下特点的视图都不允许更新
①包含分组函数、group by、 distinct. having、union、
②join
③常量视图
④where后的子查询用到了fr om中的表
⑤用到了不可更新的视图

七、视图和表的对比
关键字 是否占用物理空间 使用
视图 view 占用较小,只保存sql逻辑 一般用于查询
表 table 保存实际的数据 增删改查

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值