1.视图:
从代码上是select语句,逻辑上可当作一个虚拟表。用于避免代码冗余
2.格式:
create view 视图名
as
--select前面不能添加begin
select
--select前面不能添加end
3.优点:
简化查询
增加数据的保密性
create view v$_emp_2
as
select empno,ename,job,mgr,comm,deptno from emp //将入职时间,和工资省略
select * from v$_emp_2 //注意:用insert into时,要确保“入职日期”,"工资"两字段允许null,不建议通过视图操作
4.缺点:增加维护成本,因为当主表删除时,视频并不会自动删除。
5.注意:创建视图的select语句必须为所有的计算列指定别名
create view v$_emp_3
as
select avg(sal), deptno from emp group by deptno ----error创建视图或函数失败,因为没有为列 1 指定列名。
//平均工资最高的部门编号及平均工资
select * from( select avg(sal) "avg_sal", deptno from emp group by deptno) "T"
where "T"."avg_sal"=
(select MIN("E".avg_sal) from
(select avg(sal) "avg_sal", deptno from emp group by deptno)"E")
//创建视图
create view v$_emp_1
as
select avg(sal) "avg_sal", deptno from emp group by deptno
//应用
select * from v$_emp_1
where avg_sal=
(select max(avg_sal) from v$_emp_1)