1. 建立简单视图
简单视图是基于单个表建立的,不包含任何函数、表达式和分组数据的试图。可以在简单视图上执行SELECT UPDATE DELETE INSERT操作。
CREATE VIEW emp_vu AS
SELECT empno,empname,sal,job,deptno FROM emp;
2. 建立视图并定义CHECK约束
CREATE VIEW emp_vu10 AS
SELECT * FROM emp WHERE DEPTNO=10
WITH CHECK OPTION CONSTRAINT chk_vu10;
3. 建立只读视图
CREATE VIEW emp_vu10 AS
SELECT * FROM emp WHERE DEPTNO=10
WITH READ ONLY;
4. 建立复杂视图
复杂视图是指包含函数,表达式或分组数据的视图,使用复杂视图的目的是为了简化查询操作。复杂视图上制定DML操作必须符合特定条件。
CREATE VIEW job_vu AS
SELECT job,avg(sal),avgsal,sum(sal),sumsal,max(sal) maxsal,min(sal) minsal
FROM emp GROUP BY job;
5. 建立连接视图
连接视图是指基于多个表所建立的视图,使用连接视图的主要目的是为了简化连接查询。
CREATE VIEW dept_emp_vu AS
SELECT a.deptno,a.dname,a.loc,b.empno,b.ename,b.sal
FROM dept a,emp b
WHERE a.deptno=b.deptno AND a.deptno=20;
6. 在视图上制定DML操作的原则
1) 如果试图包含GROUP BY子句,分组函数和DISTINCT关键字,则不能在该视图执行任何DML操作。
2) UPDATE操作原则:不能更新基于函数或表达式所定义的列,不能更新伪列
3) INSERT操作原则:如果视图不包含表的NOT NULL列,则不能通过视图增加数据。