2.0 数据库之视图

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lwz45698752/article/details/86569556


概述

学习目标

在这里插入图片描述


视图定义

在这里插入图片描述

  • 视图(view)也是存储数据的一种方式

  • 视图文件存储在views文件夹中(GUI)

  • 从表中查询信息仅存在于内存中,断电则信息消失(没有存储文件),而视图(view)为物理文件,已存储

  • 视图本质上不是一个表

  • 对视图的操作与对基表的操作是对等的,改变视图数据即改变对应基表的数据内容(包括表的约束,操作视图时也要遵守


使用视图的目的

在这里插入图片描述

  • 不同人能访问不同列,如非老板的数据库维护人员不能看到工作评价这一列
  • 视图:能保证在更新视图的同时,更新对应的基表数据
  • 基于多表(类似多表连接)创建一个视图,简化查询

创建视图

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述


修改视图

在这里插入图片描述

  • 若上述视图名也存在,则表示覆盖该视图
  • 别名和子查询的各列相对应

删除视图

在这里插入图片描述

  • 不删除数据

复杂视图

  • 创建视图时使用了组函数

创建复杂视图

在这里插入图片描述

  • 当创建视图时,用到了组函数,但实际中不存在组函数那一列——》创建复杂视图时,一定要给虚拟列取别名

视图中使用DML的规定

  • 了解

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 总结:复杂视图进行增删改很多情况下不允许
  • 举例:若改了视图的平均工资【虚拟列】——》要修改原数据表中的相应列的值——》那么问题来了,要怎么改呢?

屏蔽DML操作(只读)

在这里插入图片描述在这里插入图片描述

  • 只读

TOP-N分析

  • 榜单TOP问题的解决方案
    在这里插入图片描述

错误示范

在这里插入图片描述

  • 查询结果:
    在这里插入图片描述
  • 由上图知,rownumber列虽然是伪列,但默认也有数值也有排序
  • rownumber列的数值与employee_id对应
  • 最终的查询结果只是对ID小于109的人进行了排序

正确做法

  • 查询结果(排序好的查询结果)作为新的表(也有rownumber)

TOPN查询

  • 两层查询
    在这里插入图片描述

分页查询

  • 三层查询

在这里插入图片描述- 查询结果(排序好的查询结果)作为新的表(也有rownumber),然后再放入新的表(为了转化伪列),对伪列转化来的真列限制范围,达到分页查询的目的

  • 考虑到注意点(ROWNUM只使用<及<=),将伪列转化为真实的一列则可使用">'等符号
  • 内表的伪列作为外表的真列
  • 此外,注意起别名,避免最外层又给当作伪列了

注意点

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/lwz45698752/article/details/86569556