- 1、本文档共41页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据库 第9章视图、索引和游标
第9章 视图、索引和游标 河北工程大学 信电学院 崔冬 第9章 视图、索引和游标 9.1 视图 定义视图 注意: 子查询中通常不包含ORDER BY和DISTINCT子句。 在定义视图时要么指定全部视图列,要么全部省略不写。如果省略了视图的属性列名,则视图的列名与子查询列名相同。但在如下三种情况下必须明确指定组成视图的所有列名: 某个目标列是计算函数或列表达式; 多表连接时选出了几个同名列作为视图的字段; 需要在视图中为某个列选用新的更合适的列名。 1.定义单源表视图 单源表视图指的是数据取自一个基本表的部分行、列。这样定义的视图可以进行查询和修改数据操作。 例1.建立信息系学生的视图。 CREATE VIEW IS_Student AS SELECT Sno, Sname, Sage FROM Student WHERE Sdept = 信息系 DBMS执行CREATE VIEW语句的结果只是保存视图的定义,只有在对视图执行查询时,才按视图的定义从相应基本表中查询数据。 2.定义多源表视图 多源表视图指的是定义视图的子查询的源表可以有多个,这样定义的视图一般只用于查询,不用于修改数据。 例2.建立信息系选修了‘c01’号课程的学生的视图。 CREATE VIEW V_IS_S1(Sno, Sname, Sage, Grade) AS SELECT Student.Sno, Sname, Sage, Grade FROM Student JOIN SC ON Student.Sno = SC.Sno WHERE Sdept = 信息系 AND SC.Cno = c01 3.在已有视图上定义新视图 在视图上建立视图表示视图的数据源中有视图。作为数据源的视图必须是已经建立好的。 例3.建立信息系选修了‘c01’号课程且成绩在90分以上的学生的视图。 CREATE VIEW V_IS_S2 AS SELECT Sno, Sname, Grade FROM V_IS_S1 WHERE Grade = 90 4.定义带表达式的视图 在定义基本表时,为减少数据库中的冗余数据,表中只存放基本数据,由基本数据经过各种计算派生出的数据一般是不存储的。但由于视图中的数据并不实际存储,所以定义视图时可以根据需要设置一些派生属性列,在这些派生属性列中保存经过计算的值。 例4.定义一个反映学生出生年份的视图。 CREATE VIEW BT_S(Sno, Sname, Sbirth) AS SELECT Sno, Sname, 2002-Sage FROM Student 5.含分组统计信息的视图 含分组统计信息的视图是指视图的子查询中含有GROUP BY子句,这样的视图只能用于查询,不能用于修改数据。 例5.定义一个存放每个学生的学号及平均成绩的视图。 CREATE VIEW S_G(Sno, AverageGrade) AS SELECT Sno, AVG(Grade) FROM SC GROUP BY Sno 注意:如果子查询的选择列表包含表达式或统计函数,而且在子查询中也没有为这样的列指定列标题,则在定义视图的语句中必须要指定视图属性列的名字。 常见错误 例1: INSERT INTO V_IS_S1 (Sno,Sname,Grade) VALUES (9512107,‘张星’,18) 例2: 2.根据T-SQL服务器游标的处理特性,分为四种: (1) 静态游标 静态游标总是按照打开游标时的原样显示结果集。 (2) 动态游标 动态游标与静态游标相对。当滚动游标时,动态游标反映结果集中所做的所有更改。结果集中的行数据值、顺序和成员在每次提取时都会改变。 (3) 只进游标 只进游标不支持滚动,它只支持游标从头到尾顺序提取。 (4) 由键集驱动游标 打开由键集驱动的游标时,该游标中各行的成员身份和顺序是固定的。 【例9-13】利用T-SQL扩展方式声明一个游标。 DECLARE 职工CURSOR DYNAMIC FOR SELECT 姓名,职务 FROM 工作人员表 WHERE 性别=男 FOR UPDATE OF 姓名 【例9-17】从【例9-13】声明的游标中读取数据。 FETCH NEXT FROM 职工 FETCH FIRST FROM 职工 FETCH LAST FROM 职工 FETCH PRIOR F
您可能关注的文档
- 教育心理学(第1讲).ppt
- 教育部创业基础课程课件概要.ppt
- 教育部关于高校科研的三文件讲座.ppt
- 教育部解答20个中小学生电子学籍问题.doc
- 教育部北师大基础教育研究中心数学工作室初中数学教材编写....ppt
- 教育心理学第9章_问题解决与创造性.ppt
- 教育部2012年-全国高校专业排名.doc
- 散布图介绍.docx
- 散文家谈散文1.ppt
- 散文4-12.ppt
- 半导体材料性能提升技术突破与应用案例分析报告.docx
- 半导体设备国产化政策支持下的关键技术突破与应用前景报告.docx
- 剧本杀市场2025年区域扩张策略研究报告.docx
- 剧本杀行业2025人才培训体系构建中的市场需求与供给分析.docx
- 剧本杀行业2025年人才培训行业人才培养模式创新与探索.docx
- 剧本杀行业2025年内容创作人才需求报告.docx
- 剧本杀行业2025年区域市场区域剧本市场消费者满意度与市场竞争力研究报告.docx
- 剧本杀市场2025年区域竞争态势下的区域合作策略分析报告.docx
- 剧本杀行业2025人才培训与行业人才培养模式创新.docx
- 剧本杀行业剧本创作人才心理素质培养报告.docx
文档评论(0)