页数:36页文件大小:236.1 KB来源: 数据库原理与应用(SQLServer版)ppt课件
本课件讲解视图的概念与作用,演示用对象资源管理器与 CREATE VIEW 语句创建、修改和删除视图的方法,并说明通过视图查询与更新数据时需要注意的限制条件,帮助理解视图与基表的关系。
第7章视图
基本概念
例1:建立计算机系选修了00000001
例1建立计算机系选修了00000001号课程的学生视图S_1。CREATE VIEW S_1(SID,Sname,Score)ASSELECT StuInfo.SID,StuInfo.Sname,ScoreFROM StuInfo,ScoreInfoWHERE StuInfo.Dept= '计算机系' ANDStuInfo.SID = ScoreInfo.SID ANDScoreInfo.CID= '00000001';
视图定义后
视图有以下优点
注意:只有在当前数据库中才能创
视图的创建
在对象资源管理器中创建
例2:在对象资源管理器中创建学生成绩
例2,在对象资源管理器中创建学生成绩stu_scoreA视图,要求其中包括字段sid,sname,cname,score.
用CREATE VIEW命令创建
CREATE VIEW <view_name>[ (column [ ,...n ] ) ][ WITH { ENCRYPTION|SCHEMABINDING|VIEW_METADATA]}AS select_statement [ ; ][ WITH CHECK OPTION ]
说明:view_name为新创
说明view_name为新创建的视图指定的名字;column为在视图中包含的列名;ENCRYPTION选项表示加密视图;SCHEMABINDING选项表示将视图绑定到基础表的架构;VIEW_METADATA选项表示指定为引用视图的查询请求浏览模式的元数据时,SQL Server实例将向DB-Library、ODBC和OLE DB API返回有关视图的元数据信息,而不返回基表的元数据信息;select_ statement设置选择条件;WITH CHECK OPTION选项强制视图上执行的所有数据修改语句都必须符合在子查询中设置的条件表达式。
例3:利用T-SQL命令语句创建学
例3 利用T-SQL命令语句创建学生成绩stu_scoreB视图,要求其中包括字段sid,sname,cname,score。分析:第一步,编写满足要求的查询语句。select scoreinfo.sid,sname,cname,scorefrom stuinfo,courseinfo,scoreinfowhere stuinfo.sid=scoreinfo.sid andcourseinfo.cid=scoreinfo.cid第二步,在前面的查询语句前加上创建视图命令。CREATE VIEW视图名(视图列_list)AS最终结果
CREATEstu_scoreB(学号,姓名,课程,成绩)ASselect scoreinfo.sid,sname,cname,scorefrom stuinfo,courseinfo,scoreinfowhere stuinfo.sid=scoreinfo.sid andcourseinfo.cid=scoreinfo.cid
例4:建立行列子集视图建立计算机系学
例4----建立行列子集视图建立计算机系学生的学号、姓名和专业的视图student_1。CREATE VIEW Student_1ASSELECT SID,Sname, MajorFROM StuInfoWHERE Dept= '计算机系'
参数:WITH CHECK OPTION
参数----WITH CHECK OPTION定义视图时,可以设置检查选项WITH CHECKOPTION,使得当用视图修改和删除数据,检查这些数据是否符合由select_statement设置的条件,不允许破坏视图定义中设置的这些条件。
例5:带检查选项的视图
例5 建立使用WITH CHECK OPTION的视图建立计算机系学生的学号、姓名和专业的视图Student_2,并要求通过该视图进行的更新操作只涉及计算机学院学生。CREATE VIEW Student_2ASSELECT SID,Sname, Dept FROM StuInfoWHERE Dept= '计算机系'WITH CHECK OPTION例6:建立带表达式的视图
例6 建立带表达式的视图定义一个反映学生年龄的视图StuAge。CREATE VIEW StuAge(SID,Sname,Sage)ASSELECT SID,Sname,year(getdate())-year(birthday)FROM StuInfo注意:带表达式的视图必须明确定义组成视图的各个属性列名。例7:建立分组视图将学生的学号及他
例7 建立分组视图将学生的学号及他的平均成绩定义为一个视图ScoreAvg。CREATE VIEW ScoreAvg(学号,平均成绩)ASSELECT SID,AVG(Score)FROM ScoreInfoGROUP BY SID 注意:分组视图也必须明确定义组成视图的各个属性列名。例8:建立基于多个基表的视图建立计算
例8----建立基于多个基表的视图建立计算机学院选修了00000001号课程的学生视图StuCourse1。CREATE VIEW StuCourse1(学号,姓名,成绩)ASSELECT StuInfo.SID,Sname,ScoreFROM StuInfo,ScoreInfoWHERE Dept= '计算机系' ANDStuInfo.SID=ScoreInfo.SID ANDScoreInfo.CID= '00000001';
例9----建立基于视图的视图
视图的查询1、查询视图的定义
例10:使用T-SQL语句来查看te
例10, 使用T-SQL语句来查看teachindData数据库的student_1视图的定义。USE teachingData EXEC sp_helptext student_1查询视图记录
例11:查询计算机学院学生的学号
例11, 查询计算机学院学生的学号、姓名和专业的信息。Use teachingData SELECT * FROM Student_1例12:查询视图并排序
例12 查询视图stu_scoreB,要求按课程名称进行排序。select *from stu_scoreBorder by课程注意:视图不能用ORDER BY
视图的修改
视图定义的修改
例13:修改视图
例13, 修改视图“Student_1”为查看计算机学院学生的学号、姓名、性别和专业。ALTER VIEW Student_1ASSELECT SID,sname,sex,MajorFROM StuInfoWHERE Dept= '计算机系';重命名视图
例14:将视图student_1更名
视图记录的修改
例15:利用视图更新数据
例15, 利用视图StuCourse1为计算机系中每位学生的高等数学成绩减少5分。Update StuCourse1Set成绩=成绩-5例16:删除视图
例16,从teachingData数据库中删除视图student_2和sc_1。USE teachingDataGoDrop View student_2,sc_1小结:基本概念
小结 基本概念(视图是一个虚拟的表) 视图的创建(CREATE VIEW) 视图的重命名(sp_rename) 视图的修改(修改视图定义:ALTER VIEW;修改视图记录INSERT、UPDATE和DELETE) 视图的删除(Drop View)作业:上机实验操作
下载地址:{{downurl}}
{{{a}}}
{{#b}}{{{b}}}
{{/b}} {{/title}} {{#nolog}}登陆注册
{{/nolog}} {{#djsx}}点我刷新
{{/djsx}} {{#gocz}} {{/gocz}} {{#ffqr}} {{/ffqr}}