一、声明一个整型变量a,赋值为5,再声明一个长度为10的字符型变量b,赋值为“数据库”。输出(PRINT)变量a和变量b。
DECLARE @a INT = 5;
DECLARE @b VARCHAR(10) = '数据库';
PRINT @a;
PRINT @b;
二、依次查询选修了课程的学生姓名(按性别排序)和选修了课程的学生人数。
-- 查询选修了课程的学生姓名(按性别排序)
SELECT Sname, Ssex
FROM Student WHERE Sno IN (
SELECT DISTINCT Sno
FROM SC
) ORDER BY Ssex; -- 按照性别排序
-- 查询选修了课程的学生人数
SELECT COUNT(DISTINCT Sno) AS StudentCount
FROM SC;
三、使用IF语句进行条件判断。声明变量Score,数据类型为整型,并给Score赋一个任意值,并根据Score的值判断成绩是否合格。如果Score>=60,输出“成绩合格”,否则,输出“成绩不合格”。
DECLARE @Score INT = 75; -- 给Score赋一个任意值,比如75
IF @Score >= 60
PRINT '成绩合格';
ELSE
PRINT '成绩不合格';
四、使用CASE语句进行条件判断。查询每个学生的姓名和平均成绩,并根据平均成绩输出成绩等级(列名即为成绩等级)。平均成绩大于等于90分,输出“等级A”;平均成绩大于等于80分且小于90,输出“等级B”;平均成绩大于等于70分且小于80,输出“等级C”;平均成绩大于等于60分且小于70,输出“等级D”;平均成绩小于60,输出“等级E”。
SELECT Sname, AVG(Grade) AS AverageGrade, CASE WHEN AVG(Grade) >= 90 THEN '等级A' WHEN AVG(Grade) >= 80 AND AVG(Grade) < 90 THEN '等级B' WHEN AVG(Grade) >= 70 AND AVG(Grade) < 80 THEN '等级C' WHEN AVG(Grade) >= 60 AND AVG(Grade) < 70 THEN '等级D' ELSE '等级E' END AS 成绩等级 FROM Student JOIN SC ON Student.Sno = SC.Sno GROUP BY Sname ORDER BY CASE WHEN AVG(Grade) >= 90 THEN 1 WHEN AVG(Grade) >= 80 THEN 2 WHEN AVG(Grade) >= 70 THEN 3 WHEN AVG(Grade) >= 60 THEN 4 ELSE 5 END; -- 按照成绩等级排序
五、使用WHILE语句完成循环程序。计算1+3+5+7+……+99的和,并输出和。
DECLARE @sum INT = 0; -- 初始化和为0
DECLARE @num INT = 1; -- 初始化起始数字为1
WHILE @num <= 99
BEGIN
SET @sum = @sum + @num; -- 累加当前数字到和
SET @num = @num + 2; -- 往后移两位
END
PRINT '1+3+5+7+...+99 的和为: ' + CAST(@sum AS VARCHAR); -- 输出结果
六、创建一个存储过程,命名为“proc+你的名字全拼的首字母+下划线+1”(张三:proc_zs_1)。要求实现如下功能:产生学分为‘4’的课程学生选课情况列表,其中包括学生姓名、课程名、学分、系别、该门课程的成绩。调用此存储过程,显示执行结果。
-- 创建存储过程 CREATE PROCEDURE proc_zs_1 AS BEGIN SELECT S.Sname AS 学生姓名, C.Cname AS 课程名, C.Credit AS 学分, S.Sdept AS 系别, SC.Grade AS 成绩 FROM Student S JOIN SC ON S.Sno = SC.Sno JOIN Course C ON SC.Cno = C.Cno WHERE C.Credit = 4; END; -- 调用存储过程 EXEC proc_zs_1;
七、使用sp_helptext查看上一题创建的存储过程的文本。
EXEC sp_helptext 'proc_zs_1';