18-Oracle入门之视图
视图是从表中抽出的逻辑上相关的数据集合。 基本概念
视图的优点视图的优点 简化查询
简单视图和复杂视图注意:不建议通过视图对表进行修改 创建视图
CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW view [(alias[,alias]...)] AS subquery [WITH CHECK OPTION [CONSTRAINT constraint]] [WITH READ ONLY [CONSTRAINT constraint]];
CREATE VIEW empvu80 AS SELECT employee_id,last_name,salary FROM employees WHERE department_id = 80;
View created.
create view empincomeview as select e.empno,e.ename,e.sal,e.sal*12 annalsal,sal*12+nvl(comm,0) income,d.dname from emp e,dept d where e.deptno = d.deptno;
sqlplus /as sysdba
SQL> grant create view to scott; --创建视图的权限给scott用户
描述视图结构
CREATE VIEW salvu50 AS SELECT employee_id ID_NUMBER,last_name NAME,salary*12 ANN_SALARY FROM employees WHERE department_id = 50;
View created.
查询视图SELECT * FROM salvu50;
修改视图使用CREATE OR REPLACE VIEW 子句修改视图 CREATE OR REPLACE VIEW empvu80 (id_number,name,sal,department_id) AS SELECT employee_id,first_name || ' ' || last_name,salary,department_id FROM employees WHERE department_id = 80;
View created.
创建复杂视图复杂视图举例:查询各个部门的最低工资,最高工资,平均工资 CREATE VIEW dept_sum_vu (name,minsal,maxsal,avgsal) AS SELECT d.department_name,MIN(e.salary),MAX(e.salary),AVG(e.salary) FROM employees e,departments d WHERE e.department_id = d.department_id GROUP BY d.department_name;
View created.
视图中使用DML的规定
CREATE OR REPLACE VIEW empvu10 (employee_number,employee_name,job_title) AS SELECT employee_id,job_id FROM employees WHERE department_id = 10 WITH READ ONLY;
View created.
删除视图删除视图只是删除视图的定义,并不会删除基表 DROP VIEW empvu80;
View dropped.
视图注意点
create view view1 as select * from emp where deptno=10 with check option;
insert into view1 values(***,***,....,10);
insert into view1 values(***,20);
通过视图只能看到10号部门的员工信息,不能插入20号部门员工
create or replace view empincomeview2 as select e.empno,dept d where e.deptno = d.deptno with read only;
修改视图 视图只能替换,不能修改
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |