T-SQL数据库编程-2

合集下载

第2章.使用T-SQL编程(理论)

第2章.使用T-SQL编程(理论)

2.2 逻辑运算符
ALL
用于比较特定值与结果集的所有值之间的逻辑关系,结果为布尔值。一般情 况下与比较运算符一起使用 特定值 {=|<>|!=|>|<|>=|<=|!<|!>} ALL(SELECT语句)
IF 2<=ALL(SELECT SkillLevel FROM Expertise) PRINT '全部员工技能都过了2级' ELSE PRINT '有员工技能不达标,还需要培训'
SELECT WorkDate AS 日期, COUNT(CASE WorkState WHEN '病假' THEN '0' END) AS 病假, COUNT(CASE WorkState WHEN '调休' THEN '0' END) AS 调休, COUNT(CASE WorkState WHEN '请假' THEN '0' END) AS 请假, COUNT(CASE WorkState WHEN '正常上班' THEN '0' END) AS 正常 上班, COUNT(CASE WorkState WHEN '加班' THEN '0' END) AS 加班, COUNT(CASE WorkState WHEN '休年假' THEN '0' END) AS 休年假, COUNT(CASE WorkState WHEN '休息' THEN '0' END) AS 休息, COUNT(CASE WorkState WHEN '其他' THEN '0' END) AS 其他 FROM TimeWork GROUP BY WorkDate ORDER BY WorkDate desc

实验二T-SQL语言基本操作

实验二T-SQL语言基本操作

实验二 T-SQL语言基本操作一.实验目的本实验主要了解T-SQL语句以及在查询分析器中执行T-SQL语句的方法。

通过本实验,读者将了解使用T-SQL语句创建数据库和数据表;掌握数据库查询语句Select语句的基本语法及使用方法;掌握对数据表进行数据插入、修改和删除的T-SQL语句;了解T-SQL语言的各种运算符、控制语句的功能并学会简单的程序编写。

二.实验环境●Microsoft SQL Server 2005 SSMS●Book数据库三.实验内容1.利用对象资源管理器中提供的“生成SQL脚本”命令编写Book数据库中数据表对象“T_Teacher”、“T_BookOrder”、“T_BookInfo”、“T_Publisher”、“T_Academy”创建的脚本文件D:\Table.sql。

实验参考步骤:1) 在对象资源管理器右单击Book数据库,选择“任务/生成脚本”菜单,进入“生成脚本”向导,选中“Book”数据库,并勾选“为所选数据库中的所有对象编写脚本”后,点击“下一步”按钮。

2) 在脚本选项对话框中点“下一步”,进入输出选项对话框,在其中选择输出文件3) 然后点“完成按钮”生成脚本文件。

2.在SSMS中,并建一个查询窗口,在其中输入以下T-SQL语句后,点“执行”按钮完成实验一中的第1题。

CREATE DATABASE BookON (NAME=Book_Data,FILENAME='C:\DBF\BOOK_Data.MDF',SIZE=5MB,MAXSIZE=50MB,FILEGROWTH=2MB)LOG ON (NAME=Book_log,FILENAME='C:\DBF\Book_Log.LDF',SIZE=5MB,MAXSIZE=100MB,FILEGROWTH=1MB)3.编写SELECT语句,建立以下查询1)显示T_BookInfo表中所有字段的值。

数据库T-SQL语言操作(T-SQL语句、数据库、表、视图、索引)

数据库T-SQL语言操作(T-SQL语句、数据库、表、视图、索引)

数据库T-SQL语⾔操作(T-SQL语句、数据库、表、视图、索引)T-SQL语⾔按⽤途分四部分1. 数据定义语⾔(CREATE,DROP,ALTER)2. 数据操作语⾔(INSERT,DELETE,UPDATE)3. 数据查询语⾔(SELECT)4. 数据控制语⾔(GRANT,REVOKE,DENY)数据类型1. 系统数据类型2. ⽤户⾃定义数据类型(建⽴⽅式:a.图形化⽅式 b.命令⽅式)1use TEST2EXEC sp_addtype sno,'varchar(10)','nonull'3EXEC sp_droptype sno变量命名规则:字母、下划线、@或#开头,但不能全为下划线、@或#不能为“关键字”,不能嵌⼊空格及其他特殊字符,如需使⽤则需要双引号或⽅括号括起1.局部变量:由⽤户声明,必须以@开头,只在定义该变量的过程中有效,局部变量必须先声明后使⽤注意:第⼀次声明变量时,其值设置为NULL。

