目录

  • 第1单元    数据库系统导论
    • ● 任务1.1  数据库基本概念
    • ● 任务1.2  设计E—R 图
    • ● 任务1.3   将E-R图转换成关系模型
    • ● 任务1.4   练习与作业
    • ● 教与学参考资源
  • 第2单元   认识SQL SERVER数据库
    • ● 任务2.1 数据库应用场景
    • ● 任务2.3  SQL  Server 数据库安装
    • ● 任务2.4 SQL Server 的管理
    • ● 任务2.5  使用SSMS连接数据库
    • ● 教与学参考资源
  • 第3单元  创建和管理数据库
    • ● 任务3.1 创建数据库
    • ● 任务3.1(2)  命令创建数据库
    • ● 任务3.2 管理数据库
    • ● 任务3.2(2) 查看、收缩数据库
    • ● 教与学参考资源
  • 第4单元 创建和管理数据库表
    • ● 任务4.1 SQL Server常用数据类型
    • ● 任务4.2  创建数据表
    • ● 任务4.3  命令创建表
    • ● 任务4.4 实施完整性约束
    • ● 教与学参考资源
  • 第 5 单元   查询数据表
    • ● 任务5.1 单表数据查询
    • ● 任务5.2 多表数据查询
    • ● 任务5.3 嵌套查询
    • ● 任务5.4 合并查询结果
    • ● 教与学参考资源
  • 第6单元  管理表中数据
    • ● 任务6.1   添加数据
    • ● 任务6.2  修改数据
    • ● 任务6.3  删除数据
    • ● 习题与训练
    • ● 教与学参考资源
  • 第7单元  使用索引和视图
    • ● 任务7.1  使用索引
    • ● 使用T-SQL创建索引
    • ● 任务7.2  使用视图
    • ● 使用T-SQL语句创建视图
    • ● 教与学参考资源
  • 第8单元 Transact-SQL语言编程
    • ● 任务8.1   声明和使用变量
    • ● 任务8.2   流控语句
    • ● 任务8.3   常用系统函数
    • ● 任务8.4   创建自定义函数
    • ● 教与学参考资源
  • 第9单元  事务和锁
    • ● 任务   9.1     事务
    • ● 事务的基本操作
    • ● 任务9.2    锁
    • ● 死锁及避免方法(例)
    • ● 教与学参考资源
  • 第10单元  创建和管理存储过程
    • ● 任务10.1 存储过程及优点
    • ● 任务10.2 创建和执行存储过程
    • ● 任务10.3   存储过程参数和返回值
    • ● 任务10.4 修改、删除、 重新编译存储过程
    • ● 教与学参考资源
  • 第11单元 创建和管理触发器
    • ● 任务1 触发器的作用和分类
    • ● 任务2 触 发器的创建与执行
    • ● 任务3 创建级联触发器
    • ● 任务4 修改、删除触发器
  • 第12单元 创建和使用游标
    • ● 任务1  游标的作用及使用步骤
    • ● 任务2  创建基本游标
    • ● 任务3  使用变量保存游标数据
    • ● 任务4  使用循环环提取游标数据
  • 第13单元 SQL Server用户管理
    • ● 任务1数据库安全管理概述
    • ● 任务2SQL Server 安全机制
    • ● 任务3 账号、角色及权限管理
    • ● 任务4数据库完整性管理
    • ● 任务5 数据库的备份与还原
    • ● 任务6   数据的导入与导出
  • 第14单元  综合应用案例
    • ● 概述
    • ● 需求分析
    • ● 概述设计-逻辑设计- 物理设计
    • ● 编写数据库设计说明书
  • 学生做项目成果展示
    • ● 项目一  设计《我班同学数据库》
    • ● 项目二  设计《(Teaching)教学数据库》
    • ● 项目三  数据库应用系统设计开发项目
    • ● 项目四 《华夏-宿舍管理系统》设计开发
    • ● 项目五   综合实训大作业
    • ● 综合实训团队项目大作业
    • ● 学生完成项目摘录展示
  • 总复习与综合训练
    • ● 总复习
    • ● 综合训练一
    • ● 综合训练二
    • ● 综合训练三
    • ● 综合训练四
    • ● 综合训练五
    • ● 简答综合训练
  • 在线专题测验
    • ● 自检自测一
    • ● 自检自测二
  • 拓展   数据库管理工具平台  Navicat
    • ● 关于Navica
    • ● Navicat 的系统需求
    • ● Navicat 的用户界面
    • ● Navicat 创建数据库对象
    • ● 在Navicat创建的SQL 程序脚本
    • ● 在Navicat创建的SQL  server 脚本(2)
    • ● 综合实训(1)
    • ● 综合实训(2)
  • 技术拓展   (MYSQL)数据库技术与应用
    • ● MYSQL技术
  • 教与学图片剪影
    • ● 教学团队
    • ● 学生学习实训
    • ● 活动与交流
任务2  创建基本游标

任务2  创建基本游标

(一)游标的使用

游标的操作由五个部分组成,这五个关键的部分符合下面的顺序:

(1)声明游标DECLARE。

(2)打开游标OPEN。

(3)从游标中提取数据FETCH。

(4)关闭游标CLOSE。

(5)当不再需要游标时释放游标DEALLOCATE。


例: 一个完整的示例:

USE  教务数据库

GO

--声明定义  名为男生_cur 的基本游标

DECLARE  男生_cur  SCROLL  CURSOR

FOR SELECT 学号,姓名,性别,专业班级

FROM  学生表

WHERE  性别='男'

FOR READ ONLY

--打开男生_cur 游标

