美文网首页
视图(view)

视图(view)

作者: 咸鱼有梦想呀 | 来源:发表于2017-10-22 21:07 被阅读0次

一、视图(view)

是一种结构(有行有列)但是没有结果(结构中不真实存放数据)的虚拟表,虚拟表的结构来源不是自己定义的,而是从对应的基表中产生。

1.创建视图

create view 视图名 as select 语句;

select语句可以是普通查询,连接查询,联合查询,子查询。

(1)创建单表视图
(2)创建多表视图

创建视图:单表+多表

2.查看视图

查看试图:查看视图结构

  • show tables;
  • desc 视图名;
  • show create table 视图名;

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

4.修改视图
视图本身不可修改,但是视图的来源可以修改

修改视图:修改视图本身的来源语句(select语句)
alter view 视图名 as 新的 select 语句;

修改视图

5.删除视图

drop view 视图名;

删除视图

6.视图意义

  • 视图可以节省sql语句:将一条复杂的查询语句使用视图进行保存,之后可以直接对视图进行操作。
  • 数据安全:视图操作主要针对查询,如果对视图结构进行处理(删除),不会影响基表数据(相对安全)
  • 视图往往是在大系统中使用,而且是多系统使用。对外提供有效数据,隐藏关键的数据。
  • 视图可以更好的进行权限控制

二、视图数据操作

1.新增数据
视图新增就是直接对视图进行数据新增

  • 多表视图不能新增数据
  • 单表视图可以插入数据。但是视图中包含的字段必须有基表中所有不能为空(或者没有默认值)字段。
  • 视图是可以向基表插入数据的
视图向基表插入数据

2.删除数据

  • 多表视图不能删除数据
  • 单表视图删除数据
单表删除数据

3.更新数据

  • 多表视图更新数据
多表视图更新数据
  • 更新限制(with check option)
    如果对视图在新增的时候,限定了某个字段有限制:那么在对视图进行数据更新的操作时,系统会验证——保证更新后,数据依然可以被实体查出来,否则不让更新。
更新限制

三、视图算法

视图算法:系统对视图以及外部查询视图的select语句的一种解析方式。
当查询信息时遇到了相同的信息,系统会自动选其中一个(看图3.1)

3.1

当这种情况发生如何解决?
因此就有了视图算法

视图算法

  • undefined:未定义(默认的),这不是一种实际算法,只是用来告诉系统视图没有定义算法,系统自己定义。
  • temptable:临时表算法。系统先执行视图的select语句,后执行外部查询语句
  • merge:合并算法。系统先将视图对应的select语句与外部的视图查询语句的select语句进行合并,然后执行(效率高)

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

临时算法

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

相关文章

  • 视图

    创建视图 创建视图语法:create VIEW 视图名 AS 查询语句; CREATE VIEW view_all...

  • 小程序标签

    一、视图容器(View Container): view 视图容器 scroll-view 可滚动视图容器 swi...

  • 3. 小程序基础组件

    常用视图容器view视图容器scroll-view 可滚动视图区域movable-view 可移动的视图容器,在页...

  • Android自定义View

    View的分类视图View主要分为两类: 单一视图即一个View,不含子View视图组即多个View组成的View...

  • MVC设计模式

    MVC:Model(模型)、View(视图)、(控制器) MVVM:Model(模型)、View(视图)、View...

  • oracle的那些事

    1.oracle视图操作 创建视图:create view视图名称as查询数据; 删除视图:drop view...

  • frame, bounds, contentOffset, co

    1, frame很容易理解,就是view视图在superView视图的区域。 2,bounds 普通View视图,...

  • 结合一道面试题浅谈触摸事件的流程

    条件:红色View 是蓝色View的子视图、蓝色View是绿色View的子视图 问:点击超出蓝色View的红色Vi...

  • Android事件传递机制

    1.View和ViewGroup View是Android视图的抽象,View是Android所有视图组件的基类。...

  • Day15-View

    View From View 分类 单一视图 如 TextView视图组 如 ViewGroup, LinearL...

网友评论

      本文标题:视图(view)

      本文链接:https://www.haomeiwen.com/subject/umeguxtx.html