一、实验目的
1、了解T-SQL变量的使用方法。
2、掌握T-SQL各种运算符、控制语句的功能及使用方法
3、掌握常用系统函数的调用方法。
4、掌握用户自定义函数的使用。
二、实验内容与步骤
在StudentCourse数据库上,用SQL语句实现下面操作:
1、局部变量的使用
(1)声明一个局部变量avggrade,并将StuCourse表中成绩的平均分赋值给变量avggrade(分别用set和select两种赋值方式)。(语法可参考教材例6.1)
语句:
结果:
DECLARE @avggrade REAL
SET @avggrade = (SELECT AVG(成绩) FROM StuCourse)
PRINT @avggrade
DECLARE @avggrade REAL
SELECT @avggrade = AVG(成绩) FROM StuCourse
PRINT @avggrade
结果:


(2)声明一个局部变量i并赋值为70,查询成绩大于i的学生学号和选修的课程号。
语句:
DECLARE @i INT
SET @i = 70
SELECT 学号,课程号
FROM StuCourse
WHERE 成绩 > @i
结果:

2、控制语句
(1)if语句:如果StuCourse表中所有学生的平均成绩大于80,显示'成绩优异',以及成绩大于80的选课记录;否则显示'成绩一般'。(if语句的使用可参考教材例6.5)
语句:
IF (SELECT AVG(成绩) FROM StuCourse) > 80
BEGIN
PRINT '成绩优异'
SELECT *
FROM StuCourse
WHERE 成绩 > 80
END
ELSE
BEGIN
PRINT '成绩一般'
END
结果:


(2)while语句:使用while循环,对course表中的学分总和进行检查,若学分总和小于50,则对每门课程学分加1,直到学分总和不小于50为止。(while语句的使用可参考教材例6.7)
语句:
WHILE (SELECT SUM(学分) FROM Course) < 50
BEGIN
UPDATE Course
SET 学分 = 学分+1
END
结果:

3、系统函数
(1)返回当前日期的年月日
执行: select getdate() as 当前时间
结果:

(2)在update语句中使用@@rowcount全局变量来检测是否存在发生更改的记录
执行:update student
set 总学分=90
where总学分=70
if @@rowcount=0
print '警告:没有发生记录更新'
结果:

(2)完成教材实验7实验内容3(4)~(6)
4.语句:
SELECT RAND()
结果:

5. 语句:
SELECT 学号,姓名,REPLACE(专业名,'计算机科学与技术','计算机')
FROM Student
结果:

6. 语句:
SELECT 学号,姓名,ISNULL(总学分,0) AS 总学分
FROM Student
结果:

4、用户自定义函数
(1)标量函数:编写用户自定义函数,要求根据输入学号,返回某学生的总分数(语法可参考教材例6.9),并使用SELECT和EXEC两种方式调用执行该函数(语法可参考教材例6.10)。
语句:
CREATE FUNCTION Total_Grade
(@cnum char(6))
RETURNS REAL
AS
BEGIN
DECLARE @tot REAL
SELECT @tot =
(
SELECT SUM(成绩)
FROM StuCourse
WHERE StuCourse.学号 = @cnum
GROUP BY StuCourse.学号
)
RETURN @tot
END结果:

语句:
DECLARE @num char(6),@tot1 REAL
SET @num = '070101'
SELECT @tot1 = dbo.Total_Grade(@num)
SELECT @tot1
结果:

语句:
DECLARE @tot REAl
EXEC @tot = dbo.Total_Grade @cnum ='070101'
SELECT @tot AS '总成绩'
结果:

(2)内嵌表值函数:编写用户自定义函数,查询出选修某课程的选课信息,并调用执行该函数。(语法可参考教材例6.11)
语句:自己想
结果:

(3)多语句表值函数:编写用户自定义函数,查询出给定某个系的学生平均成绩,并调用执行该函数。(语法可参考教材例6.12)
语句:自己想
结果:

这篇实验报告详细介绍了T-SQL的使用,包括变量声明、运算符、控制语句、系统函数的应用,以及用户自定义函数的创建和调用。通过具体示例展示了如何在StudentCourse数据库上操作,如查询平均成绩、条件筛选、循环处理、日期获取、记录更新检测等。
7479

被折叠的 条评论
为什么被折叠?