局部变量不能使⽤“变量=变量值”的格式进⾏初始化,必须使⽤SELECT或SET语句来设置其初始值。

如果声明字符型的局部变量,⼀定要在变量类型中指明其最⼤长度,否则系统默认其长度为1。

若要声明多个局部变量,请在定义的第⼀个局部变量后使⽤⼀个逗号,然后指定下⼀个局部变量名称和数据类型。

1USE student2DECLARE@var1char(10),@var2int3SET@var1='number'4select@var2=cgrade5from sc6where sno='201810010'78print@var1+"s"2.全局变量:由系统定义,供SQL server系统内部使⽤的变量,任何程序任何时间都可以调⽤。

通常以“@@”开头。

T-SQL语句1.注释语句(1) --(2) /*……*/2.批处理--GO3.控制流程语句(1) begin...end语句(相当于C语⾔中的{} )(2) if...else语句(可嵌套)(3)case语句(多条件选择语句)(4)print语句(屏幕输出语句)(5)while语句(有条件的循环语句)(6)goto语句(⽆条件跳转语句)(7)break语句(8)continue语句4.常⽤函数(系统函数、⽤户⾃定义函数)⼀些系统函数:(1)字符串函数(2)数学函数(3)⽇期和时间函数(4)聚合函数注意:⽤户⾃定义函数:1.分类:标量值函数:返回单个值内联表值函数:返回可更新的表多语句表值函数:返回不可更新的表2.标量值函数命令⽅式创建1CREATE FUNCTION f2(@a real,@b real) 2RETURNS real3AS4BEGIN5IF@a>=@b6RETURN@a7RETURN@b8END910PRINT'最⼤值为'11PRINT dbo.f2(77,56)1CREATE FUNCTION f3(@n real)2RETURNS real3AS4BEGIN5DECLARE@i real,@sum real6SET@i=07SET@sum=08WHILE@i<@n9BEGIN10SET@i=@i+111SET@sum=@sum+@i12END13RETURN@sum14END1516PRINT dbo.f3(10)3.⾃定义函数的调⽤(1)标量值函数可以使⽤select、print、exec调⽤(2)表值函数只能⽤select调⽤4.删除⽅式drop function 函数名数据库数据库概述1.数据库常⽤对象:表、数据类型、视图、索引、存储过程、触发器系统数据库:master、model、tempdb、msdb2.数据库存储结构(数据库⽂件、数据库⽂件组):数据库⽂件:存放数据库数据和数据库对象的⽂件。

第3章:T-SQL 编程

第3章:T-SQL 编程

SQL Server Transact-SQL 编程T-SQL语句用于管理SQL Server数据库引擎实例,创建和管理数据库对象,以及查询、插入、修改和删除数据。

Ø 变量1、局部变量(Local Variable)局部变量是用户可以自定义的变量,它的作用范围是仅在程序内部,在程序中通常用来储存从表中查询到的数据或当做程序执行过程中的暂存变量。

使用局部变量必须以@开头,而且必须用declare命令后才能使用。

基本语法:声明变量declare @变量名变量类型 [@变量名变量类型]为变量赋值set @变量名 = 变量值;select @变量名 = 变量值;示例:--局部变量declare @id char(10)--声明一个长度的变量iddeclare @age int --声明一个int类型变量ageselect @id = 22 --赋值操作set @age = 55 --赋值操作print convert(char(10), @age) + '#' + @idselect @age, @idgo简单hello world示例declare @name varchar(20);declare @result varchar(200);set @name = 'jack';set @result = @name + ' say: hello world!';select @result;查询数据示例declare @id int, @name varchar(20);set @id = 1;select @name = name from student where id = @id;select @name;select赋值declare @name varchar(20);select @name = 'jack';select * from student where name = @name;从上面的示例可以看出,局部变量可用于程序中保存临时数据、传递数据。

数据库教学资料第6章t-sql语言基础PPT课件

