• 视图


    视图

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

    创建视图
    基本语法:
    create view 视图名字 as select 语句; -- select语句可以是普通查询;可以是连接查询;可以是联合查询;可以是子查询

    创建单表视图:基表只有一个

    多表视图(视图基表有多张的情况下:注意字段名不能重复)

    查看视图

    查看视图:查看视图的结构
    视图是一张虚拟表:表的所有查看方式都适用于视图
    视图比表还是有一个关键字的区别:view


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

    使用视图
    使用视图主要是为了查询:将视图当做表一样查询即可

    视图的执行其实本质就是执行封装的select语句

    修改视图
    视图本身不可修改,但是视图的来源是可以修改的
    修改视图:修改视图本身的来源语句(select语句)
    alter view 视图名字 as 新的select语句

    删除视图
    Drop view 视图名字;

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

    视图数据操作
    视图的确是可以进行数据写操作的:但是有很多限制;
    将数据直接在视图上进行操作

    新增操作

    数据新增就是直接对视图进行数据新增
    1.多表视图不能新增数据
    2.可以向单表视图插入数据,但是视图中包含的字段必须有基表中所有不能为空(或者没有默认值)字段

    3.视图是可以向基表插入数据的

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

    单表视图可以删除

    更新数据
    理论上无论单表视图还是多表视图都可以更新数据

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

     

     

    视图算法
    视图算法:系统对视图以及外部查询视图的select 语句的一种解析方式
    视图算法分为三种
    Undefined:未定义(默认的),这不是一种实际使用算法,是一种推卸责任的算法:告诉系统,视图没有定义算法,系统自己看着办
    Temptable:临时表算法:系统应该先执行视图的select语句,后执行外部查询的语句
    Merge:合并算法

     

  • 相关阅读:
    poj 4005 Moles
    牛客 2C 圈圈
    牛客 2B 树 (组合计数)
    AC日记——校门外的树(增强版) 洛谷 P1276
    AC日记——寻找道路 洛谷 P2296
    AC日记——挤牛奶 洛谷 P1204
    AC日记——最大数 洛谷 P1198 [JSOI2008]
    AC日记——中位数 洛谷 P1168
    AC日记——校门外的树 洛谷 P1047
    AC日记——约瑟夫问题 codevs 1282
  • 原文地址:https://www.cnblogs.com/sunhao96/p/7992095.html
Copyright © 2020-2023  润新知