一、视图
1.1 why 视图?
对于复杂的查询,往往是由多个数据表进行关联查询而得到,如果数据库因为需求等原因发生改变,为了保证查询出来的数据与之前的相同,则需要在多个地方进行修改,维护起来非常麻烦,解决办法就是定义视图
1.2 what 视图?
通俗的将,视图就是一条SELECT语句执行后返回的结果集所以我们在创建视图的时候,主要工作落在创建这条SQL语句上。
视图是对若干张基本表的引用,一张虚表,查询语句执行的结果,不存储具体的数据(基本表数据发生改变,视图也会跟着改变);
方便操作,特别是查询操作,减少复杂的SQL语句,增强可读性
1.3 定义视图
建议以v_开头
create view 视图名称 as select语句;
select * from goods as g
left join goods_cates as c on g.cate_name=c.id
left join goods_brands as b on g.brand_name=b.id;
select g.*,c.name as cates,b.name as brands from goods as g
left join goods_cates as c on g.cate_name=c.id
left join goods_brands as b on g.brand_name=b.id;
create view v_goods_info as select g.*,c.name as cates,b.name as brands from goods as g
left join goods_cates as c on g.cate_name=c.id left join goods_brands as b on g.brand_name=b.id;
1.4 查看视图
show tables;
1.5 使用视图
视图的用途就是查询
select * from v_goods_info;
1.6 删除视图
drop view 视图名称;
例:
drop view v_goods_info;
1.7 总结作用
- 提高了重用性,就像一个函数
- 对数据库重构,却不影响程序的执行(是一个虚拟的表)
- 提高了安全性能,可以对不同的用户
- 让数据更加清晰
二、事务
2.1、事务是什么
事务是应用程序中一系列严密的操作,所有操作必须成功完成,否则在每个操作中所作的所有更改都会被撤消。也就是事务具有原子性,一个事务中的一系列的操作要么全部成功,要么一个都不做。
2、事务的四大特性
数据库事务 transanction 正确执行的四个基本要素。
ACID,
- 原子性(Atomicity)、
- 一致性(Correspondence)、
- 隔离性(Isolation)、
- 持久性(Durability)。
(1)原子性:整个事务中的所有操作,要么全部完成,要么全部不完成,不可能停滞在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。
(2)一致性:在事务开始之前和事务结束以后,数据库的完整性约束没有被破坏。
(3)隔离性:隔离状态执行事务,使它们好像是系统在给定时间内执行的唯一操作。如果有两个事务,运行在相同的时间内,执行 相同的功能,事务的隔离性将确保每一事务在系统中认为只有该事务在使用系统。这种属性有时称为串行化,为了防止事务操作间的混淆, 必须串行化或序列化请 求,使得在同一时间仅有一个请求用于同一数据。
(4)持久性:在事务完成以后,该事务所对数据库所作的更改便持久的保存在数据库之中,并不会被回滚。
参考:事务及事务的四大特征