数据库教学资料第6章t-sql语言基础PPT课件
详细描述
T-SQL是结构化查询语言(SQL)的一个扩展,专门针对Microsoft SQL Server数据库系统。它提供了许多额外 的功能和命令,使得对数据库的操作更加高效和强大。T-SQL具有丰富的语言特性,包括条件语句、循环语句、 存储过程、触发器等,可以用来执行复杂的查询、数据处理和数据库管理任务。
T-SQL语言还支持存储过程、触发 器、视图等高级功能,可以大大简 化复杂的业务逻辑和数据处理流程, 降低系统开发和维护成本。
T-SQL的未来发展前景
1
随着云计算、大数据等技术的快速发展,T-SQL 语言将继续发挥重要作用,支持更多的数据处理 场景和应用领域。
2
未来,T-SQL语言将不断演进和完善,支持更多 的数据类型、函数和操作符,提高数据处理效率 和安全性。
3
变量和常量的声明与赋值
使用DECLARE语句声明变量,使用SET或 SELECT语句为变量赋值。
流程控制语句
IF语句
用于根据条件执行不同的代码块。
WHILE语句
用于重复执行一段代码直到满足特定条件。
CASE语句
用于根据条件执行不同的代码块,类似于IF-ELSE结构。
GOTO语句
用于将程序控制转移到指定的标签位置。
使用存储过程和触发器
存储过程
使用CREATE PROCEDURE语句创建一个 存储过程,该过程可以包含一系列的TSQL语句,用于执行特定的数据库操作。
VS
触发器
使用CREATE TRIGGER语句创建一个触 发器,该触发器将在指定的事件(如 INSERT、UPDATE或DELETE操作)发生 时自动执行相应的操作。

同时,T-SQL语言将与新兴技术如人工智能、机 器学习等相结合,拓展其在数据分析、预测和智 能决策等领域的应用价值。

T-SQL编程(2)PPT精品文档30页

T-SQL编程(2)PPT精品文档30页
WHERE StuNo=‘07001’
【练习】 1、将学号为00000001的学生姓名保存到一个局部变量中 2、计算100与70之和。 3、查询与林斌同班的学生信息
2、全局变量
全局变量必须以标记 作为前缀,如version 全局变量由系统定义和维护,我们只能读取,不能修改 全局变量的值
全局变量通常存储一些SQL Server的配置设定值和效能统计数 据。用户可在程序中用全局变量来测试系统的设定值或者 Transact-SQL命令执行后的状态值。
3.4 批处理与流控语句
【引入生活范例】
我们执行SQL语句同样如此 SQL Server是网络数据库,一台服务器可能有很多远 程客户端,如果在客户端一次发送1条SQL语句,然后客 户返回结果;然后再发送1条SQL语句,再返回,效率太 低了。
批处理语句: 语句1 语句2 …… GO
客户端应用程序
SQL Server服务器
【声明局部变量】
DECLARE 变量名 变量类型[,变量名 变量类型…]
例如:
DECLARE name varchar(8),seat int
【赋值】 SET 变量名 =值
或 SELECT 变量名 = 值
例如SE:T语句一次只能给一个局部变量赋值,SELECT语句可以同时给多 个变量赋值S。ETSEnLaEmCTe通=‘常张用三于’从表中查询数据并赋值,且必须保证被 筛选出的记SE录L只EC有T一na条m,e=否St则uN取a最me后一FR条O。M Student
该语句的格式为: IF 条件表达式 语句块1 [ELSE
ELSE是可选部分 如果有多Байду номын сангаас语句,才需要
BEGIN-END语句块
语句块2]

TSQL编程2-过程

TSQL编程之二存储过程和触发器无论哪个计算机的编程工具,编写出好的子程序、一直是很多程序员的梦想。

C语言之所以流行一时,与C语言下庞大的函数库密不可分。

使用T-SQL语言,编程写出子程序/函数的手段,就是编写存储过程和触发器,下面逐一介绍。

一存储过程存储过程的格式是:CREATE PROCEDURE 存储过程名称 (参数) AS一些SQL语句例1有表AVGRADE,表结构如下:SDEPT VARCHAR(50)GRADE1 INTGRADE2 INTGRADE3 INTGRADE4 INTGRADE5 INT该表用来保存各个专业的平均成绩,其中GRADE1,…GRADE5,分别代表CNO=1-5号课程的平均成绩。

设计子程序或者函数的思想,和其他语言是一样的,子程序仅仅处理好一个专业一个课程的平均成绩即可,其余的,就让主程序循环吧。

