数据库原理与应用SQL-Server第8章ppt课件.ppt_第1页
数据库原理与应用SQL-Server第8章ppt课件.ppt_第2页
数据库原理与应用SQL-Server第8章ppt课件.ppt_第3页
数据库原理与应用SQL-Server第8章ppt课件.ppt_第4页
数据库原理与应用SQL-Server第8章ppt课件.ppt_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

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

文档简介

网络数据库第8章 8 T SQL编程与应用 目标 掌握T SQL语言基础掌握表达式的使用掌握流程控制语句的使用熟练掌握CASE表达式的应用 2 8 1T SQL语言基础 1 3 8 1 1T SQL语言的编程功能 基本功能支持ANSISQL 92标准 DDL DML DCL DD扩展功能加入程序流程控制结构加入局部变量 系统变量等 4 8 1 2标识符 标识符分类常规标识符 严格遵守标识符格式规则 界定标识符 引号 或方括号 标识符格式规则字母或 开头的字母数字或 序列不与保留字相同长度小于124 不符合规则的标识符必须加以界定 双引号 或方括号 对象命名规则服务器名 数据库名 拥有者名 对象名 5 8 1 3注释 不执行语句 注释多行 fshjhfjkshfjsdhfsdjffsjdkfljskdlfjkldsfjkdslfjfjfj 注释单行 ghjfghkfdjhgkfhgjfdhgkgjfdh 6 8 2表达式 数据类型变量函数运算符 7 8 2 1数据类型 在SQLServer中 每个列 局部变量 表达式和参数都具有一个相关的数据类型 数据类型是一种属性 用于指定对象可保存的数据的类型 整数数据 字符数据 货币数据 日期和时间数据 二进制字符串等 第5章已进行了较为详细的介绍 此处不再赘述 8 8 2 2变量 局部变量作用域 批处理 存储过程或触发器内 声明DECLARE 变量名数据类型 变量名数据类型 变量名必须以at符 开头 局部变量名必须符合有关标识符的规则 数据类型 是系统提供的类型 CLR用户定义类型或别名数据类型 变量不能是text ntext或image数据类型 9 8 2 2变量 赋值格式 SELECT 变量名 表达式 SELECT子句 最后一个值或空 例8 1 SELECT命令赋值 执行脚本USELibraryGODECLARE var1varchar 4 声明局部变量SELECT var1 读者姓名 为局部变量赋值SELECT var1 Rname 查询结果赋值给变量FROMReaderWHERERID 3216004 SELECT var1as 读者姓名 显示局部变量结果执行结果 10 8 2 2变量 例8 2 SELECT命令赋值 多个返回值中取最后一个USELibraryDECLARE var1varchar 4 SELECT var1 读者姓名 SELECT var1 Rname 查询结果赋值FROMReaderSELECT var1AS 读者姓名 显示局部变量的结果执行结果 格式 SET 变量名 表达式 11 8 2 2变量 例8 3 SET命令赋值执行结果 USELibraryDECLARE novarchar 10 SET no 4060003 变量赋值SELECTRID RnameFROMReaderWHERERID noGO 12 8 2 2变量 全局变量 变量名记录SQLServer服务器活动状态的一组数据 系统提供的30个全局变量 例8 4 显示SQLServer的版本 13 8 2 3函数 sqlserver提供了一些内置函数 用户可以使用这些函数方便的实现一些功能 以下举例说明一些常用的函数 其他函数请参考联机手册 聚合函数COUNT SUM AVG MAX MIN在第6章介绍过 例 查询出图书中价格最高的图书USELibraryGOSELECTMAX Price FROMBook 14 8 2 3函数 日期时间函数DATEADD 返回加上一个时间的新时间DECLARE OLDTimedatetimeSET OLDTime 03 24 73 00PM SELECTDATEADD hh 4 OldTime 15 8 2 3函数 DATEDIFF 两时间之差DECLARE FirstTimedatetime SecondTimedatetimeSET FirstTime 4 05 2314 25 10 SET SecondTime 4 05 2414 25 10 SELECTDATEDIFF ms FirstTime SecondTime 16 8 2 3函数 DATENAME 返回年月日星期等字符串 DECLARE StatementDatedatetimeSET StatementDate 4 05 2314 25 10 SELECTDATENAME dw StatementDate 17 8 2 3函数 DATEPART 返回部分日期DECLARE WhatsTheDaydatetimeSET WhatsTheDay 23 05 073 00PM SELECTCAST DATEPART yyyy WhatsTheDay ASchar 4 年 CAST DATEPART mm WhatsTheDay ASchar 2 月 CAST DATEPART dd WhatsTheDay ASvarchar 2 日 18 8 2 3函数 字符函数ASCII DECLARE StringTestchar 10 SET StringTest ASCII Robin SELECT StringTestCHAR DECLARE StringTestchar 10 SET StringTest ASCII Robin SELECTCHAR StringTest 19 8 2 3函数 LEFT DECLARE StringTestchar 10 SET StringTest Robin SELECTLEFT StringTest 3 LOWER DECLARE StringTestchar 10 SET StringTest Robin SELETLOWER LEFT StringTest 3 LTRIM DECLARE StringTestchar 10 SET StringTest Robin SELECT Start LTRIM StringTest Start StringTest 20 8 2 3函数 RIGHT DECLARE StringTestchar 10 SET StringTest Robin SELECTRIGHT StringTest 3 RTRIM DECLARE StringTestchar 10 SET StringTest Robin SELECT StringTest End RTRIM StringTest End STR SELECT A 42SELECT A STR 42 SELECT A LTRIM STR 42 21 8 2 3函数 SUBSTRING DECLARE StringTestchar 10 SET StringTest Robin SELECTSUBSTRING StringTest 3 LEN StringTest UPPER DECLARE StringTestchar 10 SET StringTest Robin SELECTUPPER StringTest 22 8 2 3函数 8 空值置换函数ISNULL 空值 指定的空值 用指定的值代替空值 USELibraryGOSELECTLendnum ISNULL Lendnum 0 AS空值置换FROMReaderWHEREISNULL Lendnum 0 0GO查询结果 23 8 2 4运算符 24 8 3流程控制语句 T SQL语言支持基本的流控制逻辑 它允许按照给定的某种条件执行程序流和分支 T SQL提供的控制流有 IF ELSE分支 CASE多重分支 WHILE循环结构 GOTO语句 WAITFOR语句和RETURN语句 25 8 3 1IF ELSE语句 制定T SQL语句的执行条件 如果满足条件 则在IF关键字及其条件之后执行T SQL语句 布尔表达式返回TRUE 可选的ELSE关键字引入另一个T SQL语句 当不满足IF条件时就执行该语句 布尔表达式返回FALSE 语法 IFBoolean expression 条件表达式 sql statement statement block 条件表达式为TRUE时执行 ELSE sql statement statement block 条件表达式为FALSE时执行 26 8 3 1IF ELSE语句 例8 9 IF查询图书中有没有英语书 USELibraryGO 如果图书中有英语书 统计其数量 否则显示没有英语书IFexists SELECT FROMBookWHEREBname 英语 SELECTCOUNT AS英语图书数量FROMBookWHEREBname 英语 ELSEPRINT 数据库中没有英语书 GO执行结果 数据库中没有英语书 27 8 3 1IF ELSE语句 例8 10 嵌套IF图书查询USELibraryGOIFexists SELECT FROMBookWHEREBname 英语 SELECTCOUNT AS英语图书数量FROMBookWHEREBname 英语 ELSEIFexists SELECT FROMBookWHEREBname sqlserver5基础教程 SELECTCOUNT ASSQLServer0基础教程FROMBookWHEREBname sqlserver5基础教程 28 8 3 1IF ELSE语句 ELSEPRINT 英语和sqlserver5基础教程两种书都没有 GO执行结果 在实际程序中 IF ELSE语句中不止包含一条语句 而是一组的SQL语句 为了可以一次执行一组SQL语句 这时就需要使用BEGIN END语句将多条语句封闭起来 其语法格式为 BEGIN sql statement statement block 语句块 END说明 BEGIN END语句块允许嵌套 29 8 3 1IF ELSE语句 例8 11 BEGINGEND图书查询USELibraryGODECLARE ebookint cbookintIFexists SELECT FROMBookWHEREBname 英语 BEGINSELECT ebook COUNT FROMBookWHEREBname 英语 PRINT 英语书数量 RTRIM CAST ebookASchar 4 册 CAST 转换数据类型 RTRIM 去右空格 ENDELSEPRINT 英语书没有 30 8 3 1IF ELSE语句 IFexists SELECT FROMBookWHEREBname sqlserver5基础教程 BEGINSELECT cbook COUNT FROMBookWHEREBname sqlserver5基础教程 PRINT sqlserver5基础教程 RTRIM CAST cbookASchar 4 册 ENDELSEPRINT sqlserver5基础教程没有 GO执行结果 英语书没有 sqlserver5基础教程2册 31 8 3 2WHILE语句 设置重复执行SQL语句或语句块的条件 只要指定的条件为真 就重复执行语句 可以使用BREAK和CONTINUE关键字在循环内部控制WHILE循环中语句的执行 语法 WHILE逻辑表达式BeginT SQL语句组 break 终止整个语句的执行 continue 结束一次循环体的执行 END备注 如果嵌套了两个或多个WHILE循环 则内层的BREAK将退出到下一个外层循环 将首先运行内层循环结束之后的所有语句 然后重新开始下一个外层循环 32 8 3 2WHILE语句 例8 12 一个小循环程序DECLARE XintSET X 0WHILE x 3BEGINSET x X 1PRINT x convert char 1 x 类型转换函数convertENDGO执行结果 x 1x 2x 3 33 8 3 3GOTO语句 GOTO语句将执行语句无条件跳转到标签处 并从标签位置继续处理 GOTO语句和标签可在过程 批处理或语句块中的任何位置使用 其语法格式为 GOTOlabel 34 8 3 4WAITFOR语句 WAITFOR语句 称为延迟语句 设定在达到指定时间或时间间隔之前 或者指定语句至少修改或返回一行之前 阻止执行批处理 存储过程或事务 其语法格式为 WAITFOR DELAY time to pass 设定等待时间 TIME time to execute 设定等待带某一时刻 备注 执行WAITFOR语句时 事务正在运行 并且其他请求不能在同一事务下运行 WAITFOR不更改查询的语义 如果查询不能返回任何行 WAITFOR将一直等待 或等到满足TIMEOUT条件 如果已指定 35 8 3 4WAITFOR语句 例8 13 延迟30秒执行查询 USELibraryGOWAITFORDELAY 00 00 30 SELECT FROMReader例8 14 在时刻21 20 00执行查询 USELibraryGOWAITFORTIME 21 20 00 SELECT FROMReader 36 8 3 5RETURN语句 RETURN语句从查询或过程中无条件退出 RETURN的执行是即时且完全的 可在任何时候用于从过程 批处理或语句块中退出 RETURN之后的语句是不执行的 如果用于存储过程 RETURN不能返回空值 其语法格式为 RETURN integer expression 37 8 4CASE表达式 计算条件列表并返回多个可能结果表达式之一 CASE具有两种格式 简单CASE函数将某个表达式与一组简单表

温馨提示

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

评论

0/150

提交评论