实验7数据库的TransactSQL程序设计.docx
- 文档编号:5574934
- 上传时间:2022-12-28
- 格式:DOCX
- 页数:18
- 大小:561.96KB
实验7数据库的TransactSQL程序设计.docx
《实验7数据库的TransactSQL程序设计.docx》由会员分享,可在线阅读,更多相关《实验7数据库的TransactSQL程序设计.docx(18页珍藏版)》请在冰豆网上搜索。
实验7数据库的TransactSQL程序设计
韶关学院
学生实验报告册
实验课程名称:
数据库技术与应用
实验项目名称:
Transact-SQL程序设计
实验类型(打√):
(基础☑、综合、设计)
院系:
教育学院专业班级:
11教育技术学
姓名:
学号:
指导老师:
林育曼
韶关学院教务处编制
一、实验预习报告内容
预习日期:
2013年11月30日
实验预习报告内容原则上应包含实验目的、实验所用主要仪器药品、实验原理与公式、
实验预习疑问等项目。
一、实验目的
1、掌握Transact-SQL的数据类型、常量变量、表达式等的概念和使用方法。
2、掌握程序中注释的基本概念和使用方法。
3、掌握程序中的流程控制语句的使用方法。
4、掌握SQLServer2005中常用函数的用法。
5、掌握游标的概念和声明方法,以及使用游标进行数据的查询、修改、删除操作等。
二、实验准备
1、了解程序中注释的语法格式。
2、了解程序中的流程控制语句:
IFELSE、CASE、WHILE等流程控制语句。
3、了解系统提供的常用数学函数、日期和时间函数、字符串函数和数据类型转换函数的用法。
4、了解函数的使用方法。
5、了解游标的使用方法。
三、实验内容
1、完成上机实验指导中的实验7,并回答实验中的实验思考。
具体实验要求看上机实验指导书的19~22页。
(选做)
实验预习评分:
二、实验原始(数据)记录
实验时间:
2013年12月3日(星期二第五六节)
如有实验数据表格,学生在实验预习时应画好实验数据表格,供实验时填写数据(本页如
不够,可另附相同规格的纸张)。
指导教师
批阅及签名
签名:
年月日
实验同组人:
三、实验报告内容
2013年12月4日
实验报告内容原则上应包含主要实验步骤、实验数据计算(实验操作)结果、实验结果
(疑问)分析等项目。
实施内容:
一、根据实验要求完成实验:
(写明步骤和截图)
0.创建studentsdb数据库及其相应表,并录入数据。
启动查询分析器,运行下面链接的代码即可。
创建数据库代码
1.在查询分析器中,选择studentsdb数据库,输入以下代码。
DECLARE@stunamevarchar(10)
SELECT@stuname=姓名FORMstudentinfoWHERE姓名LIKE‘张%’SELECT@stuname
观察显示的结果,与studentinfo表中数据进行比较,@stuname赋值的是SELECT结果集中的哪个数据
赋值的是结果集中的姓张的数据
2.定义int型局部变量@grademax、@grademin、@gradesum,在grade表中查找最高分、最低分和总分,分别赋给@grademax、@grademin和@gradesum,并显示。
DECLARE@grademaxint,@gradesum,int
SELECT@grademax=max(分数),@grademin=min(分数),@gradesum=sum(分数)
FROMgrade
SELECT@grademax,@grademin,@gradesum
3.使用SET命令将查询的结果数目赋值给int型局部变量@row。
给下面代码中的划线处填上适当的内容,以完成上述操作。
DECLARE@row
SET=(SELECTCOUNT(*)FROMgrade)
@rows—显示@rows的值
4.以下代码在curriculum表中插入新纪录:
DECLARE@intCIdint,@intErrorCodeint
INSERTINTOcurriculum(课程编号,课程名称,学分)
VALUES(’0006’,’VB程序设计’,2)
SELECT@intCId=@@identity,@intErrorCode=@@error
SELECT@intCId,@intErrorCode
将该代码段连续执行两次,观察两次显示的信息及curriculum表中数据的变化,为什么前后两次执行时显示的信息会不同?
两次显示的结果都是一样呀,网上的答案也是这样的,更不清楚为什么要问为什么两次执行时显示的信息会不同。
因为我不小心执行了四次,所以就出现了四个VB(估计是不是考的主键的唯一性?
不能重复插入?
但估计是之前的代码疏忽了设置主键?
)
5.在studentsdb数据库的studentinfo表中,以“性别”为分组条件,分别统计男生和女生人数。
6.在grade表中,使用适当函数找出“高等数学”课程的最高分、最低分和平均分。
结果检验无误
7.定义一个datetime型局部变量@student,以存储当前日期。
计算studentinfo表中的学生的年龄,并显示学生的姓名、年龄。
在以下代码的划线部分填入适当内容,以实现上述功能。
DECLAREdatetime
SET@student=—给@student赋值为当前日期SELECT姓名,(@student)-year(出生日期)AS年龄FROMstudentinfo
8.运行以下代码,写出运行结果。
DECLARE@aint,@bint
SET@a=168
SET@b=73
SELECT@a&@b,@a|@b,@a^@b
9.在局部变量@stuid中存储了学号值。
编写代码查询学号为0001的学生的各科平均成绩,如果平均分>=60则显示“你的成绩及格了,恭喜你!
!
”,否则显示“你的成绩不及格”。
IF((SELECTAVG(分数)FROMgradewhere学号=‘0001’)<60)PRINT‘你的成绩不及格’
ELSE
PRINT‘你的成绩及格了,恭喜你!
!
’
10.运行以下代码段,写出运行的结果。
DECLARE@counterint
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。
在以下代码的划线部分填入适当内容完成上述功能
SELECT学号,分数,等级=CASE
分数>=90THEN‘A’
WHEN分数>=80AND分数<90‘B’WHEN分数>=70AND分数<80THEN‘C’WHEN分数>=60AND分数<70THENELSE‘E’
END
FROMgrade
12.计算grade表的分数列的平均值。
如果小于80,则分数增加其值的5%;如果分数的最高值超过95,则终止该操作。
在以下代码划线处填入适当的内容以完成上述功能。
WHILE(SELECT(分数)FROMgrade)<80
BEGINUPDATEgrade
SET分数=分数*1.05
If(SELECTMAX(分数)FROMgrade)>BREAK
ELSE
END
13.编写代码计算并显示@n=1+2+3+...+20。
14.编写代码计算并显示1~100之间的所有完全平方数。
例如,81=92,则称81为完全平方数。
15.计算1~100以内的所有的素数。
16.在studentsdb数据库中,使用游标查询数据。
(1)打开查询分析器,声明一个stucursor游标,要求返回studentinfo表中性别为“男”的学生记录,且该游标允许前后滚动和修改。
(2)打开stucursor游标。
(3)获取并显示所有数据。
(4)关闭该游标。
17.使用游标修改数据。
(1)打开stucursor游标。
(2)将姓马的男同学的出生日期的年份加1。
因为说什么局部变量不能是text变量,然后为了做这题,我就把备注数据类型改成
varchar(50)了才做的这题
(3)关闭stucursor。
18.声明游标变量@stuc,使之关联stucursor游标,利用stuc查询年龄在6~9
月份出生的学生信息。
19.使用系统存储过程spcursorlist显示在当前作用域内的游标及其属性。
四、实验思考
1.使用游标对数据库的表进行删除和修改等操作。
UPDATE语句的格式为:
UPDATEtable_name
SET{列名=表达式}[,…n]
WHERECURRENTOFcursor_name
DELETE语句的格式为:
DELETEFROMtable_name
WHERECURRENTOFcursor_name
CURRENTOFcursor_name:
表示当前游标指针所指的当前行数据。
CURRENTOF只能在UPDATE和DELETE语句中使用。
2.流程控制语句与其他编程语言提供的语句有何差别?
不同的变成语句是不同的,但是流程语句就是思路很清晰的那种,可以很轻松就转换成其他语言的流程图或者程序了。
3.区分局部变量与全局变量的不同,思考全局变量的用处。
答:
不同点:
局部变量的首字母为单个@,使用DECLARE语句定义,仅存在于声明它的批处理、存储过程或触发器中。
处理结束后,存储在局部变量中的信息将丢失。
全局变量由系统定义并维护,通过在名称前加@@符号区别于局部变量,通常被服务器用来跟踪服务器范围和特定会话期间的信息,不能显示的赋值或声明。
全局变量不能由用户定义,也不能被应用程序用来在处理器之间交叉传递信息。
全局变量的作用,全局变量通常存储一些SQLServer的配置设定值和统计数据。
用户可以在程序中用全局变量来测试系统的设定值或者是Transact-SQL命令执行后的状态值。
实验报告评分:
注:
1、如个别实验的实验报告内容多,实验报告册页面不够写,或有识图、画图要求的,学生应根据实验指导老师要求另附相同规格的纸张并粘贴在相应的“实验报告册”中。
2、实验报告册属教学运行材料,院系(中心)应按有关规定归档保管。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 数据库 TransactSQL 程序设计