于是有:CREATE PROC GETAVGRADE(@MYDEPT VARCHAR(20)) ASDECLARE @A1 INTDECLARE @A2 INTDECLARE @A3 INTDECLARE @A4 INTDECLARE @A5 INTDECLARE @S VARCHAR(100)SELECT @A1=AVG(GRADE) FROM SC WHERE CNO=1 AND SNO IN (SELECT SNO FROM STUDENT WHERE SDEPT=@MYDEPT)SELECT @A2=AVG(GRADE) FROM SC WHERE CNO=2 AND SNO IN (SELECT SNO FROM STUDENT WHERE SDEPT=@MYDEPT)SELECT @A3=AVG(GRADE) FROM SC WHERE CNO=3 AND SNO IN (SELECT SNO FROM STUDENT WHERE SDEPT=@MYDEPT)SELECT @A4=AVG(GRADE) FROM SC WHERE CNO=4 AND SNO IN (SELECT SNO FROM STUDENT WHERE SDEPT=@MYDEPT)SELECT @A5=AVG(GRADE) FROM SC WHERE CNO=5 AND SNO IN (SELECT SNO FROM STUDENT WHERE SDEPT=@MYDEPT)INSERT INTO AVGRADE(SDEPT,GRADE1, GRADE2, GRADE3, GRADE4, GRADE5) VALUES (@MYDEPT,@A1,@A2,@A3,@A4,@A5)注意此处,使用CREATE PROC、而不是CREATE PROCEDURE,这个写法也是正确的,这个存储过程有个参数@MYDEPT,就是所在院系。

第06章:T-SQL编程


变量名
@@ERROR @@IDENTITY


返回执行上一条Transact-SQL语句所返回的错误号 返回最后插入的标志值(自动产生的ID)
@@MAX_ CONNECTIONS @@ROWCOUNT @@SERVERNAME
@@SERVICENAME
返回SQL Server实例所允许同时连接的最大用户数
生成每个订单的订购人次和订单金额,并为订单表中相应的数据列赋 值。
流程控制语句(CASE)
CASE结构提供了比IF…ELSE结构更多的选择(switch)和 判断的机会,所以使用CASE语句可以很方便地实现多重选 择,从而避免了编写繁琐的多重IF…ELSE嵌套循环。
CASE语句分为简单表达式和选择表达式。
流程控制语句(CASE)
简单表达式
CASE input_expression WHEN when_expression THEN result_expression [ „n] [ELSE else_result_expression] END
实践练习
练习巩固上述语法
实践时间: 60分钟
使用T-SQL编程获取“国内短线游”线路信息,按照线路价格升序 显示线路编号、线路名和价格。 使用T-SQL编程输出“国内短线游”线路数、最高线路价格和最低 线路价格。 使用T-SQL编程输出价格最高的线路信息,要求显示线路名、行程 天数和价格。
T-SQL流程控制语句
IF…ELSE BEGIN…END 将多个SQL语句限制在其中,作为一个逻辑执行块。 至少包含一条SQL语句,否则将出错。
WHILE循环 CASE语句
流程控制语句(BEGIN„END)
DECLARE @years varchar(2),@name varchar(20)

02_使用T-SQL语言进行数据操作



表达式作为查询列
排 序 查 询
【例】查询课程表的课程信息,报名人 数与限选人数之比 【order by子句可以使用查询结果中改 变后的列标题进行排序】 【例】查询课程表的课程信息,报名人 数与限选人数之比,要求按照报名人数 与限选人数之比排序 【例】查询课程表的教师名、课程编号 、课程名、要求查询结果首先按照教师 名降序排序,教师名相同时,按照课程 编号升序排序。


其 它 比 较 运 算
使用between …and 【例】 查询编号在’20000001’ 到’20000005’之间的班级信息 select * from class where classno between ‘20000001’ and ‘20000005’ is null 【例】 查询教师未定的课程 select * from course where teacher is null

【练习】按课程类别分组统计各类 课程的门数,并给出课程总门数
分 组 查 询
练习:在Course表中查询各系 开设的课程的最大报名人数。 分组查询中限制条件:Having 子句 select kind,sum(willnum) from course group by kind having kind='人文' or kind=' 管理'
数据控制语言DCL:用来控制用户对数据库对象操作的权 限。主要的命令有: GRANT /*授予权限*/ REMOVE /*回收所授予的权限*/
20 7

基 本 知 识
实例数据库分析 Transact-SQL语言查询语句的标准格 式: SELECT 选择列表 FROM 表(视图)的列表 WHERE 查询的条件 【例】使用星号*显示表的所有列 如:从课程表中查询所有课程的信 息

第九章_T-SQL编程与应用2


