实验四 T-SQL语言基本流程控制语句

一.实验目的:

  1. 掌握T-SQL语言的基本语法格式。
  2. 掌握T-SQL语言的运算符和表达式。
  3. 掌握T-SQL语言的基本流程控制语句。

二.实验内容:(所有题写到实验报告中)

  1. 定义局部变量a、b、c、s1、s2并赋初值5、4、4.0、‘abc’、‘def’,分别求a与b的积、商、余数、按位与、按位或、按位异或,a与c的商,s1与s2的串连。(注意比较a与b的商和a与c的商有何不同。):
DECLARE @a INT, @b INT, @c FLOAT, @s1 CHAR(5), @s2 CHAR(5);
SELECT @a = 5, @b = 4, @c = 4.0, @s1 = 'abc', @s2 = 'def';
SELECt @a * @b, @a / @b, @a % @b, @a & @b, @a | @b, @a ^ @b;
PRINT @a / @c;
PRINT @s1 +@ s2;
  1. 输出当前SQL Server的版本信息,输出执行上一条T-SQL语句所返回的错误代码:
PRINT @@VERSION;
PRINT @@ERROR;



SQL Server 2008 实验报告 - 第四次实验报告_sql server

第 1、2 小题运行结果 3) 对student表,将某个学号的值赋给某个变量,然后查询学号为该变量的学生的姓名,将查到的姓名赋给另一个变量并输出其值:

DECLARE @sno_select CHAR(5), @sname_select CHRA(10);
SET @sno_select = '107';
SELECT @sname_select = sname FROM student WHERE sno = '@sno_select';
PRINT @sname_select;
  1. 对score表,将某个课程号赋给某个变量,然后查询课程号为该变量的选课人数和最高成绩分别赋给另外两个变量并输出其值:
DECLARE @cno_select CHAR(5),@s_num int, @max_degree float;
SET @cno_select = '3-105';
SELECT @s_num = COUNT(*), @max_degree = MAX(degree) FROM score WHERE cno = @cno_select;
PRINT @s_num;
PRINT @max_degree;



SQL Server 2008 实验报告 - 第四次实验报告_SQL_02

第 4 小题运行结果

编写程序

  1. 输出每位教师的教师号、姓名和职称级别。(职称级别:教授和副教授为高级职称;讲师为中级职称,助教为初级职称:
SELECT tno, tname, 职称级别 = 
CASE prof
WHEN '教授' THEN '高级职称'
WHEN '副教授' THEN '高级职称'
WHEN '讲师' THEN '中级职称'
WHEN '助教' THEN '初级职称'
END
FROM teacher;



SQL Server 2008 实验报告 - 第四次实验报告_SQL_03

第 1 小题运行结果

  1. 按优、良、中、及格、不及格五级成绩等级输出学生的姓名、课程名和成绩等级,输出结果先按课程号升序排再按姓名升序排:
SELECT sname, cname, 成绩等级 = 
CASE 
WHEN degree >= 90 THEN '优'
WHEN degree >= 80 AND degree < 90 THEN '良'
WHEN degree >= 70 AND degree < 80 THEN '中'
WHEN degree >= 60 AND degree < 70 THEN '几个'
ELSE '不及格'
END
FROM student, cousce, score WHERE student.sno = score.sno AND course.cno = score.cno ORDER BY course.cno, sname;



SQL Server 2008 实验报告 - 第四次实验报告_sql server_04

第 2 小题运行结果 3) 求出男女生的平均成绩,若男生平均成绩与女生平均成绩的比率高于1.3,则显示“男生比女生成绩高多了”;若男生平均成绩与女生平均成绩的比率在0.8~1.3之间,则显示“男生与女生成绩差不多”;若男生平均成绩与女生平均成绩的比率低于0.8,则显示“女生比男生成绩高多了”:

DECLATE @avg_boy float, @avg_girl float, @rate float;
SELECT @avg_boy = AVG(degree) FROM student, score WHERE student.sno = score.sno AND ssex = '男';
SELECT @avg_girl = AVG(degree) FROM student, score WHERE student.sno = score.sno AND ssex = '女';
SET @rate = @avg_boy / @ avg_girl;
IF(@rate > 1.3)
    PRINT '男生比女生成绩高多了'
ELSE IF(@rate < 0.8)
    PRINT '女生比男生成绩高多了'
ELSE
    PRINT '男生与女生成绩差不多'



SQL Server 2008 实验报告 - 第四次实验报告_sql server_05

第 3 小题运行结果 4) 创建如下表,然后向表中插入20条记录,前两列使用默认值,第三列插入从当前日期开始的连续的20天的日期(使用循环语句插入,可参考304页DATEADD函数):

create table xsrq
  (spno char(4) default('3741'),
  spname char(20) default('苹果MacBook Pro '),
scrq date)
DECLARE @i INT;
WHILE @i < 20
BEGIN 
INSERT INTO xsrq (scrq) VALUES (DATEADD("DAY", @i, GETDATE()));
SET @i = @i +1;
END
SELECT * FROM sxsrq; # 显示插入数据



SQL Server 2008 实验报告 - 第四次实验报告_bc_06

第 4 小题运行结果


阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: SQL SERVER