T-SQL数据库编程.ppt

上传人:小飞机 文档编号:6521722 上传时间:2023-11-08 格式:PPT 页数:29 大小:302.99KB
返回 下载 相关 举报
T-SQL数据库编程.ppt_第1页
第1页 / 共29页
T-SQL数据库编程.ppt_第2页
第2页 / 共29页
T-SQL数据库编程.ppt_第3页
第3页 / 共29页
T-SQL数据库编程.ppt_第4页
第4页 / 共29页
T-SQL数据库编程.ppt_第5页
第5页 / 共29页
点击查看更多>>
资源描述

《T-SQL数据库编程.ppt》由会员分享,可在线阅读,更多相关《T-SQL数据库编程.ppt(29页珍藏版)》请在三一办公上搜索。

1、Transact-SQL数据库编程,流程控制语句功能性语句,流程控制语句,1.语句块(BEGINEND)语法如下:BEGIN END说明:在t-sql中用beginend来把多个t-sql语句连成一个语句块,它的作用相当于和java中的大括号。只要是流程控制语句中执行两条或者多条t-sql语句的任何地方,都可以使用beginend,举例语句块,beginend常用于if语句和while语句中。如果if和while语句只有一条t-sql语句的话可以不使用beginend,但是为了养成良好的习惯,建议只有一条t-sql也要写上beginendbeginend语句可以嵌套使用。注:每个t-sql语句

2、后面没有逗号或是分号。,begin update 课程表 set 学分=4 where 课程号=00010001 update 课程表 set 学分=3 where 课程号=00020002 select 课程号,学分 from 课程表end,流程控制语句,2.判断语句(IFELSE)语法如下:IF ELSE 说明:else子句是可选的,最简单的if语句没有else子句部分ifelse可以进行嵌套。,举例判断语句,例:计算学号为0202003的学生的平均成绩,如果成绩=60分,则显示及格,否则显示不及格。declare cj_avg int select cj_avg=avg(成绩)from

3、选课 where 学生号=0202003 print 平均成绩:print cj_avg if cj_avg=60-if后的条件可以不加括号。print 平均成绩及格 else print 平均成绩不及格 go,流程控制语句,3.检测语句(IFEXISTS)用于检测数据是否存在,而不考虑与之匹配的行数。只要找到第一个匹配的行,服务器就会停止执行SELECT语句。语法如下:IF NOT EXISTS(SELECT查询语句)ELSE,举例检测语句,例:检查学号为0202003的同学是否有课程号C001的成绩。if exists(select*from 选课 where 学生号=0202003 an

4、d 课程号=C001)print 有这门课的成绩 else print 没有这门课的成绩 go,流程控制语句,4.多分支判断语句(CASEWHEN)CASEWHEN结构可避免多重IFELSE语句嵌套使用。有两种格式,其中第二种格式较常用。格式语法如下:CASE WHEN THEN WHEN THEN ELSE END,举例多分支判断语句,例:对学生成绩进行评定。,举例多分支判断语句,对应的T-SQL语句:select 学生号,成绩,总评=case when(成绩=90)then 优秀 when(成绩=80)and(成绩=70)and(成绩=60)and(成绩70)then 及格 else 不及

5、格 end from 选课 order by 学生号 go,另外一种写法:,select 学生号,成绩,总评=case when 成绩=90 then 优秀 when 成绩 between 80 and 89 then 良好 when 成绩 between 70 and 79 then 中等 when 成绩 between 60 and 69 then 及格 else 不及格 end from 选课 order by 学生号 go,流程控制语句,5.循环语句(WHILE)有些时候需要重复执行某些t-sql语句,利用while语句可以很好的达到我们的目的。语法如下:WHILE BEGIN BRE

6、AK CONTINUE 命令行或程序块 END,Break 与continue有什么区别?,While语句举例,例如:我要在屏幕上打印 10次“你好”。begin declare i int set i=0 while(i10)-在此判断i的值是否小于10 begin print 你好-如果i小于10就打印一次”你好”set i=i+1-打印一次就让循环控制变量加一-直到i的值等于10时,结束循环 end end,While语句举例,例:使用循环语句,计算1+2+100的和。declare i int,sum int select i=1,sum=0 while(i=100)-括号也可以去掉

7、begin select sum=sum+i select i=i+1 end print 1+2+.+100=print sum,流程控制语句,6.跳转语句(GOTO)可以改变程序执行的流程,使程序跳到标有标识符的指定程序行,再继续往下执行;标识符可以是数字与字符的组合,但必须以“:”结尾。语法如下:标识符:GOTO 标识符一般尽量避免使用goto语句,流程控制语句,7.返回语句(RETURN)返回语句可使程序从批处理、存储过程、触发器中无条件退出,不再执行RETURN之后的任何语句。语句格式:RETURN(整数值)-在括号内可指定一个返回值。若 return语句后没有指定返回值,系统会根据

