T-SQL练习题参考答案

2020-06-30 10:34

一、StudentInfo数据库已发给大家。其中包含两个表:stuInfo和stuMarks。

根据这个数据库完成下列各题:

1.编写T-SQL查找李文才的左右同桌 ? 分析:

第一步,找出“李文才“的座位号; 第二步,李文才的座位号加1或减1

/*--查找李文才的信息--*/

DECLARE @name varchar(8) --学员姓名 SET @name='李文才' --使用SET赋值

SELECT * FROM stuInfo WHERE stuName = @name /*--查找李文才的左右同桌--*/ DECLARE @seat int --座位号

SELECT @seat=stuSeat FROM stuInfo --使用SELECT赋值 WHERE stuName=@name SELECT * FROM stuInfo

WHERE (stuSeat = @seat+1) OR (stuSeat = @seat-1) GO

2. 统计并显示本班笔试平均分,如果平均分在70以上,显示“成绩优秀“,并显示前三名学员的考试信息;如果在70以下,显示“本班成绩较差“,并显示后三名学员的考试信息 。 分析:

第一步,统计平均成绩存入临时变量; 第二步,用IF-ELSE判断;

declare @myavg float

select @myavg=avg(writtenExam) from stuMarks --使用select赋值

print '本班的平均分:'+convert(varchar(5),@myavg) if (@myavg>70) begin

print '本班笔试成绩优秀!'

select top 3 * from stuMarks order by writtenExam desc end else

begin

print '本班笔试成绩优秀!'

select top 3 * from stuMarks order by writtenExam end go

3. 本次笔试成绩较差,假定要提分,确保每人笔试都通过。提分规则很简单,先每人都加2分,看是否都通过,如果没有全部通过,每人再加2分,再看是否都通过,如此反复提分,直到所有人都通过为止 。 分析:

第一步,统计没通过的人数 ; 第二步,如果有人没通过,加分; 第三步,循环判断。

declare @n int

while(1=1) --条件永远成立 begin

select @n=count(*) from stuMarks

where writtenExam<60 --统计不及格人数 if (@n>0)

update stuMarks set writtenExam=writtenExam+2 --每人加2分 else

break --退出循环 end

print '加分后的成绩如下:' select * from stuMarks

4. 请根据平均分和以下评分规则,编写T-SQL语句查询学员的成绩。

优 :90分以上 良 :80-89分

中 :70-79分 差 :60-69分 不及格 :60分以下

SELECT 考号=ExamNo,学号=stuNo,笔试=writtenExam,机试=labExam, 平均分=(writtenExam+labExam)/2, 等级= CASE

WHEN (writtenExam+labExam)/2<60 THEN '不及格'

WHEN (writtenExam+labExam)/2 BETWEEN 60 AND 69 THEN '差' WHEN (writtenExam+labExam)/2 BETWEEN 70 AND 79 THEN '中' WHEN (writtenExam+labExam)/2 BETWEEN 80 AND 89 THEN '良' ElSE '优' END

FROM stuMarks

二、 用T-SQL语句写一个求两个数的最大值的函数

create function max2( @par1 real , @par2 real) returns real as begin

declare @par real if @par1 > @par2

set @par = @par1 else

set @par = @par2; return @par end Go

三、P248(4)

declare @ssex char(2) declare Cur_XS cursor for

select 性别 from 学生表 for update of 年龄 open Cur_XS

fetch next from Cur_XS into @ssex while (@@fetch_status=0) begin

if (@ssex='女')

delete from 学生表 where current of Cur_XS else

update 学生表 set 年龄=年龄+1 where current of Cur_XS fetch next from Cur_XS into @ssex end

close Cur_XS

deallocate Cur_XS go

select * from 学生表 go


T-SQL练习题参考答案.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:人力资源管理大作业2535907

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: