视图与表不同,一个视图不分配任何存储空间,视图不真正地包含数据。由查询定义的视图相应于视图引用表中的数据。
视图是由一个或多个表(或其他视图)中的数据的一种定制的表示,是用一个查询定义,所以可认为是一个存储的查询(stored query)或是一个虚表。
引入视图有下列好处:
通过限制对表的行预定义集合的存取,为表提供附加的安全性。
隐藏数据复杂性。
为用户简化命令。
为基本表的数据提供另一种观点。
可将应用隔离基本表定义的修改。
用于不用视图无法表示的查询。
可用于保存复杂查询。
创建视图
CREATE VIEW emp_view AS[as后面就跟我们的select查询语句]
SELECT empno, ename, sal, loc
FROM emp, dept
WHERE emp.deptno = dept.deptno AND dept.deptno = 10
创建复杂视图
CREATE VIEW dept_sum_vu(name, minsal, maxsal, avgsal)
AS SELECT d.dname, MIN(e.sal), MAX(e.sal),AVG(e.sal)
FROM emp e, dept d
WHERE e.deptno = d.deptno GROUP BY d.dname;
创建视图:使用WITH CHECK OPTION选项
CREATE OR REPLACE VIEW empvu20
AS SELECT *
FROM emp
WHERE deptno = 20
WITH CHECK OPTION CONSTRAINT empvu20_ck;
创建视图:使用WITH READ ONLY选项
CREATE OR REPLACE VIEW empvu10 [更改视图: 使用CREATE OR REPLACE VIEW语句]
2 (employee_number, employee_name, job_title)
3 AS SELECT empno, ename, job
4 FROM emp
5 WHERE deptno = 10
6 WITH READ ONLY;
查询视图:
SELECT ename FROM emp_view WHERE empno = 9876
以下sql同 上面创建视图和查询视图 功能相同。其实也就是我们查询数据库表的时候,它自动生成的一个视图emp-view
SELECT ename FROM emp, dept
WHERE emp.deptno = dept.deptno AND dept.deptno = 10
AND emp.empno = 9876
重定义视图
CREATE OR REPLACE VIEW emp_view AS[as后面就跟我们的select查询语句]
SELECT empno, ename, sal, loc
FROM emp, dept
WHERE emp.deptno = dept.deptno;
删除视图
DROP VIEW emp_view;