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;