资源描述
实验七 Transact-SQL程序设计
1.实验目的
(1) 掌握Transact-SQL的数据类型、常量变量、表达式等的概念和使用方法。
(2) 掌握程序中注释的基本概念和使用方法。
(3) 掌握程序中的流程控制语句的使用方法。
(4) 掌握SQL Server 2005中常用函数的用法。
(5) 掌握游标的概念和声明方法,以及使用游标进行数据的查询、修改、删除操作等。
2.实验内容
(1) 选择student_db数据库,输入以下T-SQL代码。
DECLARE @stu_name varchar(10)
SELECT @stu_name=姓名
FROM student_info
WHERE 姓名 LIKE '张%'
SELECT @stu_name
观察显示的结果,与student_info表中数据进行比较,@stu_name赋值的是SELECT结果集中的哪个数据?
@stu_name的赋值是学生表中姓张的学生的名字
(2) 定义int型局部变量@grademax、@grademin、@gradesum,在grade表中查找最高分、最低分和总分,分别赋给@grademax、@grademin和@gradesum,并显示。
(3) 使用SET命令将某个查询结果集记录数目赋值给int型局部变量@row。
(4) 以下代码在curriculum表中插入新记录:
DECLARE @intCId int,@intErrorCode int
INSERT INTO curriculum(课程编号,课程名称,学分)
VALUES('0006','VB程序设计',2)
SELECT @intCId=@@identity,@intErrorCode=@@error
SELECT @intCId,@intErrorCode
将该代码段连续执行两次,观察两次显示的信息及curriculum表中数据的变化,为什么前后两次执行时显示的信息会不同?
(5) 在student_db数据库的student_info表中,以“性别”为分组条件,分别统计男生和女生人数。
(6) 在grade表中,使用适当函数找出“高等数学”课程的最高分、最低分和平均分。
(7) 定义一个datetime型局部变量@studate,以存储当前日期。计算student_info表中的学生的年龄,并显示学生的姓名、年龄。
(8) 运行以下代码,写出运行结果。
DECLARE @a int,@b int
SET @a=168
SET @b=73
SELECT @a & @b,@a|@b,@a^@b
(9) 在局部变量@stu_id中存储了学号值。编写代码查询学号为0001的学生的各科平均成绩,如果平均分³60,则显示“你的成绩及格了,恭贺你 !!”,否则显示“你的成绩不及格”。
(10) 运行以下代码段,写出运行的结果。
DECLARE @counter int
SET @counter=1
WHILE @counter<10
BEGIN
SELECT '@counter的值现在为: '+CONVERT(CHAR(2),@counter)
SET @counter=@counter+1
END
(11) 查询grade表。如果分数大于等于90,显示A; 如果分数大于等于80小于90,显示B;如果分数大于等于70小于80,显示C;如果分数大于等于60小于70,显示D; 其他显示E。
(12) 计算grade表的分数列的平均值。如果小于80,则分数增加其值的5%;如果分数的最高值超过95,则终止该操作。
(13) 在student_db数据库中,使用游标查询数据。
① 声明一个stu_cursor游标,要求返回student_info表中性别为“男”的学生记录,且该游标允许前后滚动和修改。
② 打开stu_cursor游标。
③ 获取并显示所有数据。
④ 关闭该游标。
(14) 使用游标修改数据。
① 打开stu_cursor游标。
② 将姓马的男同学的出生日期的年份加1。
③ 关闭stu_cursor游标。
(15) 声明游标变量@stu_c,使之关联stu_cursor游标,利用@stu_c查询年龄在6~9月份出生的学生信息。
(16) 使用系统存储过程sp_cursor_list显示在当前作用域内的游标及其属性。
3.实验思考
(1) Transact-SQL语言的运算符主要有哪些?
答:主要有以下六大类:算术运算符、赋值运算符、位运算符、比较运算符、逻辑运算符以及字符运算符。
(2) 流程控制语句与其他编程语言提供的语句有何差别?
答:流程控制语句是指那些用来控制程序执行和流程分支的命令,在SQL SERVER 2000 中,流程控制语句主要用来控制SQL语句、语句块或者存储过程的执行流程。
(3) 区分局部变量与全局变量的不同,思考全局变量的用处。
答:不同点:局部变量的首字母为单个@,使用DECLARE语句定义,仅存在于声明它的批处理,存储过程或触发器中,处理结束后,存储在局部变量中的信息将丢失。全局变量由系统定义并维护,通过在名称前加@@符号区别于局部变量,通常被服务器用来跟踪服务器范围和特定会话期间的信息,不能显示的赋值或声明。全局变量不能由用户定义,也不能被应用程序用来在处理器之间交叉传递信息。
全局变量的作用:全局变量通常存储一些SQL SERVER的配置设定值和统计数据。用户可以在程序中用全局变量来测试系统的设定值或是Transact-SQL命令执行后的状态值。
(4) 什么函数能将字符串前和尾的空格去掉?
答:有三个函数:ltrim(),rtrim(),trim()
(5) 使用什么语句可以打开游标?打开成功后,游标指针指向结果集的什么位置?
答:使用OPEN cursor_name语句打开游标。当游标打开成功后,游标指针指向结果集的第一行。
- 9 -
展开阅读全文