sqlsever视图的学习

简介: 为什么需要视图: 总结: 简化查询 避免了代码的冗余 笔迷那了属性大量重复的sql语句 什么是视图: 视图从代码上来看是select...

为什么需要视图:
总结:
简化查询
避免了代码的冗余
笔迷那了属性大量重复的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 来代替

目录
相关文章
|
4月前
|
SQL Serverless
SQL Sever 单表数据查询(下)
SQL Sever 单表数据查询(下)
48 1
|
9月前
|
SQL 数据库
关于SQL Sever连接的失败案例
关于SQL Sever连接的失败案例
63 0
|
9月前
|
存储 SQL 数据库
SQL Sever数据库存储过程
SQL Sever数据库存储过程
|
SQL 数据库连接 数据库
C#常见控件与SQL Sever数据库交互
首先,我们采用DataSet作为临时的数据库,这样会比较好
|
SQL Serverless
SQL Sever联接查询
作者主页:https://www.couragesteak.com/
SQL Sever联接查询
|
SQL 数据库
SQL Sever 子查询与嵌套查询
作者主页:https://www.couragesteak.com/
SQL Sever 子查询与嵌套查询
|
SQL 数据库
SQL Sever数据类型转换
SQL Sever数据库开发
SQL Sever数据类型转换