您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > 数据库原理及应用---第8章 T-SQL编程与应用
数据库原理及应用数据库原理及应用AnIntroductiontoDatabaseSystem数据库原理及应用数据库系统概论AnIntroductiontoDatabaseSystem第8章T-SQL编程与应用数据库原理及应用教学目标:•了解T-SQL的基本知识,•掌握表达式中典型的函数应用,•掌握T-SQL常用的语句以及简单应用。数据库原理及应用第8章T-SQL编程与应用•8.1T-SQL语言基础•8.2表达式•8.3流程控制语句•8.4CASE表达式数据库原理及应用8.1T-SQL语言基础•8.1.1T-SQL语言的编程功能•8.1.2标识符•8.1.3注释数据库原理及应用8.1.3注释不执行语句。注释多行/*fshjhfjkshfjsdhfsdjffsjdkfljskdlfjkldsfjkdslfjfjfj*/注释单行--ghjfghkfdjhgkfhgjfdhgkgjfdh数据库原理及应用8.1.1T-SQL语言的编程功能1.基本功能支持ANSISQL-92标准:DDL,DML,DCL,DD2.扩展功能加入程序流程控制结构加入局部变量,系统变量等数据库原理及应用8.1.2标识符1.标识符分类常规标识符(严格遵守标识符格式规则)界定标识符(引号’或方括号[])2.标识符格式规则字母或_、@、#开头的字母数字或_、@、$序列不与保留字相同长度小于128*不符合规则的标识符必须加以界定(双引号””或方括号[])3.对象命名规则服务器名.数据库名.拥有者名.对象名数据库原理及应用8.2表达式•8.2.1数据类型•8.2.2变量•8.2.3函数•8.2.4运算符数据库原理及应用8.2.1数据类型•在SQLServer2005中,每个列、局部变量、表达式和参数都具有一个相关的数据类型。数据类型是一种属性,用于指定对象可保存的数据的类型:整数数据、字符数据、货币数据、日期和时间数据、二进制字符串等。数据库原理及应用8.2.2变量•局部变量作用域:批处理、存储过程或触发器内。(1)声明DECLARE{@变量名数据类型,@变量名数据类型}(2)赋值格式:SELECT@变量名=表达式/SELECT子句(最后一个值或空)数据库原理及应用8.2.2变量例:SELECT命令赋值,执行脚本USELibraryGODECLARE@var1varchar(8)--声明局部变量SELECT@var1='读者姓名'--为局部变量赋值SELECT@var1=Rname--查询结果赋值给变量FROMReaderWHERERID='2003216008'SELECT@var1as'读者姓名'--显示局部变量结果数据库原理及应用8.2.2变量例:SELECT命令赋值,多个返回值中取最后一个USELibraryDECLARE@var1varchar(8)SELECT@var1='读者姓名'SELECT@var1=Rname--查询结果赋值FROMReaderSELECT@var1AS'读者姓名'--显示局部变量的结果数据库原理及应用8.2.2变量例:SET命令赋值USELibraryDECLARE@novarchar(10)SET@no='2004060003'--变量赋值SELECTRID,RnameFROMReaderWHERERID=@noGO数据库原理及应用8.2.2变量•全局变量@@变量名记录SQLServer服务器活动状态的一组数据,系统提供的30个全局变量。例:显示SQLServer的版本。Select@@version数据库原理及应用8.2.3函数•SQLServer2005提供了一些内置函数,用户可以使用这些函数方便的实现一些功能。以下举例说明一些常用的函数,其他函数请参考联机手册数据库原理及应用8.2.3函数•聚合函数:COUNT,SUM,AVG,MAX,MIN例:查询出图书中价格最高的图书USELibraryGOSELECTMAX(Price)FROMBook数据库原理及应用8.2.3函数•日期时间函数DATEADD():返回加上一个时间的新时间例:返回2007-3-24下午3点+4小时后的新时间DECLARE@OLDTimedatetimeSET@OLDTime='2007-3-2415:00:00'SELECTDATEADD(hh,4,@OldTime)数据库原理及应用8.2.3函数•DATEDIFF():两时间之差例:返回2006-3-24下午3点与下午3点33分的时间差,并以ms为单位显示。DECLARE@FirstTimedatetime,@SecondTimedatetimeSET@FirstTime='2006-3-2415:00:00'SET@SecondTime='2006-3-2415:33:00'SELECTDATEDIFF(ms,@FirstTime,@SecondTime)数据库原理及应用8.2.3函数•字符函数ASCII()例:返回字符串的ASCII码。DECLARE@StringTestchar(10)SET@StringTest=ASCII(‘Robin’)SELECT@StringTest数据库原理及应用8.2.3函数•字符函数例:返回下列字符中从左起3个字符的小写形式。DECLARE@StringTestchar(10)SET@StringTest=’Robin’SELECTLOWER(LEFT(@StringTest,3))数据库原理及应用8.2.3函数•空值置换函数ISNULL(空值,指定的空值),用指定的值代替空值。例20:用“空值置换”4个中文字符代替reader表中lendnum列中的空值。USELibraryGOSELECTLendnum,ISNULL(Lendnum,0)AS空值置换FROMReaderWHEREISNULL(Lendnum,0)=0GO数据库原理及应用8.2.4运算符优先级运算符类别所包含运算符1一元运算符+(正)、-(负)、~(取反)2算术运算符*(乖)、/(除)、%(取模)3算术字符串运算符+(加)、-(减)、+(连接)4比较运算符=(等于)、(大于)、=(大于等于)、(小于)、=(小于等于)、(或!=不等于)、!(不小于)、!(不大于)5按位运算符&(位与)、|(位或)、^(位异或)6逻辑运算符not(非)7逻辑运算符and(与)8逻辑运算符all(所有)、any(任意一个)、between(两者之间)、exists(存在)、in(在范围内)、like(匹配)、or(或)、some(任意一个)9赋值运算符=(赋值)数据库原理及应用8.3流程控制语句•8.3.1IF…ELSE语句•8.3.2WHILE语句•8.3.3GOTO语句•8.3.4WAITFOR语句数据库原理及应用8.3.1IF…ELSE语句•语法:IFBoolean_expression/*条件表达式*/{sql_statement|statement_block}/*条件表达式为TRUE时执行*/[ELSE{sql_statement|statement_block}]/*条件表达式为FALSE时执行*/数据库原理及应用8.3.1IF…ELSE语句•例:IF查询图书中有没有英语书。USELibraryGO--如果图书中有英语书,统计其数量,否则显示没有英语书IFexists(SELECT*FROMBookWHEREBname='英语')SELECTCOUNT(*)AS英语图书数量FROMBookWHEREBname='英语'ELSEPRINT'数据库中没有英语书'数据库原理及应用8.3.1IF…ELSE语句USELibraryGOIFexists(SELECT*FROMBookWHEREBname='英语')SELECTCOUNT(*)AS英语图书数量FROMBookWHEREBname='英语'ELSEIFexists(SELECT*FROMBookWHEREBname='SQLServer2005基础教程')SELECTCOUNT(*)ASSQLServer2005基础教程FROMBookWHEREBname='SQLServer2005基础教程'ELSEPRINT'英语和SQLServer2005基础教程两种书都没有!'数据库原理及应用8.3.1IF…ELSE语句BEGINGEND图书查询USELibraryGODECLARE@ebookint,@cbookintIFexists(SELECT*FROMBookWHEREBname='英语')BEGINSELECT@ebook=COUNT(*)FROMBookWHEREBname='英语'PRINT'英语书数量'+RTRIM(CAST(@ebookASchar(4)))+'册'/*CAST:转换数据类型,RTRIM:去右空格*/ENDELSEPRINT'英语书没有!'IFexists(SELECT*FROMBookWHEREBname='SQLServer2005基础教程')BEGINSELECT@cbook=COUNT(*)FROMBookWHEREBname='SQLServer2005基础教程'PRINT'SQLServer2005基础教程'+RTRIM(CAST(@cbookASchar(4)))+'册'ENDELSEPRINT'SQLServer2005基础教程没有!'数据库原理及应用8.3.2WHILE语句•语法:WHILE逻辑表达式BeginT-SQL语句组[break]/*终止整个语句的执行*/[continue]/*结束一次循环体的执行*/END数据库原理及应用8.3.2WHILE语句例24:一个小循环程序DECLARE@XintSET@X=0WHILE@x3BEGINSET@x=@X+1PRINT'x='+convert(char(1),@x)--类型转换函数convertENDGO数据库原理及应用8.3.3GOTO语句•GOTO语句将执行语句无条件跳转到标签处,并从标签位置继续处理。GOTO语句和标签可在过程、批处理或语句块中的任何位置使用。其语法格式为:•GOTOlabel数据库原理及应用8.3.4WAITFOR语句•WAITFOR语句,称为延迟语句,设定在达到指定时间或时间间隔之前,或者指定语句至少修改或返回一行之前,阻止执行批处理、存储过程或事务。其语法格式为:WAITFOR{DELAY'time_to_pass'/*设定等待时间*/|TIME'time_to_execute'/*设定等待带某一时刻*/}数据库原理及应用8.3.4WAITFOR语句•例:延迟30秒执行查询。USELibraryGOWAITFORDELAY’00:00:30’SELECT*FROMReader数据库原理及应用8.3.4WAITFOR语句例:在时刻21:20:00执行查询。USELibraryGOWAITFORTIME'21:20:00'SELECT*FROMReader数据库原理及应用8.3.5RETURN语句•RETURN语句从查询或过程中无条件退出。RETURN的执行是即时且完全的,可在任何时候用于从过程、批处理或语句块中退出。RETURN之后的语句是不执行的。如果用于存储过程,RETURN不能返回空值。其语法格式为:•RETURN[integer_expression]数据库原理及应用8.4CASE表达式•计算条件列表并返回多个可能结果表达式之一。•CASE具有两种格式:简单CASE函数将某个表达式与一组简单表达式进行比较以确定结果。CASE搜索函数计算一组布尔表达式以确定结果数据库原理及应用8.4CASE表达式•简单式CASE表达式WHEN表达式的值1THEN返回表达式1WHEN表达式的值2THEN返回表达式2…ELSE返回表达式nEND数据库原理及应用8.4CASE表达式例:显示各读者可借书的数量。USELibraryGOSELECTRname,rt.TypenameAS类型,限借阅量=CASEr.Ty
本文标题:数据库原理及应用---第8章 T-SQL编程与应用
链接地址:https://www.777doc.com/doc-3181833 .html