天天看点

sqlsever视图的学习

为什么需要视图:

总结:

简化查询

避免了代码的冗余

笔迷那了属性大量重复的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 来代替