12.视图

    技术2022-07-17  93

    文章目录

    视图结构操作创建视图查看视图使用视图修改视图删除视图 视图意义视图数据操作新增数据删除数据更新数据 视图算法

    视图:view:是一种花有行有列的结构但是没有结果的虚拟表:即该虚拟表中不真实存储数据:虚拟表的结构来源不是自己定义的,而是从对应的基表中产生

    视图结构操作

    创建视图

    基本语法: create view 视图名称 as select 语句; select 语句可以是普通查询,也可以是连接查询,可以是联合查询,可以是子查询创建单表视图:基表只有一个创建多表视图:基表来源至少两个

    查看视图

    查看所有视图 查看部分指定视图 查看视图创建语句 show create table/view 视图名称;

    查看视图结构 视图一旦创建: 系统会在视图对应的数据库文件夹下创建一个对应的结构文件: frm文件

    使用视图

    使用视图的主要目的是为了查询:将视图当做表一样查询即可:视图的执行: 其实本质就是执行封装的select语句

    修改视图

    视图本身是不能修改的,但是视图的来源是可以修改的 alter view 视图名称 as select 语句;

    删除视图

    drop view 视图名称;

    视图意义

    视图可以节省SQL语句:将一条复杂的查询语句使用视图进行保存:以后可以直接对视图进行操作数据安全:视图操作主要是针对查询,如果对视图结构进行操作,例如删除,不会影响基表数据:基表数据相对安全视图往往是在向项目中使用,而且是多系统使用:可以对外提供有用的数据,但是隐藏关键的数据:数据安全视图可以对外提供友好界面:不同的视图提供不同的数据,对外好像专门设计视图可以更好更容易的进行权限控制

    视图数据操作

    视图是可以进行数据写操作的:但是有很多限制条件

    新增数据

    新增数据就是直接对视图进行数据的插入多表视图是不能进行数据的新增操作的单表视图是可以进行数据的新增操作的:但是也是有限制条件的:视图是可以向基表插入数据的

    删除数据

    多表视图是不能删除数据单表视图是可以删除数据

    更新数据

    理论上不论是单表视图还是多表视图都可以更新数据更新限制: with check option, 如果对视图在新增的时候,限定了某个字段有限制: 那么在对视图进行数据更新操作时,系统会进行验证: 要保证更新之后,数据依然可以被实体查询出来,否则不让更新.

    视图算法

    视图算法: 系统对视图以及外部查询视图的select语句的一种解析方式.

    视图算法分为三种 (1)undefined: 未定义(默认的), 这不是一种实际使用算法, 是一种推卸责任的算法: 告诉系统,视图没有定义算法, 系统自己看着办 (2)temptable: 临时表算法: 系统应该先执行视图的select语句,后执行外部查询语句 (3)merge: 合并算法: 系统应该先将视图对应的select语句与外部查询视图的select语句进行合并,然后执行(效率高: 常态)

    算法指定: 在创建视图的时候:create algorithm = 指定算法 view 视图名字 as select语句

    视图算法选择: 如果视图的select语句中会包含一个查询子句(五子句), 而且很有可能顺序比外部的查询语句要靠后, 一定要使用算法temptable,其他情况可以不用指定(默认即可).

    Processed: 0.013, SQL: 10