zoukankan      html  css  js  c++  java
  • MySQL—视图

    【1】视图的概念

    视图(view)是一个从单张或多张基础数据表或其他视图中构建出来的虚拟表。

    同基础表一样,视图中也包含了一系列带有名称的列和行数据,但是数据库中只是存放视图的定义,也就是动态检索数据的查询语句,而并不存放视图中的数据,这些数据依旧存放于构建视图的基础表中,只有当用户使用视图时才去数据库请求相对应的数据,即视图中的数据是在引用视图时动态生成的。因此视图中的数据依赖于构建视图的基础表,如果基本表中的数据发生了变化,视图中相应的数据也会跟着改变。

    PS:视图本质上就是:一个查询语句,是一个虚拟的表,不存在的表,你查看视图,其实就是查看视图对应的sql语句

    【2】视图的好处

    简化用户操作:视图可以使用户将注意力集中在所关心地数据上,而不需要关心数据表的结构、与其他表的关联条件以及查询条件等。

    对机密数据提供安全保护:有了视图,就可以在设计数据库应用系统时,对不同的用户定义不同的视图,避免机密数据(如,敏感字段“salary”)出现在不应该看到这些数据的用户视图上。这样视图就自动提供了对机密数据的安全保护功能

    【3】SQL展示:

    -- 创建/替换单表视图:
    create or replace view myview01
    as
    select empno,ename,job,deptno 
    from emp
    where deptno = 20
    with check option;
    -- 查看视图:
    select * from myview01;
    -- 在视图中插入数据:
    insert into myview01 (empno,ename,job,deptno) values (9999,'lili','CLERK',20);
    insert into myview01 (empno,ename,job,deptno) values (8888,'nana','CLERK',30);
    insert into myview01 (empno,ename,job,deptno) values (7777,'feifei','CLERK',30); 
    -- > 1369 - CHECK OPTION failed 'mytestdb.myview01'
    -- 创建/替换多表视图:
    create or replace view myview02
    as 
    select e.empno,e.ename,e.sal,d.deptno,d.dname
    from emp e
    join dept d
    on e.deptno = d.deptno
    where sal > 2000 ;
    select * from myview02;
    -- 创建统计视图:
    create or replace view myview03
    as
    select e.deptno,d.dname,avg(sal),min(sal),count(1)
    from emp e
    join dept d
    using(deptno)
    group by e.deptno ;
    select * from myview03;
    -- 创建基于视图的视图:
    create or replace view myview04
    as
    select * from myview03 where deptno = 20;
    select * from myview04;
     
    理解
    1. 视图是 MySQL 在 5.0.1 版本中加入的功能。它可以理解为一个虚表
    2. 之所以被称为虚表,是因为它只是存储了一个结构,并不存储真实的数据。它的数据是在查询过程中动态生成的。
    3. 视图并不是真的性能优化
    4. 可以理解为Laravel的路由地址的别名(方便访问)方便查询
    5. 安全 可以隐藏字段 避免字段暴露
    6. 简化SQL语句
    7. 解耦 (比如我们对数据库表重构了 那么只需要修改视图内容就行了 反则需要修改相关的Model 和代码了) 相当于中间件
    8. 不建议使用在大项目 分布式 大数据的项目(损耗性能)单机使用方便点

    注重细节——关注底层——注重细节——关注底层——注重细节——关注底层——注重细节——关注底层——注重细节——关注底层
  • 相关阅读:
    [Clr via C#读书笔记]Cp18 定制Attribute
    [Clr via C#读书笔记]Cp16数组
    [Clr via C#读书笔记]Cp17委托
    [Clr via C#读书笔记]Cp15枚举和位标识
    [Clr via C#读书笔记]Cp14字符字符串和文本处理
    [Clr via C#读书笔记]Cp13接口
    [Clr via C#读书笔记]Cp12泛型
    [Clr via C#读书笔记]Cp11事件
    [Clr via C#读书笔记]Cp10属性
    【程序员面试金典】面试题 02.06. 回文链表
  • 原文地址:https://www.cnblogs.com/PJG20/p/13270230.html
Copyright © 2011-2022 走看看