SQL Server中的视图(view)

目录

零、码仙励志

一、建库和建表

二、视图的用法

1.解释

2.格式

3.注意

4.实例演示

5.优点

6.缺点


零、码仙励志

现在不努力,将来拿什么向曾经抛弃你的人证明它有多瞎

一、建库和建表

create database scort
use scort
create table emp
(
	empno int primary key,
	ename nvarchar(10),
	sal int,
	deptno int
)
insert into emp values (7369,'smith',1800,20);
insert into emp values (7499,'allen',1500,10);
insert into emp values (7521,'ward',1900,30);
insert into emp values (7566,'jones',2000,30);
insert into emp values (7654,'martin',1800,10);
insert into emp values (7698,'blake',1800,30);

SQL Server中的视图(view)_第1张图片

二、视图的用法

1.解释

  1. 视图从代码上看是一个select语句

  2. 视图从逻辑上看是一个虚拟表

2.格式

create view 视图的名字
as
    --select的前面不能加begin
    select语句
    --select的后面不能加end

3.注意

创建视图的select语句必须为所有的计算列指定别名

--error
create view via
as
    select AVG(sal) from emp

--ok
create view via
as
    select AVG(sal) "avg_sal" from emp

 

4.实例演示

不使用视图方法

求出平均工资最高的部门的编号和部门的平均工资
思路:
1.求出所有的部门的部门编号和平均工资
select deptno,AVG(sal) "avg_sal"
    from emp
    group by deptno
2.把查询出来的所有的部门的部门编号和平均工资变成一张临时表"T"
select * 
    from (
        select deptno,AVG(sal) "avg_sal"
        from emp
        group by deptno
    )"T"
3.求出最高的部门的平均工资并变成一张临时表"E"
select MAX("E"."avg_sal")
    from (	
        select deptno,AVG(sal) "avg_sal"
        from emp
        group by deptno	
)"E"
4.让"T"的平均工资等于"E"	
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"
    )

使用视图方法

1.创建视图
create view viemp
as
    select deptno,AVG(sal) "avg_sal"
        from emp
        group by deptno
2.查询
select * from viemp
    where avg_sal=(select MAX(avg_sal) from viemp)

5.优点

  1. 简化查询
  2. 增加数据的保密性

6.缺点

  1. 增加了数据库的维护成本
  2. 视图只是简化了查询,但是并不能加快查询的速度

本篇博客来自于郝斌老师视频教程的总结以及笔记的整理,仅供学习交流,切勿用于商业用途,如有侵权,请联系博主删除,博主QQ:194760901 

你可能感兴趣的:(Sql,Server)