目录
视图的概念:
视图的优点:
视图的缺点:
视图与表的区别:
视图的创建及用法:
1.创建视图的语法:
2. 创建简单视图:
3.带条件的视图:
4.更新视图(可更新视图):
5.删除视图:
视图的示例:
示例一(简单视图):
示例二(复杂视图):
解释:
使用视图:
示例结果:
关键点:
总结:
视图(view)类似一个虚表,建立与基表之上。不会占用物理的空间(还有一种占用物理空间的视图叫做物化视图MATERIALIZED VIEW,物化视图又称快照),视图的定义语句会存储在数据字典中,会根据基表的更新而更新数据,而一个视图当然也可以从另一个视图中产生,相当于把一个SQL语句打包起来然后起一个别名,在你查询这个视图内容的时候,视图对应的SQL会再执行一次,然后把结果反馈给你,也就是将你写的SQL的结果封装成一张虚拟表,基于它创建时指定的SQL语句返回的结果集。
需要注意的是,对于视图的操作其实是对视图对应SQL内字段所属基表的操作,虽然可能会受到一些限制。单表视图是可以增删改的。
在 Oracle 数据库中,视图(View)是一种虚拟表,它并不存储数据,而是通过查询基础表中的数据生成的。视图可以简化复杂查询、提高数据的安全性、为用户隐藏复杂的表结构等。
视图的优点:
1.便捷整合:不用害怕丢失SQL语句。对于需要多次执行的SQL,在权限允许的情况下也可以建一个视图。有些SQL分组统计以后需要连接另一张表,那么就可以建一个视图用视图去连接。
2.保密:有些表内的隐私字段或敏感字段,如果不希望使用者看见,就可以把使用者需要使用的字段创建一个视图。这样使用者就不知道基表,以及基表的表结构
3.简化权限:不用对于不同用户去授予表字段权限,而是直接建视图,将视图的权限给对应用户就可以。
视图的缺点:
1.耗费时间:因为需要把视图的查询转换为基本表的查询。
2.修改不便:需要把对于视图的操作转换为对基表的操作,简单的视图会比较方便但是复杂视图会繁琐和限制比较多。
单表视图:增删改查
多表视图:只能修改和查询
视图与表的区别:
1. 视图不占用物理空间,但表占用物理空间。
2. 表存储数据内容,而视图仅是数据的展现方式。
3. 创建或删除视图只会影响视图本身,不会影响基础表。
下面是关于 Oracle 数据库中视图的概念及创建的详细教程。
1.创建视图的语法:
语法详解:
- :用于创建一个新视图。
- :可选项,若视图已存在则替换。
- :视图名称,必须唯一。
- 语句:定义视图的查询逻辑。
- 子句:条件筛选,定义从基础表中查询哪些数据。
2. 创建简单视图:
例如,我们有一个名为 的表,包含以下字段:
我们希望创建一个只显示 、 和 的视图,可以使用以下 SQL:
3.带条件的视图:
如果希望创建一个只显示薪水大于 5000 的员工视图,可以加上 条件:
4.更新视图(可更新视图):
有些视图是可更新的,即可以通过视图对基础表的数据进行插入、更新或删除。为了视图可更新,通常需要满足以下条件:
- 视图只基于一张表。
- 视图中不包含聚合函数(如 、)。
- 不使用 、、。
- 没有 。
例如,以下视图是可更新的:
可以通过该视图更新基础表中的 列:
5.删除视图:
如果不再需要某个视图,可以使用 删除它:
例如,删除 视图:
示例一(简单视图):
假设我们有两张表:(员工表)和 (部门表),我们希望创建一个显示每个员工名字、薪资及其部门名称的视图:
通过这个视图,可以简化查询操作:
示例二(复杂视图):
复杂视图通常涉及多个表的联结()、子查询、聚合函数(、 等)和条件过滤等操作。为了演示复杂视图,假设我们有以下三个表:
- employees(员工表)
- :员工ID
- :名字
- :姓氏
- :部门ID
- :薪水
- departments(部门表)
- :部门ID
- :部门名称
- :部门经理ID
- projects(项目表)
- :项目ID
- :项目名称
- :负责该项目的部门ID
目标:我们想创建一个视图,展示每个部门的员工总数、部门名称、部门经理名字、该部门员工的平均薪水,以及负责的项目名称。
SQL 代码:
解释:
- 基本查询结构:
- 是主表。
- 通过 连接了 ,使得每个部门与它的员工关联起来。
- 通过 连接了 ,从而获取该部门经理的信息(通过 和 的关联)。
- 通过 连接了 ,获取每个部门负责的项目名称。
- 聚合函数:
- :统计每个部门的员工总数。
- :计算每个部门的员工平均薪水。
- 字符串拼接(LISTAGG):
- :将同一部门的多个项目名称拼接成一行,以逗号分隔,并按项目名称排序。
- GROUP BY:
- 根据 和部门经理的名字()进行分组,这样我们可以对每个部门进行聚合操作。
使用视图:
我们可以通过视图查询每个部门的概要信息:
示例结果:
关键点:
- 复杂性:视图涉及多个表的联结,使用了聚合函数、字符串拼接等复杂操作。
- 性能:如果涉及的数据量较大,复杂视图的性能可能会受影响,尤其是 操作较多时。
- 可读性:将复杂的 SQL 逻辑封装在视图中,能够提高代码的可读性,简化查询操作。
视图是数据库开发中非常有用的工具,能够简化复杂查询、提升数据安全性和增强数据库的灵活性。在使用视图时,需要考虑其性能和可更新性问题,根据实际业务场景合理使用。
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.mushiming.com/mjsbk/4753.html