数据库之视图、索引和游标_第1页
数据库之视图、索引和游标_第2页
数据库之视图、索引和游标_第3页
数据库之视图、索引和游标_第4页
数据库之视图、索引和游标_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 。 通常在以下情况下使用视图:通常在以下情况下使用视图:1)着重于特定数据。着重于特定数据。2)2) 简化数据操作。简化数据操作。3) 自定义数据。自定义数据。4) 数据的导入与导出。数据的导入与导出。5) 跨服务器组合分区数据库跨服务器组合分区数据库 修改数据修改数据时,若视图依赖于多个基本表,那么一次修改只能修改一个基本表中的时,若视图依赖于多个基本表,那么一次修改只能修改一个基本表中的数据。删除数据时,若视图依赖于多个基本表,那么不能通过视图删除数据。删除数据时,若视图依赖于多个基本表,那么不能通过视图删除数据。数据。 提高查询性能。对于包含提高查询性能。对于包含SELECT、UPDA

2、TE或或DELETE语句的各种查询,索引会很有用。语句的各种查询,索引会很有用。 T-SQL提供了索引删除语句提供了索引删除语句DROP INDEX。其语法格式如下:。其语法格式如下:DROP INDEX table_name . index_name【例【例9-11】删除【例】删除【例9-8】创建的索引。】创建的索引。DROP INDEX 教师表教师表.index_教师姓名教师姓名GO USE xscjGO-声明变量声明变量DECLARE c_name varchar(8),s_avg float-声明游标声明游标DECLARE st_cursor CURSOR FOR SELECT 课程表

3、课程表.课程名课程名,AVG(成绩表成绩表.分数分数) FROM 课程表课程表,成绩表成绩表 WHERE 课程表课程表.课程号课程号=成绩表成绩表.课程号课程号 AND 成绩表成绩表.分数分数 IS NOT NULL GROUP BY 课程表课程表.课程名课程名-打开游标打开游标OPEN st_cursor-提取第一行数据提取第一行数据FETCH NEXT FROM st_cursor INTO c_name,s_avg-打印表标题打印表标题PRINT 课程平均分课程平均分PRINT -WHILE FETCH_STATUS = 0 BEGIN -打印一行数据打印一行数据 PRINT c_nam

4、e+ +CAST(s_avg AS char(10) -提取下一行数据提取下一行数据 FETCH NEXT FROM st_cursor INTO c_name,s_avgEND-关闭游标关闭游标CLOSE st_cursor-释放游标释放游标DEALLOCATE st_cursorGOUSE xscjGO-声明变量声明变量DECLARE no1 char(5),no2 char(6),fs char(2)-声明游标声明游标DECLARE fs_cursor CURSOR FOR SELECT 学号学号,课程号课程号, CASE WHEN 分数分数=90 THEN A WHEN 分数分数=80

5、 THEN B WHEN 分数分数=70 THEN C WHEN 分数分数=60 THEN D WHEN 分数分数60 THEN E END FROM 成绩表成绩表 WHERE 分数分数 IS NOT NULL ORDER BY 学号学号-打开游标打开游标OPEN fs_cursor-提取第一行数据提取第一行数据FETCH NEXT FROM fs_cursor INTO no1,no2,fs-打印表标题打印表标题PRINT 学号课程号等级学号课程号等级PRINT -WHILE FETCH_STATUS = 0 BEGIN -打印一行数据打印一行数据 PRINT no1+ +no2+ +fs

6、-提取下一行数据提取下一行数据 FETCH NEXT FROM fs_cursor INTO no1,no2,fsEND-关闭游标关闭游标CLOSE fs_cursor-释放游标释放游标DEALLOCATE fs_cursorGO补充补充3、 使用游标查看数据库使用游标查看数据库XSCJ中中“学生表学生表”中满足条件的记录个数。中满足条件的记录个数。USE XSCJGO-声明游标声明游标DECLARE jbxxb_Cursor CURSOR FORSELECT 学号学号, 姓名姓名FROM xscj.dbo.学生表学生表WHERE 院系名称院系名称= 计算机学院计算机学院-打开游标打开游标OP

7、EN jbxxb_Cursor-提取第一行数据提取第一行数据FETCH NEXT FROM jbxxb_CursorWHILE FETCH_STATUS = 0BEGIN -提取下一行数据提取下一行数据 FETCH NEXT FROM jbxxb_CursorEND-关闭游标关闭游标CLOSE jbxxb_Cursor-释放游标释放游标DEALLOCATE jbxxb_Cursor补充补充4、为、为“学生表学生表”中姓名以中姓名以“张张”开头的行声明一个简单的游标开头的行声明一个简单的游标jbxxb1_cursor,并使用,并使用 FETCH NEXT 逐个提取这些行。逐个提取这些行。FETC

8、H 语句以语句以单行结果集形式返回由单行结果集形式返回由 DECLARE CURSOR 指定列的值。指定列的值。USE XSCJGODECLARE jbxxb1_cursor CURSOR FORSELECT 姓名姓名 FROM 学生表学生表WHERE 姓名姓名 LIKE 张张%ORDER BY 姓名姓名OPEN jbxxb1_cursorFETCH NEXT FROM jbxxb1_cursorWHILE FETCH_STATUS = 0BEGINFETCH NEXT FROM jbxxb1_cursorENDCLOSE jbxxb1_cursorDEALLOCATE jbxxb1_curs

9、or补充补充5、本例与上例相似,使用、本例与上例相似,使用 FETCH语句将值存入变量,但语句将值存入变量,但 FETCH 语句的值存储于局部变量而不是直接返回给基表。语句的值存储于局部变量而不是直接返回给基表。PRINT 语句将变量组语句将变量组合成单一字符串并将其返回到基表。代码如下:合成单一字符串并将其返回到基表。代码如下:USE XSCJGODECLARE 学号学号 varchar(40), 姓名姓名 varchar(20)DECLARE xb_cursor CURSOR FORSELECT 学号学号,姓名姓名 FROM 学生表学生表WHERE 姓名姓名 LIKE 张张%ORDER BY 姓名姓名OPEN xb_cursorFETCH NEXT FROM xb_cursorINTO 学号学号, 姓名姓名WHILE

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论