SQLServer-视图

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

        视图:接触者都会遇到一个词那就是“视图是一张虚拟的表”,一提到虚拟,呵呵,本来清晰的东西也变得糊涂起来,其实,视图就是把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,学号=stuInfo.stuNo,

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

                         平均分=(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,学号=stuInfo.stuNo,

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

             平均分=(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语句直接运行的,呵呵。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值