MySQL 事务、视图、索引

一、视图

1.1 为什么使用视图?

   安全——不希望用户看到整个数据库的结构,所以对不同权限的用户使用不同的视图隐藏必要数据;

 方便——让用户更容易获得、理解数据;

1.2 什么是视图?

 视图是一种查看数据库中一个或多个表中数据的方法,是保存在数据库中的select查询。

 视图是一种虚拟表,它的行和列来自查询中引用的表,在执行时,它直接显示来自表中的数据。

1.3 视图常用来进行下面三种操作

  • 筛选表中的行;
  • 防止未经许可的用户访问敏感数据;
  • 将多个物理数据表,抽象为一个逻辑数据表。

1.4 创建、查看视图

    1)创建视图格式:
         create view view_Name as <select子句>;

    2)删除视图   (如果数据库中已经存在同名视图,先删除)
         drop view if exists view_student;
    3)查看视图 
         select * from view_student;

   4)举例:

--创建视图
create view v_goods as select g.*,c.name as cates_name,b.name as brand_name from goods as g left join goods_cates as c on g.cates_id = c.id left join goods_brand as b on g.brand_id = b.id;

--查看视图
 select * from v_goods;

-- 删除视图
drop view v_goods;

1.5 使用视图的注意事项

  • 每个视图中可以使用多个表
  • 与查询相似,一个视图可以嵌套另一个视图,但最好不要超过三层;
  • 对视图数据进行添加、更新和删除操作直接影响表中的数据;
  • 当数据来自多个表时,不允许添加和删除数据。

1.6、视图的作用

    1)提高了重用性,就像一个函数

    2)对数据库重构,却不影响数据库的运行

    3)提高了安全性能,可以对不同的用户

    4)让数据更加清晰

 

二、事务(Transaction)

2.1 什么是事务?

SQL中,事务是指将一系列数据操作捆绑成为一个整体进行统一管理。

如果一个事务执行成功,该事务中进行的所有数据均会提交,称为数据库中的永久组成部分;

如果事务执行时遇到错误切必须取消or回滚,则数据将全部恢复到操作前的状态,所有更改会被清除。

在数据库系统上执行并发操作时,事务是作为最小的控制单元来使用的,特别适用于多用户同时操作的数据库系统。

2.2 事务的ACID属性

原子性(Atomicity):一个事物必须被视为一个不可分割的最小单位,这个事物中的所有操作要么全部提交成功,要么全部回滚失败,对于一个事物来说,不可能只执行其中的一部分操作,这就是事物的原子性。

事务中的所有元素必须作为一个整体提交或回滚。

一致性(Consistency):数据库总是从一个一致性的状态转换到另一个一致性的状态。(在前面的例子中)

一致性确保了,及时在执行第三四语句之间系统崩溃,支票账户中也不会损失200元,因为事物最终没有提交,所以事物中所做的修改也不会被保存到数据库中。

事务完成时,数据必须处于一致状态。在事务进行中,可能会不一致。如转账操作中的金额总量。

隔离性(isolation):通常来说,一个事物所做的修改在最终提交以前,对其他事物是不可见得(在前面的例子中,当执行完第三条语句,最后一条语句还没有执行完成,此时另外一个账户汇总程序开始运行,则其账户的余额并没有被剪掉200块)

对数据进行修改的所有并发事务是彼此隔离的,即事务是独立的。

持久性(durability):一旦事物提交,则其所做的修改会永久保存到数据库中。(此时,及时系统崩溃,修改的数据也不会丢失)

指不管系统是否发生了故障,事务处理的结果都是永久的。就是说一旦事务被提交,事务的效果会被永久地保留在数据库中。

2.3 如何执行事务

MySQL的默认存储引擎InnoDB支持事务,InnoDB主要通过UNDO和REDO日志实现

UNDO日志:复制事务执行前的数据,用于在事务发生异常时回滚数据;

REDO日志:记录在事务执行中,每条对数据进行更新的操作,当事务提交时,内容会一起被刷新到磁盘。

2.4  事务的执行过程

MySQL的默认设置下,每句SQL语句就是一个事务,即执行SQL语句后自动提交。

(1)开始时,开启事务 or 关闭默认的自动提交:

  begin; 
  /*或者*/
  start transaction;

这两个语句显示地标记一个事务的起始点.

(2)提交事务

<
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值