逻辑控制语句
同C语言一样:
ELSE是可选部分
如果有多条语句,才需要BEGIN-END语句块
SQL中的IF-ELSE语句
IF (条件)
BEGIN
语句1
语句2
……
END
ELSE
BEGIN
语句1;
语句2;
……
END
SQL中的WHILE语句
WHILE (条件)
BEGIN
语句1
语句2
……
BREAK
END
同C语言一样:
BREAK表示退出循环
如果有多条语句,才需要BEGIN-END语句块
CASE-END多分支语句
CASE
WHEN 条件1 THEN 结果1
WHEN 条件2 THEN 结果2
……
ELSE 其他结果
END
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
批处理语句
批处理是包含一个或多个 SQL 语句的组,从应用程序一次性地发送到SQL Server执行
SQL Server 将批处理语句编译成一个可执行单元,此单元称为执行计划。执行计划中的语句每次执行一条
SELECT * FROM stuInfo
SELECT * FROM stuMarks
UPDATE stuMarks
SET writtenExam=writtenExam+2
GO
GO是批处理的标志,表示SQL Server将这些T-SQL语句编译为一个执行单元,提高执行效率
一般是将一些逻辑相关的业务操作语句,放置在同一批中,这完全由业务需求和代码编写者决定
SQLServer规定:如果是建库、建表语句、以及我们后面学习的存储过程和视图等,则必须在语句末尾添加 GO 批处理标志
--例如建表语句的末尾必须添加GO
CREATE TABLE stuInfo
(
....
)
GO
SELECT * FROM stuMarks --原始成绩
DECLARE @labAvg INT --声明变量,用户临时存放平均分
WHILE(1=1) 循环加分
BEGIN
UPDATE stuMarks 根据机试成绩酌情加分,整个是一个UPDATE语句
SET labExam=
CASE
WHEN labExam<60 THEN labExam+5
WHEN labExam between 60 AND 69 THEN labExam+3
WHEN labExam between 70 AND 79 THEN labExam+2
WHEN labExam between 80 AND 89 THEN labExam+1
ELSE labExam
END
SELECT @labAvg=AVG(labExam) FROM stuMarks
IF @labAvg>=85 获取目前的平均分,判断是否还继续加分
BREAK
END
SELECT * FROM stuMarks --加分后的成绩
阅读(2784) | 评论(1) | 转发(0) |