ORACLE基础(五)------ 视图

来源:互联网 发布:vue.js生命周期面试题 编辑:程序博客网 时间:2024/05/01 08:31


--SQL视图示例(以scott用户下的四张表为例):--EMP(雇员表):--    EMPNO:雇员编号,由四位数字组成--    ENAME:雇员姓名,由十位字符组成--    JOB:雇员的职位--    MGR:雇员对应的领导编号,领导也是雇员--    HIREDATE:雇员的雇佣日期--    SAL:基本工资,其中有两位小数,五位整数--    COMM:奖金,佣金--    DEPTNO:雇员所在的部门编号--DEPT(部门表):--    DEPTNO:表示部门编号,由两位数字组成--    DNAME:部门名称,最多由14位字符组成--    LOC:部门所在的位置--SALGRADE(工资等级表):--    GRADE:工资的等级--    LOSAL:此等级的最低工资--    HISAL:此等级的最高工资--BONUS(工资表):--    ENAME:雇员姓名--    JOB:雇员职位--    SAL:雇员薪酬--    COMM:雇员的奖金--基本语法:  --CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW NAME_VIEW [(ALIAS,......)]  --AS SUBQUERY  --[WITH CHECK OPTION [CONSTRAINT]]  --[WITH READ ONLY]  --OR REPLACE:若所建的视图存在,则自动重建该视图  --FORCE:不管基表是否存在,Oracle都会自动重建该视图  --NOGORCE:只有基表都存在,Oracle才会创建该视图  --ALIAS:为视图产生的列定义别名  --SUBQUERY:一条完整的select语句  --WITH CHECK OPTION:插入或修改的数据必须满足视图定义的约束  --WITH READ ONLY:该视图上不能进行任何DML操作  ----示例1:  --创建视图(单表)  create or replace view emp_view  as select empno,ename,deptno  from emp  --查询视图  select * from emp_view;   --插入  insert into emp_view(empno,ename,deptno)values (15,'Liam',30);  --修改视图  update emp_view set ename='YAN' where empno=15;  --删除视图中的数据  delete emp_view where empno=15;  --删除视图  drop view emp_view;--示例2:  --创建视图(多表)  create or replace view empdept_view  as select empno,ename,job,sal,emp.deptno,dname  from emp join dept on emp.deptno = dept.deptno  --查询视图  select * from empdept_view;  --插入数据,向emp表中插入数据,  insert into empdept_view(empno,ename,sal)values(7777,'liamyan',1000);  --插入数据,向dept表中插入数据.失败,错误报告:无法通过连接视图修改多个基表  insert into empdept_view(deptno,dname)values(50,'baidu');  --插入数据,同时向两个表中插入数据.失败,错误报告:无法通过连接视图修改多个基表  insert into empdept_view(empno,ename,deptno,dname,sal)values(7777,'LiamYan',30,'SALES',1000);  --修改视图,修改emp表中的数据  update empdept_view set ename='Yan' where empno=7839;  --修改视图,修改dept表中的数据.失败,错误报告:无法修改与非键值保存表对应的列  update empdept_view set dname='baidu' where ename='Yan';  --删除视图中的数据  delete empdept_view where ename='Yan';  --删除视图  drop view empdept_view;--示例3  --创建视图  create or replace view dept_sum_view  (name,minsal,maxsql,avgsal)  as select d.dname,min(e.sal),max(e.sal),avg(e.sal)  from dept d,emp e  where d.deptno= e.deptno  group by d.dname;   --查询视图  select * from dept_sum_view;  --删除视图  drop view dept_sum_view;  --查询视图定义select view_name,text from user_views;  



0 0