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, ???????????????????????? 笔试成绩 =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语句直接运行的,呵呵。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |