加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

SQLServer-视图

发布时间:2020-12-12 15:49:14 所属栏目:MsSql教程 来源:网络整理
导读:一般接触到视图,存储过程,触发器时,普遍感觉比较晕,其实他们没有那么难,就我的理解: ??????? 视图:接触者都会遇到一个词那就是“视图是一张虚拟的表”,一提到虚拟,呵呵,本来清晰的东西也变得糊涂起来,其实,视图就是把SELECT语句取一个名称保存起

一般接触到视图,存储过程,触发器时,普遍感觉比较晕,其实他们没有那么难,就我的理解:

??????? 视图:接触者都会遇到一个词那就是“视图是一张虚拟的表”,一提到虚拟,呵呵,本来清晰的东西也变得糊涂起来,其实,视图就是把SELECT语句取一个名称保存起来作为一个数据库对象使用。我们来看一个例子:

有学生信息表,学生成绩表,现在需要查询学生的成绩信息,需要在两张表中查询

SELECT 姓名=stuName,学号=stuInfo.stuNo,

?????? 笔试成绩 =writtenExam,?? 机试成绩=labExam,

???????????? 平均分=(writtenExam+labExam)/2

??????????????? FROM stuInfo LEFT JOIN stuMarks

????????????????????? ON stuInfo.stuNo=stuMarks.stuNo

如果我们要在上面的例子中查询部分信息,如笔试成绩大于70分的学员姓名,成绩,我们可以这样写:

SELECT 姓名,笔试成绩 FROM

????????????? (

????????????????? SELECT 姓名=stuName,

???????????????????????? 笔试成绩 =writtenExam,

???????????????????????? 平均分=(writtenExam+labExam)/2

?????????????????? FROM stuInfo LEFT JOIN stuMarks

??????????????????????????????????? ON stuInfo.stuNo=stuMarks.stuNo

????????????? )?? T

????? Where 笔试成绩>70

其中T就是select语句结果的别名,方便期间,我们可以把T做成一个视图

??? Create view T

??? As

?????? SELECT 姓名=stuName,

???????????? 平均分=(writtenExam+labExam)/2

??????????????? FROM stuInfo LEFT JOIN stuMarks

????????????????????? ON stuInfo.stuNo=stuMarks.stuNo

?? Go

?? 那么我们的结果就可以写成:

?? SELECT 姓名,笔试成绩 FROM T where笔试成绩>70

?? T 就是视图,T其实就是一个已经存储在数据库中的一条SELECT语句。当然,视图不单单是一条select语句,因为视图上可以支持数据操纵语句(DML),支持索引,至于视图的性能,不但易于开发,而且性能也好,毕竟是编译后的sql语句直接运行的,呵呵。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读