• mysql 视图


    简介视图(view)是一种虚拟存在的表,是一个逻辑表,本身并不包含数据。作为一个select语句保存在数据字典中的。
    通过视图,可以展现基表的部分数据;视图数据来自定义视图的查询中使用的表,使用视图动态生成。
    基表:用来创建视图的表叫做基表base table

    视图的诸多优点,如下
      1)简单:使用视图的用户完全不需要关心后面对应的表的结构、关联条件和筛选条件,对用户来说已经是过滤好的复合条件的结果集。

      2)安全:使用视图的用户只能访问他们被允许查询的结果集,对表的权限管理并不能限制到某个行某个列,但是通过视图就可以简单的实现。

      3)数据独立:一旦视图的结构确定了,可以屏蔽表结构变化对用户的影响,源表增加列对视图没有影响;源表修改列名,则可以通过修改视图来解决,不会造成对访问者的影响。

    总而言之,使用视图的大部分情况是为了保障数据安全性,提高查询效率

    1.创建视图

    create view view_test as select * from test;
    create or replace view view_test as select * from test where id=1; --替换已有视图

    2.查看视图

    select * from information_schema.views; 查看视图信息
    show create view view_test; 查看视图信息
    desc view_test;
    select * from view_name; 查询视图数据

    3.视图的更改

    update view_test set name='tom1' where id=1; --test表数据也更改了
    
    视图的DML操作,不是所有的视图都可以做DML操作。
    有下列内容之一,视图不能做DML操作:
    (1).select子句中包含distinct
    (2).select子句中包含组函数
    (3).select语句中包含group by子句
    (4).select语句中包含order by子句
    (5).select语句中包含union 、union all等集合运算符
    (6).where子句中包含相关子查询
    (7).from子句中包含多个表
    (8).如果视图中有计算列,则不能更新
    (9).如果基表中有某个具有非空约束的列未出现在视图定义中,则不能做insert操作

    4.删除视图

    drop view if exists view_test;

    5.使用with check option约束

    --对视图所做的DML操作的结果,不能违反视图的WHERE条件的限制。
    create view view_test as select * from test where id in (1,2,3) with check option;
    update view_test set name='tom1' where id=5; --update操作不生效
  • 相关阅读:
    WPF 之Converter
    silverlight中 ComboBox绑定数据库,并获取当前选定值
    ComboBox联动 (AJAX BS实现)
    [推荐]Silverlight 2 开发者海报
    非常精彩的Silverlight 2控件样式
    一步一步学Silverlight 2系列文章
    POSIX 线程详解(经典必看)
    嵌入式 vlc从接收到数据流到播放视频的过程分析(经典)
    OpenGL ES教程系列(经典合集)
    Audio Queue Services Programming Guide(音频队列服务编程指南)
  • 原文地址:https://www.cnblogs.com/boye169/p/15872210.html
Copyright © 2020-2023  润新知