OPEN 男生_cur

--利用游标读取数据

FETCH NEXT FROM 男生_cur

WHILE @@fetch_status=0

BEGIN

  FETCH NEXT FROM 男生_cur

END

--关闭游标

CLOSE 男生_cur

--释放游标

DEALLOCATE 男生_cur


(二) 定义游标

SQL Server系统的游标必须按照以下五个步骤使用。

(1)游标定义,声明其特性,如游标中的数据行是否可以更新。

(2)执行T-SQL语句生成游标,如用OPEN打开游标。

(3)从游标中获取信息。

(4)关闭游标。

(5)释放游标。



(1)基本游标定义

基本游标定义的语法格式如下。

DECLARE 游标名 [INSENSITIVE] [SCROLL] CURSOR

FOR <SELECT查询>

[FOR{ READ ONLY|UPDATE [OF 字段名> [,…n]]}]

格式中各关键字、参数说明如下。

1)INSENSITIVE选项表示游标是静态游标。

2)SCROLL选项表示游标存取数据的方式。

3)“SELECT查询”决定游标结果集。

4)“READ ONLY”表示定义的游标为只读游标。

5)“OF 字段名[,…n]表示游标可以修改的列。


【例1】对教务数据库,定义一个名为“女生_cur”的基本游标,读取学生表的数据。

USE  教务数据库

GO

DECLARE  女生_cur SCROLL CURSOR

FOR SELECT 学号,姓名,性别,专业班级

FROM  学生表

WHERE  性别=‘女’

FOR READ ONLY


一个完整的示例:

USE 教务数据库

GO

--定义名为男生_cur 的基本游标

DECLARE  男生_cur SCROLL CURSOR

FOR SELECT 学号,姓名,性别,专业班级

FROM  学生表

WHERE  性别='男'

FOR READ ONLY

--打开男生_cur 游标

OPEN 男生_cur

--利用游标读取数据

FETCH NEXT FROM 男生_cur

WHILE @@fetch_status=0

BEGIN

  FETCH NEXT FROM 男生_cur

END

--关闭游标

CLOSE 男生_cur

--释放游标

DEALLOCATE 男生_cur


(2)扩展游标定义

扩展游标定义的语法格式如下。

 DECLARE 游标名 CURSOR

  [ LOCAL|GLOBAL ] [ FORWARD_ONLY |SCROLL ] [ STATIC|KEYSET|DYNAMIC |FAST_FORWARD ] [ READ_ONLY| SCROLL_LOCKS|OPTIMISTIC ] [ TYPE_WARNING ]

  FOR <SELECT查询>

  [FOR UPDATE[OF 字段名>[,…n]]]


格式中各关键字、参数说明如下:

1)LOCAL选项表示游标的作用域为声明该游标的批处理、存储过程或触发器中,当建立游标的批处理、存储过程、触发器执行结束后,游标会自动释放。

2)GLOBAL选项表示游标的作用域为当前连接。

3)FORWARD_ONLY选项表示游标为单进游标,只能从第一行滚动到最后一行。

4)STATIC选项将游标定义为静态游标,使用数据的临时备份,禁止应用程序通过它修改基表数据。

5)KEYSET选项将游标定义为键集驱动游标,即在游标打开时,游标中列的顺序是固定的。对于键集游标有以下性质。

①应用程序不能通过键集游标向其基表插入数据。

②应用程序可以修改基表中的非键集列值。

③读取键集游标中被删除的数据行时,@@FETCH_ STATUS参数将返回-2。

④修改游标中的键集列相当于删除旧行,插入新行。

⑤可以看到通过WHERE CURRENT OF子句所修改的数据。

6)DYNAMIC选项将游标定义动态游标,使基表的变化能反映到游标中。

7) FAST_FORWARD选项表示启用优化的FORTWARD_ONLY和READ_ONLY游标。

8)SCROLL_LOCKS选项表示SQL Server系统在将数据读入游标的同时锁定基表中的数据行。

9)OPTIMISTIC选项表示数据读入游标时不锁定基表中被读入的数据行。

10)TYPE_WARNING选项表示无法建立用户指定类型的游标向客户端发出警告消息。


【例2】定义一个名为“学生_cura”的扩展游标,读取学生表的数据。

USE 教务数据库

GO

DECLARE 学生_cura CURSOR 

LOCAL SCROLL DYNAMIC

TYPE_WARNING

FOR SELECT 学号,姓名,性别, 专业班级 ,出生地区

FROM 学生表


--完整应用示例

USE 教务数据库

GO

DECLARE 学生_cura CURSOR 

LOCAL SCROLL DYNAMIC

TYPE_WARNING

FOR SELECT 学号,姓名,性别, 专业班级,出生地区

FROM 学生表

OPEN 学生_cura

FETCH NEXT FROM 学生_cura

WHILE @@fetch_status = 0

BEGIN

 FETCH NEXT FROM 学生_cura

END

CLOSE 学生_cura

DEALLOCATE 学生_cura


2.查看游标信息和状态

(1)sp_cursor_list:检索当前连接的所有可见游标。

(2)sp_describe_cursor:检索游标属性信息,如作用域、名称、类型、状态和行数。

(3)sp_describe_cursor_columns:检索游标结果集合中的列属性。

(4)sp_describe_cursor_tables:检索游标锁引用的基表信息

(5)@@CURSOR_STATUS:读取游标状态或检查游标变量是否与游标相关联。

(6)@@FETCH_STATUS:读取最后一次游标数据提取操作结果状态。

(7)@@CURSOR_ROWS:显示游标集合中的行数。