Oracle中视图的分类及其应用(oracle中视图的分类)

Oracle中视图的分类及其应用

视图是数据库中的一个重要概念,它是一个虚拟表,由一个或多个表的数据经过处理后呈现出来的结果集。在Oracle数据库中,视图具有很多种分类,下面将会对视图的分类进行介绍,并且说明视图在实际应用中的一些用途。

1.按照创建方式分类

①基于表的视图:它是以单表或多表为基础创建的视图,视图的内容是来自基础表的数据。

例子:

CREATE VIEW v_dept_emp AS

SELECT d.department_name, e.first_name, e.last_name

FROM departments d, employees e

WHERE d.department_id = e.department_id

ORDER BY d.department_name;

②基于视图的视图:它是以已创建的视图为基础继续创建的视图。

例子:

CREATE VIEW v_emp_dept AS

SELECT e.first_name, e.last_name, d.department_name

FROM v_dept_emp

WHERE e.employee_id = d.employee_id

ORDER BY e.last_name;

2.按照数据更新方式分类

①可更新视图:向可更新视图插入、修改或删除数据时,系统会将更改应用到基础表中。

例子:

CREATE VIEW v_update_dept AS

SELECT department_id, department_name, manager_id

FROM departments

WHERE department_id

WITH CHECK OPTION

UPDATE OF manager_id;

INSERT INTO v_update_dept (department_id, department_name, manager_id)

VALUES (90, ‘Marketing’, 201);

②不可更新视图:不允许对视图的内容进行修改、插入和删除的操作。

3.按照使用者的不同而分类

①公共视图:多个用户都可以使用的视图,它不依赖于用户的角色或权限,任何用户都可以查看和操作此视图。

②私有视图:仅能被视图的创建者和有相应权限的用户访问。

4.按照限制数据访问的方式可以分为以下几种

①可见列视图:它只提供基础表中某些列的展示,其他列数据不可访问。

例子:

CREATE VIEW v_dept_hidden AS

SELECT department_name

FROM departments;

②过滤视图:只提供基础表的某个子集,也就是视图中会根据指定条件来筛选数据。

例子:

CREATE VIEW v_dept_hidden AS

SELECT department_name, department_id

FROM departments

WHERE department_id

5.按照是否含有连接操作可分为:

①单表视图:只包含一张表的视图,数量最多为表的数量。

例子:

CREATE VIEW v_dept AS

SELECT department_id, department_name, manager_id, location_id

FROM departments

WHERE department_id

②多表视图:由多张表的数据连接而成的视图,视图与表的数量无关,并且常常用于数据的聚合。

例子:

CREATE VIEW v_dept_emp AS

SELECT d.department_name, e.first_name, e.last_name

FROM departments d, employees e

WHERE d.department_id = e.department_id

ORDER BY d.department_name;

视图在实际应用中具有很多用途,主要实现了数据的封装、限制以及屏蔽,避免不必要的数据冗余,简化数据查询的过程。同时,视图也可以使得操作变得更加直接便捷,更方便地进行数据的统计和分析。因此,在实际应用中,了解视图的分类及其使用方法是非常必要的。

附Oracle中视图的创建和删除语法:

CREATE [OR REPLACE] [FORCE | NOFORCE] VIEW view_name [(column_list)] AS subquery;

DROP VIEW view_name;


数据运维技术 » Oracle中视图的分类及其应用(oracle中视图的分类)