MySQL之视图、事务

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Scrat_Kong/article/details/82384516

视图

问题:

如果我有一个很复杂的sql语句,但是我还会经常使用该怎么办?

概念:

  1. 视图是一个虚拟表。
  2. 视图同样跟真实表一样包含行和列,但是视图没有在数据库中真实的存储数据
  3. 视图中行和列的数据都来自于其引用的真实表中行和列的数据

好处:

  1. 安全性
  2. 方便操作,减少编写复杂的重复的sql语句
  3. 易于扩展

例:a表、b表删除,使用c表

定义视图:

  • create view 视图名称 as select 语句

查看视图:

查看所有的表,同时也会将所有的视图显示出来

show tables

使用视图:

  • select * from 视图名称

删除视图:

  • drop view 视图名称

视图Demo:

查询goods和goods_cates和goods_brands三张表中的信息

create view v_goods_details as select a.name as 'aname',a.price ,b.name as 'bname',c.name as 'cname' from goods as a inner join goods_cates as b on a.cate_id=b.id inner join good

 

 

事务

为什么会需要事务?

如,转账问题:

       将A账户中的10000元,转入到B账户中,需要两部:

  1. 检查A的账户是否大于10000元
  2. 将A账户中的总金额减少10000元
  3. 将B账户中的总金额增加10000元

概念:

所谓事物,他就是一个操作序列,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位。

事务四大特性(ACID)

  1. 原子性
  2. 一致性
  3. 隔离性
  4. 持久性

原子性:

       一个事务被看作为一个最小的工作单位,整个事务中的所有操作,要么都提交成功,要么都提交失败,不可能只执行事务中的某一个部分。

一致性:

       数据库总是从一个一致性的状态转移到另一个一致性的状态。事务中如果有操作没有提交成功,其他操作也不可能提交成功。

隔离性:

       一个事务在提交前,对其他事务是不可见的

持久性:

       一旦事务提交,则其所作的所有修改会永久性保存到数据库中。

开启事务

开启事务后,修改的数据会存储到本地缓存中,而不会修改物理表

begin

或者

start transaction

提交事务

将缓存中的数据变更到物理表中

commit

回滚事务

放弃缓存中的变更数据

rollback

注意点:

使用insert、update、delete会自动触发事务。可以通过set autocommit进行设置

猜你喜欢

转载自blog.csdn.net/Scrat_Kong/article/details/82384516
今日推荐