数据库原理及应用---第8章T-SQL编程与应用.ppt_第1页
数据库原理及应用---第8章T-SQL编程与应用.ppt_第2页
数据库原理及应用---第8章T-SQL编程与应用.ppt_第3页
数据库原理及应用---第8章T-SQL编程与应用.ppt_第4页
数据库原理及应用---第8章T-SQL编程与应用.ppt_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数据库原理及应用 An Introduction to Database System,数据库系统概论 An Introduction to Database System 第8章T-SQL编程与应用,教学目标:,了解T-SQL的基本知识, 掌握表达式中典型的函数应用, 掌握T-SQL常用的语句以及简单应用。,第8章T-SQL编程与应用,8.1T-SQL语言基础 8.2表达式 8.3流程控制语句 8.4CASE表达式,8.1T-SQL语言基础,8.1.1 T-SQL语言的编程功能 8.1.2标识符 8.1.3注释,8.1.3注释,不执行语句。 注释多行 /* fshjhfjkshfjsdhfsdjf fsjdkfljskdlfjkldsfjkdslfjfjfj */ 注释单行 -ghjfghkfdjhgkfhgjfdhgkgjfdh,8.1.1 T-SQL语言的编程功能,1.基本功能 支持ANSI SQL-92标准:DDL,DML,DCL,DD 2.扩展功能 加入程序流程控制结构 加入局部变量,系统变量等,8.1.2标识符,1.标识符分类 常规标识符(严格遵守标识符格式规则) 界定标识符(引号或方括号) 2.标识符格式规则 字母或_、开头的字母数字或_、$序列 不与保留字相同 长度小于128 *不符合规则的标识符必须加以界定(双引号”或方括号) 3.对象命名规则 服务器名.数据库名.拥有者名.对象名,8.2表达式,8.2.1数据类型 8.2.2变量 8.2.3函数 8.2.4运算符,8.2.1数据类型,在 SQL Server 2005 中,每个列、局部变量、表达式和参数都具有一个相关的数据类型。数据类型是一种属性,用于指定对象可保存的数据的类型:整数数据、字符数据、货币数据、日期和时间数据、二进制字符串等。,8.2.2变量,局部变量 作用域:批处理、存储过程或触发器内。 (1)声明 DECLARE 变量名 数据类型,变量名 数据类型 (2)赋值 格式:SELECT 变量名=表达式/SELECT 子句(最后一个值或空),8.2.2变量,例:SELECT命令赋值,执行脚本 USE Library GO DECLARE var1 varchar(8) -声明局部变量 SELECT var1=读者姓名 -为局部变量赋值 SELECT var1=Rname -查询结果赋值给变量 FROM Reader WHERE RID=2003216008 SELECT var1 as 读者姓名 -显示局部变量结果,8.2.2变量,例:SELECT命令赋值,多个返回值中取最后一个 USE Library DECLARE var1 varchar(8) SELECT var1=读者姓名 SELECT var1=Rname -查询结果赋值 FROM Reader SELECT var1 AS 读者姓名 -显示局部变量的结果,8.2.2变量,例:SET命令赋值 USE Library DECLARE no varchar(10) SET no=2004060003 -变量赋值 SELECT RID,Rname FROM Reader WHERE RID=no GO,8.2.2变量,全局变量 变量名 记录SQL Server服务器活动状态的一组数据,系统提供的30个全局变量。 例:显示SQL Server的版本。 Select version,8.2.3函数,SQL Server 2005 提供了一些内置函数,用户可以使用这些函数方便的实现一些功能。以下举例说明一些常用的函数,其他函数请参考联机手册,8.2.3函数,聚合函数:COUNT ,SUM ,AVG,MAX,MIN 例:查询出图书中价格最高的图书 USE Library GO SELECT MAX(Price) FROM Book,8.2.3函数,日期时间函数 DATEADD():返回加上一个时间的新时间 例:返回2007-3-24 下午3点+4小时后的新时间 DECLARE OLDTime datetime SET OLDTime=2007-3-24 15:00:00 SELECT DATEADD(hh,4,OldTime),8.2.3函数,DATEDIFF():两时间之差 例:返回2006-3-24 下午3点与下午3点33分的时间差,并以ms为单位显示。 DECLARE FirstTime datetime, SecondTime datetime SET FirstTime=2006-3-24 15:00:00 SET SecondTime=2006-3-24 15:33:00 SELECT DATEDIFF(ms,FirstTime,SecondTime),8.2.3函数,字符函数 ASCII() 例:返回字符串的ASCII码。 DECLARE StringTest char(10) SET StringTest=ASCII(Robin) SELECT StringTest,8.2.3函数,字符函数 例:返回下列字符中从左起3个字符的小写形式。 DECLARE StringTest char(10) SET StringTest=Robin SELECT LOWER(LEFT(StringTest,3),8.2.3函数,空值置换函数ISNULL(空值,指定的空值),用指定的值代替空值。 例20:用“空值置换”4个中文字符代替reader表中lendnum列中的空值。 USE Library GO SELECT Lendnum,ISNULL(Lendnum,0) AS 空值置换 FROM Reader WHERE ISNULL(Lendnum,0)=0 GO,8.2.4运算符,8.3流程控制语句,8.3.1IFELSE语句 8.3.2WHILE语句 8.3.3GOTO语句 8.3.4WAITFOR语句,8.3.1IFELSE语句,语法: IF Boolean_expression /* 条件表达式 */ sql_statement | statement_block /* 条件表达式为TRUE时执行 */ ELSE sql_statement | statement_block /* 条件表达式为FALSE时执行 */,8.3.1IFELSE语句,例:IF查询图书中有没有英语书。 USE Library GO -如果图书中有英语书,统计其数量,否则显示没有英语书 IF exists(SELECT * FROM Book WHERE Bname=英语) SELECT COUNT(*) AS 英语图书数量 FROM Book WHERE Bname=英语 ELSE PRINT 数据库中没有英语书,8.3.1IFELSE语句,USE Library GO IF exists(SELECT * FROM Book WHERE Bname=英语) SELECT COUNT(*) AS 英语图书数量 FROM Book WHERE Bname=英语 ELSE IF exists(SELECT * FROM Book WHERE Bname=SQL Server 2005基础教程) SELECT COUNT(*) AS SQLServer2005基础教程 FROM Book WHERE Bname=SQL Server 2005基础教程 ELSE PRINT 英语和SQL Server 2005基础教程两种书都没有!,8.3.1IFELSE语句,BEGING END图书查询 USE Library GO DECLARE ebook int,cbook int IF exists(SELECT * FROM Book WHERE Bname=英语) BEGIN SELECT ebook=COUNT(*) FROM Book WHERE Bname=英语 PRINT 英语书数量+RTRIM(CAST(ebook AS char(4)+册 /*CAST:转换数据类型,RTRIM:去右空格*/ END ELSE PRINT 英语书没有! IF exists(SELECT * FROM Book WHERE Bname=SQL Server 2005基础教程) BEGIN SELECT cbook=COUNT(*) FROM Book WHERE Bname=SQL Server 2005基础教程 PRINT SQL Server 2005基础教程+RTRIM(CAST(cbook AS char(4)+册 END ELSE PRINT SQL Server 2005基础教程没有!,8.3.2WHILE语句,语法: WHILE 逻辑表达式 Begin T-SQL语句组 break/*终止整个语句的执行*/ continue/*结束一次循环体的执行*/ END,8.3.2WHILE语句,例24:一个小循环程序 DECLARE X int SET X=0 WHILE x3 BEGIN SET x=X+1 PRINT x=+convert(char(1),x) -类型转换函数convert END GO,8.3.3GOTO语句,GOTO语句将执行语句无条件跳转到标签处,并从标签位置继续处理。GOTO语句和标签可在过程、批处理或语句块中的任何位置使用。其语法格式为: GOTO label,8.3.4WAITFOR语句,WAITFOR语句,称为延迟语句,设定在达到指定时间或时间间隔之前,或者指定语句至少修改或返回一行之前,阻止执行批处理、存储过程或事务。其语法格式为: WAITFOR DELAY time_to_pass /* 设定等待时间 */ | TIME time_to_execute /* 设定等待带某一时刻 */ ,8.3.4WAITFOR语句,例:延迟30秒执行查询。 USE Library GO WAITFOR DELAY 00:00:30 SELECT * FROM Reader,8.3.4WAITFOR语句,例:在时刻21:20:00执行查询。 USE Library GO WAITFOR TIME 21:20:00 SELECT * FROM Reader,8.3.5RETURN语句,RETURN语句从查询或过程中无条件退出。RETURN的执行是即时且完全的,可在任何时候用于从过程、批处理或语句块中退出。RETURN之后的语句是不执行的。如果用于存储过程,RETURN不能返回空值。其语法格式为: RETURN integer_expression ,8.4CASE表达式,计算条件列表并返回多个可能结果表达式之一。 CASE 具有两种格式: 简单 CASE 函数将某个表达式与一组简单表达式进行比较以确定结果。 CASE 搜索函数计算一组布尔表达式以确定结果,8.4CASE表达式,简单式 CASE 表达式 WHEN 表达式的值1 THEN 返回表达式1 WHEN 表达式的值2 THEN 返回表达式2 ELSE 返回表达式n END,8.4CASE表达式,例:显示各读者可借书的数量。 USE Library GO SELECT Rname,rt.Typename AS 类型,限借阅量= CASE r.TypeID WHEN 3 THEN 可以借本书! WHEN 2 THEN 可以借本书! WHEN 1 THEN 可以借本书! ELSE 无规定 END FROM Reader r,ReaderType rt WHERE r.TypeID=rt.TypeID,8.4CASE表达式,搜索式 CASE WHEN 逻辑表达式1 THEN 返回表达式1 WHEN 逻辑表达式2 THEN 返回表达式

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论