8、程序执行的结果返回一个内定值,返回值为0表示程序执行成功。-return语句返回值及含义见P218。,流程控制语句,8 延期执行语句(WAITFOR)WAITFOR语句用来暂停程序执行,直到所设定的等待时间已过或所设定的时刻已到,才继续往下执行。其数据类型必须为DATETIME 的,延迟时间和时刻均采用“HH:MM:SS”格式。在WAITFOR语句中不能指定日期,并且时间长度不能超过24小时。,流程控制语句,语句格式:WAITFOR DELAY|TIME sql_statement语句说明:WAITFOR DELAY 时间延迟一段时间WAITFOR TIME 时间等待到一个时刻例:等待6小时1

9、0分20秒才执行语句块。例:等到晚上11点才执行“学生成绩管理”数据库的备份工作。,功能性语句,1.注释符在T-SQL中,注释可以包含在批处理、存储过程、触发器中。有两种类型的注释符:-:用于单行注释。/*/:可以在程序中标识多行文字为注释语句,功能性语句,2.输出语句(PRINT)通常是在用户屏幕上显示,显示的字符串最长可达8000个字符,超出的任何字符均被截断。语句格式:PRINT 文本|局部变量|全局变量|字符串表达式尽管PRINT语句只可以显示字符串,但在T-SQL中提供了很多的函数可以把其它的数据类型转化为字符串。print 当前时间:+convert(varchar(30),Get

10、date()Convert函数可以将其他类型数据转化为字符串。,事务的概念事务是用户定义的一个数据库操作序列。这些操作要么都执行,要么都不执行,是一个不可分割的逻辑工作单元。通常,一个程序中包含多个事务。,事务,例:一个银行汇款业务:帐户A向账户B汇款(假设为N元)。这个业务将包含如下两个操作。第一个:账户A-N第二个:账户A+N如果在第一个动作完成之后,第二个动作还没有完成时,突然停电了,那么这个支付活动是不成功的。这时正确的状态应该能够撤销第一个动作,并且希望系统自动完成这个撤销操作。这就是数据库中引入事务的原因。,事务的应用,事务必须具备4个特性:原子性:指事务必须执行一个完整的操作,要

11、么全做,要么全不做。一致性:指当事务的执行结果必须是数据库从一个一致性状态变到另一个一致性状态。隔离性:指并发执行的各事务之间不能互相干扰。持久性:一个事务一旦提交,它对数据库的改变就是永久性的。,事务的特性,事务编程,一个事务可能包括一条T-SQL语句,也可能包含多条T-SQL语句。事务可分为三类:自动提交事务:是默认的事务管理模式,每一条单独的T-SQL语句都自动地构成一个事务,例如,对数据的增、删、改语句。显式事务:每个事务均以bigin transaction语句显式开始,以commit或rollback语句显式结束。隐式事务:在前一个事务完成时新事务隐式开始,但每个事务仍以commi

12、t或rollback语句显式完成。,例:请说明下列事务操作的功能,use 学生成绩管理gobegin tran update 课程表 set 学分=学分+1 delete from 成绩表 where 成绩60commit trango注意:事务必须有明确的结束语句(commit或rollback两个语句中的一个)来结束。,例:用事务完成如下操作,向学生表中添加一条学生记录,然后将这个学生的选课情况插入到选课表中。,begin tran insert into 学生 values(2009101,李林,男,计算机,20)insert into 选课 values(2009101,C004,nu

13、ll)commitgo若将commit改为rollback,考虑会有什么样的结果,锁(Lock)是防止其他事务访问指定资源的手段,是多个用户能够同时操纵同一个数据库中的数据而不发生数据不一致现象的重要保障。当对一个数据源加锁后,此数据源就有了一定的访问限制,我们就称对此数据源进行了锁定。锁是由数据库系统自动提供的,一般情况下,用户不需要定制。,锁的基本概念,死锁是在多用户或多进程状况下,为使用同一资源而产生的无法解决的争用状态。死锁会造成资源的大量浪费,甚至会使系统崩溃。防止死锁的途径:尽量避免并发地执行涉及修改数据的语句。要求一个事务一次将要使用的数据全部加锁。预先规定一个加锁顺序。每个事务的执行时间不可太长。,死锁及处理,作业,设计一个事务,在教学库的选课表中插入一条记录,其值为(0102005,C004,78),如果C004号课程的选修人数在10人以下,则提交事务,否则撤销事务。,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号