数据库实用技术
为什么需要事务
例如,银行转账问题: 假定资金从账户A转到账户B,至少需要两步:
账户A的资金减少 然后账户B的资金相应增加
银行转账 账户A 账户B
数据库实用技术
为什么需要事务
假定张三的账户直接转账1000元到李四的账户
CREATE TABLE bank 创建账户表,存放用户的账户信息 ( customerName CHAR(10), --顾客姓名 currentMoney MONEY --当前余额 ) 添加约束:根据银行规定,账户 GO 余额不能少于1元,否则视为销 ALTER TABLE bank 户 ADD CONSTRAINT CK_currentMoney CHECK(currentMoney>=1) GO 张三开户,开户金额为1000元 ;李四开户,开户金额1元 INSERT INTO bank(customerName,currentMoney) VALUES('张三',1000) INSERT INTO bank(customerName,currentMoney) VALUES('李四',1)
数据库实用技术
为什么需要事务
目前两个账户的余额总和为:1000+1=1001元
数据库实用技术
为什么需要事务
模拟实现转账 :
从张三的账户转账1000元到李四的账户
/*--转账测试:张三转账1000元给李四--*/ 请问: --我们可能会这样这样编写语句 执行转账语句后,张三、李四的账户 --张三的账户少1000元,李四的账户多1000元 余额为多少? UPDATE bank SET currentMoney=currentMoney-1000 WHERE customerName='张三' UPDATE bank SET currentMoney=currentMoney+1000 WHERE customerName='李四' GO --再次查看转账后的结果。 SELECT * FROM bank 张三的账户没有减少 GO 但李四的账户却多了1000元 1000+1001=2001元 总额多出了1000元!
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
29
Transact-SQL数据库编程
流程控制语句 功能性语句
流程控制语句
1. 语句块(BEGIN…END)
语法如下:
BEGIN
<SQL语句或程序块> END
说明:
在t-sql中用begin……end来把多个t-sql语句连 成一个语句块,它的作用相当于和java中的大括号 { }。只要是流程控制语句中执行两条或者多条tsql语句的任何地方,都可以使用begin……end
commit
go 若将commit改为rollback,考虑会有什么样的结果
26
作业
设计一个事务,在教学库的选课表中插入一条记录, 其值为(‘0102005’,‘C004’,78),如果 C004号课程的选修人数在10人以下,则提交事务, 否则撤销事务。
BEGIN TRAN INSERT INTO 选课 VALUES('0102005','C001',78) DECLARE @NUM INT SELECT @NUM=COUNT(*) FROM 选课 WHERE 课程 号='C004' IF @NUM<5 COMMIT ELSE ROLLBACK GO
2
举例——语句块
begin……end常用于if语句和while语句中。如果if和 while语句只有一条t-sql语句的话可以不使用 begin……end,但是为了养成良好的习惯,建议只有 一条t-sql也要写上begin……end
begin……end语句可以嵌套使用。
注:每个t-sql语句后面没有逗号或是分号。
语句格式:
PRINT ‘文本’ | @局部变量 | @@全局变量 |字符串表达 式
尽管PRINT语句只可以显示字符串,但在T-SQL中提供 了很多的函数可以把其它的数据类型转化为字符串。 print '当前时间:'+convert(varchar(30),Getdate())
Convert函数可以将其他类型数据转化为字符串。
16
流程控制语句
8 延期执行语句(WAITFOR)
WAITFOR语句用来暂停程序执行,直到所设定的 等待时间已过或所设定的时刻已到,才继续往下执 行。 其数据类型必须为DATETIME 的,延迟时间和时刻 均采用‚HH:MM:SS”格式。
在WAITFOR语句中不能指定日期,并且时间长度 不能超过24小时。
10
另外一种写法:
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
13
While语句——举例
例:使用循环语句,计算1+2+…100的和。
declare @i int,@sum int
select @i=1,@sum=0 while(@i<=100) --括号也可以去掉 begin select @sum=@sum+@i select @i=@i+1 end print '1+2+...+100='
20
事务
事务的概念—— 事务是用户定义的一个数据库操作序列。这些操 作要么都执行,要么都不执行,是一个不可分割 的逻辑工作单元。 通常,一个程序中包含多个事务。
21
事务的应用
例:一个银行汇款业务:帐户A向账户B汇款(假 设为N元)。这个业务将包含如下两个操作。 第一个:账户A-N 第二个:账户A+N
18
功能性语句
1. 注释符 在T-SQL中,注释可以包含在批处理、存储过程、 触发器中。
有两种类型的注释符:
--:用于单行注释。 /*…*/:可以在程序中标识多行文字为注释语句
19
功能性语句
2.输出语句(PRINT)
通常是在用户屏幕上显示,显示的字符串最长可达 8000个字符,超出的任何字符均被截断。
12
While语句——举例
例如:我要在屏幕上打印 10次“你好”。
begin declare @i int set @i=0 while (@i<10) --在此判断@i的值是否小于10 begin print '你好' --如果@i小于10就打印一次‛你好‛ set @i=@i+1 --打印一次就让循环控制变量加一 --直到@i的值等于10时,结束循环 end end
返回语句可使程序从批处理、存储过程、触发器中 无条件退出,不再执行RETURN之后的任何语句。 语句格式:
RETURN ([整数值])
--在括号内可指定一个返回值。若 return语句后没有指 定返回值,系统会根据程序执行的结果返回一个内定值, 返回值为0表示程序执行成功。 --return语句返回值及含义见P218。
begin update 课程表 set 学分=4 where 课程号='00010001' update 课程表 set 学分=3 where 课程号 ='00020002' select 课程号,学分 from 课程表 end
3
流程控制语句
2.判断语句(IF…ELSE)
语法如下:
IF <条件表达式> <命令行或语句块1> [ ELSE <命令行或语句块2> ]
24
例:请说明下列事务操作的功能
use 学生成绩管理 go begin tran update 课程表 set 学分=学分+1 delete from 成绩表 where 成绩<60
commit tran
go
注意:事务必须有明确的结束语句(commit或 rollback两个语句中的一个)来结束。
CASE…WHEN结构可避免多重IF…ELSE语句嵌 套使用。有两种格式,其中第二种格式较常用。
格式语法如下:
CASE WHEN <条件1> THEN <结果1> WHEN <条件2> THEN <结果2 > …… [ELSE <其它结果>] END
8
举例——多分支判断语句
例:对学生成绩进行评定。
如果在第一个动作完成之后,第二个动作还没有完成 时,突然停电了,那么这个支付活动是不成功的。这 时正确的状态应该能够撤销第一个动作,并且希望系 统自动完成这个撤销操作。
这就是数据库中引入事务的原因。
22
事务的特性
事务必须具备4个特性:
原子性:指事务必须执行一个完整的操作,要么全做, 要么全不做。
一致性:指当事务的执行结果必须是数据库从一个一 致性状态变到另一个一致性状态。 隔离性:指并发执行的各事务之间不能互相干扰。
持久性:一个事务一旦提交,它对数据库的改变就是 永久性的。
23
事务编程
一个事务可能包括一条T-SQL语句,也可能包含多条 T-SQL语句。
事务可分为三类:
自动提交事务:是默认的事务管理模式,每一条单 独的T-SQL语句都自动地构成一个事务,例如,对 数据的增、删、改语句。 显式事务:每个事务均以bigin transaction语句 显式开始,以commit或rollback语句显式结束。 隐式事务:在前一个事务完成时新事务隐式开始, 但每个事务仍以commit或rollback语句显式完成。
例:检查学号为0202003的同学是否有课程号 C001的成绩。
if exists (select * from 选课 where 学生号=‘0202003' and 课程号=‘C001') print '有这门课的成绩' else print '没有这门课的成绩' go
7
流程控制语句
4.多分支判断语句(CASE…WHEN)
print @sum
14
Байду номын сангаас
流程控制语句
6.跳转语句(GOTO)
可以改变程序执行的流程,使程序跳到标有标识符的 指定程序行,再继续往下执行; 标识符可以是数字与字符的组合,但必须以‚:”结尾。 语法如下:
标识符:
… GOTO 标识符
一般尽量避免使用goto语句
15
流程控制语句
7.返回语句(RETURN)
11
流程控制语句
5.循环语句(WHILE)
有些时候需要重复执行某些t-sql语句,利用while语句 可以很好的达到我们的目的。
语法如下:
WHILE <条件表达式> BEGIN <命令行或程序块> [BREAK] [CONTINUE] [命令行或程序块] END
Break 与continue 有什么区别?
说明:
else子句是可选的,最简单的if语句没有else子句部分 if…else可以进行嵌套。
4
举例——判断语句
例:计算学号为0202003的学生的平均成绩,如果成绩 >=60分,则显示及格,否则显示不及格。
declare @cj_avg int select @cj_avg=avg(成绩) from 选课 where 学生号= '0202003' print '平均成绩:' print @cj_avg if @cj_avg>=60 --if后的条件可以不加括号。 print '平均成绩及格' else print '平均成绩不及格' go
相关文档
最新文档