蝸牛漫步

什么是T-SQL?

T-SQL

  1. SQL 程式设计语言的增强版,它是用来让应用程式与 SQL Server 沟通的主要语言。T-SQL 提供标准 SQL的DDL 和 DML 功能,加上延伸的函数、系统预存程序以及程式设计结构(例如 IF 和 WHILE)让程式设计更有弹性。

案例:

--1.显示李文才的左右同桌(stu)
declare @seat int
select @seat=stuSeat from stu where stuName='李文才'
select * from stu where stuSeat in
(@seat-1,@seat+1)


--2.统计并显示本班笔试平均分,如果平均分在70以上
--显示“成绩优秀“,并显示前三名学员的考试信息;
--如果在70以下,显示“本班成绩较差“,
--并显示后三名学员的考试信息 。(exam)
--select * from exam
declare @avgScore int
select @avgScore=avg(writtenExam) from exam
if @avgScore>70
 begin
  print '成绩优秀'
  select top 3 * from exam order by writtenExam desc
 end
else
 begin
  print '本班成绩较差'
  select top 3 * from exam order by writtenExam
 end

--3.本次考试成绩较差,假定要提分,
--确保每人笔试都通过。提分规则很简单,
--先每人都加2分,看是否都通过,
--如果没有全部通过,每人再加2分,再看是否都通过,
--如此反复提分,直到所有人都通过为止 。
--先查最低的成绩,判断>60,循环加分
select * from exam
update exam set writtenExam=writtenExam-5

declare @num int
select @num=min(writtenExam) from exam
while(@num<60)
begin
  update exam set writtenExam=writtenExam+2 where writtenExam<=98
  select @num=min(writtenExam) from exam
end

--第二种方式
declare @num int
while (1=1)
begin
 select @num=min(writtenExam) from exam
 if @num<60
  update exam set writtenExam=writtenExam+2 where writtenExam<=98
 else
  break
end


--4.采用美国的ABCDE五级打分制来显示笔试成绩。
-- A级:   90分以上
-- B级: 80-89分
-- C级:   70-79分
-- D级: 60-69分
-- E级: 60分以下
select examno,stuNo,writtenExam,评级 =
 case when writtenExam>90 then 'A'
   when writtenExam>80 then 'B'
  when writtenExam>70 then 'C'
  when writtenExam>60 then 'D'
  else 'E'
    end
from exam

--5.请根据平均分和下面的评分规则,编写T-SQL语句查询学员的成 绩,如上图所示。
--      优 :90分以上
--      良 :80-89分
--      中 :70-79分
--      差 :60-69分
--      不及格 :60分以下
select examno,stuNo,(writtenExam+labExam)/2,评级 =
 case when (writtenExam+labExam)/2>90 then 'A'
   when (writtenExam+labExam)/2>80 then 'B'
  when (writtenExam+labExam)/2>70 then 'C'
  when (writtenExam+labExam)/2>60 then 'D'
  else 'E'
    end
from exam

--6.则根据如下规则对机试成绩进行反复加分,
--直到平均分超过85分为止。请编写T-SQL语句实现。
--90分以上:   不加分
--80-89分:   加1分
--70-79分:   加2分
--60-69分:   加3分
--60分以下:   加5分
select * from exam
declare @avgScore int
select @avgScore=avg(labExam) from exam
while @avgScore<85
begin
 print '平均分:'+convert(varchar(20),@avgScore)
 update exam set labExam=labExam+1 where labExam between 80 and 89
 update exam set labExam=labExam+2 where labExam between 70 and 79
 update exam set labExam=labExam+3 where labExam between 60 and 69
 update exam set labExam=labExam+5 where labExam<60
 select @avgScore=avg(labExam) from exam
end
select * from exam

posted on 2011-02-19 18:30  蝸牛漫步  阅读(788)  评论(0编辑  收藏  举报

导航