SQL Server学习笔记——视图

本文介绍了SQLServer中视图的概念及其作用,通过实例展示了如何创建视图并进行查询。当基本表数据发生变化时,视图中的查询结果也会相应更新。示例包括单表查询、联接查询、聚合函数以及条件查询的应用,强调了视图在数据库查询中的灵活性和动态性。
摘要由CSDN通过智能技术生成

SQL Server学习笔记——视图

视图是从一个或几个基本表(或视图)导出的表。不同的是,它是一张虚表,数据库中只存放视图的定义,而不存放视图对应的数据,这些数据仍然存放在原本的基本表中。所以一旦基本表发生改变,从视图中查询的数据也就随之改变

1. 查询学生信息(sno, sname, age)
使用单表查询:

select sno, sname, age from stu

查询结果为:
在这里插入图片描述

使用视图:

create view v_stu as select sno, sname, age from stu --创建视图
select * from v_stu

查询结果为:
在这里插入图片描述
与使用单表查询的结果一模一样。为了理解这一句话:“一旦基本表发生改变,从视图中查询的数据也就随之改变”,举下面一个栗子:

create view v_major as select * from major
select * from v_major

结果为:
在这里插入图片描述
执行一条删除语句:

delete from major where mno='5'

之后,再执行v_major的查询语句:

select * from v_major

结果为:
在这里插入图片描述
可见,控制工程专业已被删除。

2. 查询学生信息(sno, sname, mname)

create view v_stu2 as 
select stu.sno, stu.sname, major.mname from stu left outer join major on stu.mno = major.mno
select * from v_stu2

查询结果为:
在这里插入图片描述
3. 查询学生的信息(sno, avg(grade))

create view v_stu3 as
select sno, avg(grade) as avg_grade from sc group by sno

查询结果为:
在这里插入图片描述
4. 查询每位同学较自己平均分高的课程(cno)
在上一个例子中已经建立了学生的平均分视图,则此例子的查询语句可以这么写:

select sc.sno, cno from sc, v_stu3 where sc.sno = v_stu3.sno and sc.grade > v_stu3.avg_grade

查询结果为:
在这里插入图片描述
与使用嵌套查询:

select sno, cno from sc t1 where grade > (select avg(grade) as avg_grade from sc t2 group by sno having t1.sno = t2.sno)

的结果一致。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值