为什么需要视图:
总结:
简化查询
避免了代码的冗余
笔迷那了属性大量重复的sql语句
什么是视图:
视图从代码上来看是select语句
视图从逻辑上来看是临时表
视图格式
create view 视图名字
as
—-select前面不能写begin
select 语句
—-select后面不能写end
视图优点:
简化查询
增加数据的保密性
视图的缺点:
增加了数据库的维护的成本
比如 如果原始表删除了列 而视图还是原来的 ,运行时就会报错
视图只是简化了查询,并没有加快查询的速度,这也是视图使用不足的地方
注意的问题:
创建视图的select语句必须的为所有的计算列指定别名
-----error
create view v$_a
as
select avg(sal) from emp;
----ok
create view v$_a
as
select avg(sal) as "avg_sal" from emp;
视图不是物理表,是虚拟表
不建议通过视图更新视图所依附的原始表的数据或者结果
总结:通常用视图来查询,而不是操作修改原始表
实例:求出平均工资最高的部门的编号和部门的平均工资
select *
from (
select deptno,AVG(sal) "avg_sal"
from emp
group by deptno
)"T"
where "T".avg_sal=(
select MAX("E"."avg_sal") from( select deptno,AVG(sal) "avg_sal"
from emp
group by deptno
)"E"
)
等效于下面的
create view v$_emp_1 //创建视图
as
select deptno,AVG(sal) "avg_sal"
from emp
group by deptno
select *from v$_emp_1
where avg_sal=(select MAX(avg_sal) from v$_emp_1)
select deptno,AVG(sal) “avg_sal”
from emp
group by deptno
用视图v$_emp_1 来代替