目录
零、码仙励志
现在不努力,将来拿什么向曾经抛弃你的人证明它有多瞎
一、建库和建表
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);
二、视图的用法
1.解释
视图从代码上看是一个select语句
- 视图从逻辑上看是一个虚拟表
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.优点
- 简化查询
- 增加数据的保密性
6.缺点
- 增加了数据库的维护成本
- 视图只是简化了查询,但是并不能加快查询的速度
本篇博客来自于郝斌老师视频教程的总结以及笔记的整理,仅供学习交流,切勿用于商业用途,如有侵权,请联系博主删除,博主QQ:194760901