• 视图


    视图

    视图:

    视图也被称为虚表,也就是虚拟的表,是一组数据的逻辑表示。

    视图相对应于一条SELECT语句,结果集被赋予一个名字,即视图名字。

    视图本身并不包含任何数据,它只是映射到基础表的一个查询语句,当基础表数据发生变化时,视图数据也会随之发生变化。

    自我理解:视图其实就好比java中的方法一样,写好之后谁需要谁调用就好。

    视图的命名:所有数据库对象名字不能有重复,一般约定俗成:V_名字_条件。

     视图分为两种:1.简单视图 2.复杂视图

    1.简单视图(没有添加任何函数处理)

    创建简单视图

    --重要 
    CREATE
    VIEW V_EMP_1 as SELECT ENAME,EMPNO,SAL,DEPTNO FROM EMP WHERE DEPTNO=10;

    结果如下:

      简单视图可以进行DML操作。

    --给别名  当视图中字段有了别名  就用别名来命名
      CREATE OR REPLACE VIEW V_EMP_2
     as
     SELECT ENAME,EMPNO ,SAL,DEPTNO 
     FROM EMP
     WHERE DEPTNO=20
     WITH CHECK OPTION;
     --从视图中插入数据
      INSERT INTO  V_EMP_2
      (ENAME,EMPNO,SAL,DEPTNO)
      VALUES('LIUSHE',50,6626,10);  

    注意:上面代码又创建了一个简单视图,第二部分是插入数据。但是插入数据后,在视图中是找不到这个记录的,在基础表中可以找到该记录???

    答:

    注意:该图片中10和20 是相反的 ,但是意思是一样的。

    WITH CHECK OPTION 检查如果数据可以在视图内显示 ,不会报错 不可以就报错。

    注意注意注意(重要的是说三遍):插入数据时一定要注意数据类型,和过滤条件,如果不注意,会出现数据污染(基础表内数据发生变化,但视图内数据不发生变化),数据的添加和修改都可能会造成数据污染,但是删除不会造成数据污染。一定要用WITH CHECK OPTION检查是否可以。

    WITH CHECK OPTION检查如果不成功会直接报错。

    例:

     2.复杂视图(同样是基于单表,但包含了单行函数、表达式、分组函数或GROUP BY字句)

    创建复杂视图

     --创建复杂视图  创建一个含有部门工资情况的视图
      --内容为 部门编号 部门名称 部门最高 最低 平均 以及工资总和 和信息
       CREATE OR REPLACE VIEW V_DE_S
       AS
       SELECT D.DEPTNO,D.DNAME,MIN(E.SAL) MINSA,MAX(E.SAL) MAXSA,AVG(E.SAL) AVGAS,SUM(E.SAL) SUMSA
       FROM EMP E,DEPT D
       WHERE E.DEPTNO=D.DEPTNO
       GROUP BY D.DEPTNO,D.DNAME

    案例:把复杂视图调用 用于实际操作

    --查看谁比自己所在部门平均工资高
       SELECT E.ENAME,E.SAL,E.DEPTNO
       FROM EMP E,V_DE_S V
       WHERE E.DEPTNO=V.DEPTNO
       AND E.SAL>V.AVGAS;

    最后视图的操作:

    删除视图:删除视图本身不会影响基础表的数据,但是删除视图数据会影响基础表。

    DROP VIEW 视图名

    简单视图可以进行DML操作,复杂视图不可以进行DML操作。

    ok视图部分完毕。

  • 相关阅读:
    从远程仓库更新本地仓库
    git添加所有新文件
    删除远程仓库文件夹
    更新被驳回
    git安装和第一次提交过程
    JSONobject按照put顺序存储和读取
    Map 转 json格式 保留null值的解决办法
    Java对象转换Json的细节处理
    如何解析json格式的字符串
    json 拼装空list、object
  • 原文地址:https://www.cnblogs.com/lchh/p/9337817.html
Copyright © 2020-2023  润新知