网站的积分系统怎么做的,开发一个网站多少钱,旅行网站建设,天堂w区服选择目录
前言
一、SET 语句
二、BEGIN END 语句
三、IF ELSE 语句
四、CASE 语句
五、WHILE 语句
六、GOTO 语句
七、RETURN 语句 前言 T-SQL 提供了用于编写过程性代码的语法结构#xff0c;可用来进行顺序、分支、循环、存储过程等程序设计#xff0c;编写结构化的模…目录
前言
一、SET 语句
二、BEGIN ··· END 语句
三、IF ··· ELSE 语句
四、CASE 语句
五、WHILE 语句
六、GOTO 语句
七、RETURN 语句 前言 T-SQL 提供了用于编写过程性代码的语法结构可用来进行顺序、分支、循环、存储过程等程序设计编写结构化的模块代码从而提高编程语言的处理能力。
流程控制语句 控制语句说明控制语句说明SET赋值语句CONTINUE重新开始下一次循环BEGIN ··· END定义语句块BREAK退出循环IF ··· ELSE条件语句GOTO无条件转移语句CASE分支语句RETURN无条件推出语句WHILE循环语句
一、SET 语句 声明一个变量后这个变量将被初始化为 NULL使用 SET语句将给这个变量重新赋值。 -- 语法格式 SET local_variable expression SET 语句是顺序执行的将一个表达式赋值给声明的变量。表达式的数据类型必须与变量的类型相符合。 -- 示例 declare myvar char(20); set myvar this is a test ; select myvar; go 除了复制功能以外SET 语句也实现一些设置功能如设置日期类型的数据格式、设置数据库的某些属性等。
二、BEGIN ··· END 语句 BEGIN ··· END 语句能够将多个 T-SQL 语句组合成一个语句块并将它们视为一个单元处理。 -- 语法格式 BEDIN { -- SQL 语句 } END 三、IF ··· ELSE 语句 -- 语法格式 IF (条件表达式) { -- 条件表达式为真时执行。 } ELSE { -- 条件表达式为假时执行。 } -- 在条件表达式中可存在 SELECT 语句。 -- 其中条件表达式的值必须为布尔值。如果条件表达式中存在 SELECT 语句时必须用括号跨起来。 -- 示例如果 C001号课程的平均成绩高于80分则显示 ‘ 平均成绩还不错 ’ 否则显示 ‘ 平均成绩一般 ’ 。 if (select avg(score) from sc where cno C001) 80 print 平均成绩还不错 else print 平均成绩一般 -- 示例输出 201502001 号学生的平均成绩如果没有这个学生或该学生没有选课则显示相应的提示信息。 if exists (select * from sc where sno 201502001) select avg(score) from sc where sno 201502001 else if exists (select * from student where sno 201502001) print 该学生没有选课 else print 没有该学生 四、CASE 语句 使用 CASE 语句可以进行多个分支的选择。 CASE 具有下面两种语法格式。
简单 CASE 格式将某个表达式与一组简单表达式进行比较以确定结果。搜索 CASE 格式计算一组布尔表达式以确定结果。 -- 简单 CASE 语法格式 CASE input_expression WHEN when_expression THEN result_expression [ ... n ] [ ELSE else_result_expression ] END -- 搜索 CASE 格式 CASE WHEN Boolean_expression THEN result_expression [ ... n ] [ ELSE else_result_expression ] END -- input_expression是使用简单 CASE 格式时所计算的表达式。 -- WHEN when_expression使用简单 CASE格式时input_expression 所比较的简单表达式。when_expression 是任意有效的表达式when_expression 与 input_expression 的数据类型必须相同或存在隐性转换。 -- THEN result_expression当 input_expression when_expression 的值为 TRUE 时或者 Boolean_expression 取值为 TRUE时返回的表达式。 -- ELSE else_result_expression当比较运算取值不为 TRUE 时返回的表达式。如果省略此参数并且比较运算的值不为 TRUE 时CASE 将返回 NULL 值。 -- WHEN Boolean_expression使用 CASE 搜索格式时所计算的布尔表达式。 -- 示例以简单 case 格式查询所有学生的专业情况包括学号姓名和专业的英文名。 select sno, sname, case specialty when 计算机 then Computer when 电子信息 then Electronic Information when 通信工程 then Communication Engineering else Network Engineering end as specialty from student -- 以搜索 CASE 格式查询所有学生的考试等级包括学号课程号和成绩级别a、b、c、d。 select sno, cno, case when score 90 then a when score 80 then b when score 70 then c when score 60 then d end as 等级 from sc 五、WHILE 语句 WHILE 是一个循环语句通过布尔值来设置一个条件当这个条件成立时重复执行循环体。可以使用 BREAK 和 CONTINUE 关键字在循环中控制 WHILE循环种语句的执行顺序。 -- 语法格式 WHILE ( 条件表达式 ) -- 循环体 BREAK 命令的功能是让程序跳出循环体而 CONTINUE 命令是让程序跳出本次循环。通常情况下 BREAK 和 CONTINUE 是放在 IF ··· ELSE 语句种的即在满足条件的情况下判断是跳出循环还是进入下一次循环。 -- 示例创建一个临时表 #TempOrder包含 userid 和 username两个字段使用 while 循环向这个表中添加10条数据并查看表中的数据。 create table #TempOrder ( userid int, username nchar(10) ) go declare i int; set i 1; while i 10 begin insert into #TempOrder(userid, username) values ( i, user ltrim(str(i)) ) set i 1 end go select * from #TempOrder go drop table #TempOrder -- 示例求1 ~ 100 的累加和包含 100。 declare i int 1, sum int 0 while i 100 begin set sum i set i 1 end select sum 六、GOTO 语句 GOTO 语句可以实现无条件的跳转。 -- 语法格式 GOTO lable /* lable为要跳转的到的语句标号 */ -- 标号是 GOTO 的目标它仅标识了跳转的目标。标号不隔离其前后的语句执行标号前面的用户将跳过标号并执行标号后面的语句。除法标号前面的语句本身是控制流语句如RETURN。 -- 示例用 goto 实现循环求 1 ~ 100 的和包括100。 declare i int 1, sum int 0 my_loop: set sum i; set i 1; if i 100 goto my_loop print sum -- 输出 201602001号学生的平均成绩若没有该学生或该学生没有选课则显示相应的提示信息用 goto 语句实现。 declare avg float if (select count(*) from sc where sno 201602001) 0 goto label select avg avg(score) from sc where sno 201602001 print 201602001号学生的平均成绩为 cast(avg as varchar) return label: print 没有该学生 或该学生没有选课 一般来说应尽量少用 GOTO 语句。过多使用 GOTO 语句可能会使 T-SQL 批处理的逻辑难以理解。使用 GOTO 实现的逻辑几乎都可以使用其它控制流语句实现。GOTO 最好用于跳出深层嵌套的控制流语句。
七、RETURN 语句 使用 RETURN 语句可以从查询或过程种无条件退出。可在任何时候用于从过程、批处理、语句块种退出而 RETURN之后的语句不会被执行。 -- 语法格式 RETURN [ integer_expression ] /* 整形表达式 */ -- 整形表达式为一个整数值是 RETURN 语句要返回的值。 注当用于存储过程时不能返回空值。如果试图返回空值将生成警告信息并返回 0 值。 -- 示例利用存储过程求某个学生的平均成绩。 create procedure mypro sno char(20) as return (select avg(score) from sc where sno sno) -- 创建查询查询 201602001号学生的姓名和平均成绩。 declare avg float, sno char(20) set sno 201602001 exec avg mypro sno select sname, avg as 平均成绩 from student where sno sno 欢迎大家一起讨论若有不足之处还请斧正。