SlideShare a Scribd company logo
1 of 144
第 9 章  Transact-SQL 程序设计
本章内容 ,[object Object],[object Object],[object Object],[object Object]
9.1  数据与表达式 ,[object Object],[object Object],[object Object]
9.1.1  用户定义数据类型 ,[object Object],[object Object],[object Object],[object Object],[object Object],9.1  数据与表达式
例如,为 Sales 数据库创建—个不允许为 NULL 值的 test_add 用户定义数据类型。 ,[object Object],[object Object],[object Object],[object Object],[object Object],9.1.1  用户定义数据类型
2 .使用企业管理器创建用户定义数据类型 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],9.1.1  用户定义数据类型
9.1.2  常量与变量 ,[object Object],[object Object],9.1  数据与表达式
1 .常量 ,[object Object],[object Object],[object Object],[object Object],[object Object],9.1.2  常量与变量
[object Object],[object Object],[object Object],9.1.2  常量与变量 2005-09-03 00:00:00 2005-09-03 00:00:00.000 9/3/2005 1900-01-01 13:25:00 1900-01-01 13:25:19.000 13:25:19 2005-09-03 13:00:00 2005-09-03 13:00:00.000 9.3.2005 13:00 2005-09-03 13:00:00 2005-09-03 13:00:00.000 9/3/2005 1PM 2005-09-03 01:35:00 2005-09-03 01:34:34.123 Sep 3, 2005 1:34:34.122 Smalldatetime 值 datetime 值 输入格式
(3) 数值常量 ,[object Object],[object Object],[object Object],[object Object],[object Object],9.1.2  常量与变量
[object Object],[object Object],[object Object],[object Object],9.1.2  常量与变量
[object Object],[object Object],2 .变量 9.1.2  常量与变量
[object Object],[object Object],全局变量和局部变量
(1) 局部变量 ,[object Object],[object Object],[object Object],[object Object],[object Object],9.1.2  常量与变量
局部变量的赋值 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
在一条语句中可以同时对几个变量进行赋值 ,[object Object],[object Object],[object Object],[object Object],[object Object],9.1.2  常量与变量
例 9-1  使用 SELECT 语句从 customer 表中检索出顾客编号为“ C0002” 的行,再将顾客的名字赋给变量 @customer 。 ,[object Object],[object Object],[object Object],[object Object],9.1.2  常量与变量
② 利用 UPDATE 为局部变量赋值 ,[object Object],[object Object],[object Object],[object Object],[object Object],9.1.2  常量与变量
③  用 SET 给局部变量赋值 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],9.1.2  常量与变量
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
(2) 全局变量 ,[object Object],[object Object],9.1.2  常量与变量
①  @@rowcount ,[object Object],[object Object],[object Object],[object Object],9.1.2  常量与变量
②  @@error ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],9.1.2  常量与变量
例 9-5  捕捉例 9-4 中服务器产生的错误号,并显示出来。 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],9.1.2  常量与变量
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
例 9-6  使用 @@spid 返回当前用户进程的 ID 。 ,[object Object],[object Object],[object Object],[object Object],9.1.2  常量与变量
9.1.3  运算符与表达式 ,[object Object],[object Object],[object Object],9.1  数据与表达式
1.  算术运算符与表达式 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],9.1.3  运算符与表达式
2.  位运算符与表达式 ,[object Object],[object Object],[object Object],[object Object],9.1.3  运算符与表达式
例如, 170 与 75 进行 & 运算 ,[object Object],[object Object],9.1.3  运算符与表达式
3.  比较运算符与表达式 ,[object Object],[object Object],[object Object],[object Object],9.1.3  运算符与表达式
4.  逻辑运算符与表达式 ,[object Object],[object Object],9.1.3  运算符与表达式
表 9-5  逻辑运算符 9.1.3  运算符与表达式 如果子查询包含一些行,那么值为 TRUE 。 EXISTS 如果操作数在某个范围之内,那么值为 TRUE 。 BETWEEN 如果一系列的比较中任何一个为 TRUE ,那么值为 TRUE 。 ANY 如果一系列的比较都为 TRUE ,那么值为 TRUE 。 ALL 如果操作数等于表达式列表中的一个,那么值为 TRUE 。 IN 如果操作数与一种模式相匹配,那么值为 TRUE 。 LIKE 对任何其他布尔运算符的值取反。 NOT 如果两个布尔表达式中的一个为 TRUE ,那么结果就为 TRUE 。 OR 如果两个布尔表达式都为 TRUE ,那么结果为 TRUE 。 AND 含  义 运算符
[object Object],[object Object],[object Object],9.1.3  运算符与表达式
LIKE 运算符 ,[object Object],9.1.3  运算符与表达式 employee_name LIKE '[^ 张李 ] 海燕 '  将查找不姓张、李的名为海燕的职员。 不属于指定范围 ([a-f ]) 或集合 ([abcdef ]) 的任何单个字符。 [^] employee_name LIKE '[ 张李王 ] 海燕 '  将查找张海燕、李海燕、王海燕等。 指定范围 ([a-f ]) 或集合 ([abcdef ]) 中的任何单个字符。 [ ] employee_name LIKE '_ 海燕 '  将查找以“海燕”结尾的所有 6 个字符的名字。 下划线,对应任何单个字符。 _ address LIKE '% 公司 %'  将查找地址任意位置包含公司的所有职员。 包含零个或多个字符的任意字符串。 % 示  例 描  述 运算符
例如 , 查找所有姓“钱”的员工及住址 ,[object Object],[object Object],[object Object],9.1.3  运算符与表达式
4 .连接运算符与表达式 ,[object Object],[object Object],[object Object],[object Object],9.1.3  运算符与表达式
5 .运算符的优先级别 ,[object Object],[object Object],[object Object],9.1.3  运算符与表达式
9.2  函  数 ,[object Object],[object Object]
9.2.1  常用函数 ,[object Object],[object Object],[object Object],[object Object],[object Object],9.2  函  数
1 .字符串函数  ,[object Object],9.2.1  常用函数
(1)  使用 datalength 和 Len 函数 ,[object Object],[object Object],9.2.1  常用函数
例 9-10  从表 department 中读取 manger 列的各记录的实际长度。 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],9.2.1  常用函数
(2)  使用 Soundex 函数 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],9.2.1  常用函数
(4)  使用 Charindex 函数实现串内搜索 ,[object Object],[object Object],[object Object],[object Object],[object Object],9.2.1  常用函数
例如 ,[object Object],[object Object],9.2.1  常用函数
(5)  使用 Patindex 函数 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],9.2.1  常用函数
2 .数学函数 ,[object Object],[object Object],9.2.1  常用函数
例 9-11  在同一表达式中使用 sin 、 atan 、 rand 、 pi 、 sign 函数。 ,[object Object],[object Object],[object Object],[object Object],9.2.1  常用函数
例 9-12  用 ceiling 和 floor 函数返回大于或等于指定值的最小整数值和小于或等于指定值的最大整数值。 ,[object Object],[object Object],[object Object],9.2.1  常用函数
[object Object],[object Object],[object Object],[object Object],例 9-13  round 函数的使用。 9.2.1  常用函数
3 .日期函数 ,[object Object],9.2.1  常用函数
表 9-9  SQL Server 的日期函数 9.2.1  常用函数 返回 date_expr 中的年份值 Year(date_expr) 返回 date_expr 中的月份值 Month(date_expr) 返回 date_expr 中的日期值 Day(date_expr) 返回以 datepart 指定方式表示的 date_expr 加上 number 以后的日期 Dateadd(datepart, number, date_expr) 以 datepart 指定的方式,返回 date_expr2 与 date_expr1 之差 Datediff(datepart,date_expr1,date_expr2) 以整数形式返回 date_expr 中的 datepart 指定部分 Datepart(datepart, date_expr) 以字符串形式返回 date_expr 中的指定部分,如果合适的话还将其转换为名称 ( 如 June) Datename(datepart, date_expr) 返回当前系统的日期和时间 Getdate() 描  述 函数名称及格式
表 9-10  SQL Server 的日期部分 9.2.1  常用函数 0~999 ms Millisecond 0~59 ss Second 0~59 mi Minute 0~23 hh Hour 1~7(Mon~Sun) dw Weekday 1~54 wk Week 1~31 dd Day 1~366 dy Dayofyear 1~12 mm Month 1~4 qq Quarter 1753~9999 yy Year 取值范围 写  法 日期部分
例 9-14  使用 datediff 函数来确定货物是否按时送给客户。 ,[object Object],[object Object],[object Object],9.2.1  常用函数
例 9-15  使用 datename 函数返回员工的出生日期的月份 (mm) 名称。 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],9.2.1  常用函数
4 .系统函数 ,[object Object],[object Object],9.2.1  常用函数
例 9-16  使用 object_name 函数返回已知 ID 号的对象名。 ,[object Object],[object Object],[object Object],9.2.1  常用函数
例 9-17  利用 object_id 函数,根据表名返回该表的 ID 号。 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],9.2.1  常用函数
9.2.2  用户定义函数 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],9.2  函  数
1.  创建用户定义函数 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],9.2.2  用户定义函数
例 9-18  创建一个用户定义函数 DatetoQuarter ,将输入的日期数据转换为该日期对应的季度值。如输入 '2006-8-5' ,返回 '3Q2006' ,表示 2006 年 3 季度。 ,[object Object],[object Object],[object Object],[object Object],[object Object],9.2.2  用户定义函数 例、创建工龄工资计算函数
调用函数 ,[object Object],[object Object],[object Object],9.2.2  用户定义函数
内嵌表值函数的语法格式: ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],9.2.2  用户定义函数
例 9-19  创建用户定义函数 goodsq ,返回输入商品编号的商品名称和库存量。 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],9.2.2  用户定义函数
例 9-19  创建用户定义函数 goodsq ,返回输入商品编号的商品名称和库存量。 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],9.2.2  用户定义函数
多语句表值函数的语法格式: ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],9.2.2  用户定义函数
例 9-20  根据输入的订单编号,返回该订单对应商品的编号、名称、类别编号、类别名称。 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],9.2.2  用户定义函数
[object Object],(2)  使用企业管理器创建用户定义函数 9.2.2  用户定义函数
[object Object],[object Object],9.2.2  用户定义函数
2.  执行用户定义函数 ,[object Object],[object Object],9.2.2  用户定义函数
例如,调用例 9-18 创建的用户定义函数 DatetoQuarter ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],9.2.2  用户定义函数
3.  修改和删除用户定义函数 ,[object Object],[object Object],[object Object],[object Object],[object Object],9.2.2  用户定义函数
例如,删除例 9-18 创建的用户定义函数 ,[object Object],[object Object],9.2.2  用户定义函数
9.3  程序控制流语句 ,[object Object],[object Object],[object Object],[object Object]
9.3.1  语句块和注释 ,[object Object],9.3  程序控制流语句
[object Object],[object Object],[object Object],[object Object],[object Object],1.  语句块 BEGIN...END 9.3.1  语句块和注释
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],例 9-21  显示 Sales 数据库中 customer 表的编号为‘ 1001' 的联系人姓名。 9.3.1  语句块和注释
在 BEGIN...END 中可嵌套另外的 BEGIN...END 来定义另一程序块。 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],9.3.1  语句块和注释
2.  注释 ,[object Object],[object Object],[object Object],9.3.1  语句块和注释
( 1 )单行注释 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],9.3.1  语句块和注释
( 2 )多行注释 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],9.3.1  语句块和注释
选择结构 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],例 9-23  判断表 goods 中 supplier_id 为“ S001” 的商品的平均单价是否大于 9799 。 9.3.2  选择控制
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],例 9-24  用 EXISTS 确定表 department 中是否存在“陈晓兵”。 9.3.2  选择控制
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],选择结构
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],选择结构
例 9-25  嵌套 IF...ELSE 语句的使用。 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],9.3.2  选择控制
[object Object],[object Object],选择结构
[object Object],课堂练习:
2. CASE 函数 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],9.3.2  选择控制
例 9-26  使用简单 CASE 函数将 goods 表中的商品分类重命名,以使之更易理解。 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],9.3.2  选择控制
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],例 9-27  根据 goods 表中库存货物数量与订货量之差,使用 CASE 搜索函数判断该商品是否进货。 9.3.2  选择控制
[object Object],课堂练习:
循环结构 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
例 9-30  将 goods 表中库存数最大的商品每次订购 2 件,计算如此需要多少次订购才能使库存数不够一次订购。 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],9.3  程序控制流语句
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],9.3  程序控制流语句 运行结果: 1 101 102 2 201 202
例 9-31  对于 goods 表,如果平均库存少于 12 , WHILE 循环就将各记录库存增加 5% ,再判断最高库存是否少于或等于 25 ,是则 WHILE 循环重新启动并再次将各记录库存增加 5% 。当循环不断地将库存增加直到最高库存超过 25 时,然后退出 WHILE 循环。 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],9.3  程序控制流语句
[object Object],BREAK 或 CONTINUE 语句 9.3  程序控制流语句
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],例 9-32  计算 s=1!+2!+…+10! 。 9.3  程序控制流语句
[object Object],[object Object],[object Object],[object Object],课堂练习:
转移语句 ,[object Object],[object Object],[object Object],[object Object],[object Object]
例 9-11  求 10 的阶乘。 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
例 9-28  使用 GOTO 语句改变程序流程。 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],9.3.2  选择控制
等待语句 ,[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],等待语句
返回语句 ,[object Object],[object Object],[object Object],[object Object]
例 9-29  RETURN 语句应用示例。 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],9.3.2  选择控制
9.3.4  批处理 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],9.3  程序控制流语句
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],1.  批处理的指定 9.3  程序控制流语句
[object Object],[object Object],[object Object],[object Object],2.  批处理的结束与退出 9.3  程序控制流语句
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],例 9-33  创建一个视图,使用 GO 命令将 CREATE VIEW 语句与批处理中的其他语句 ( 如 USE 、 SELECT 语句等 ) 隔离。 9.3  程序控制流语句
9.4  游标管理与应用 ,[object Object],[object Object],[object Object],[object Object],[object Object]
9.4.1  游标概述 ,[object Object],[object Object],[object Object],[object Object],[object Object],9.4  游标管理与应用
2.  服务器游标与默认结果集的比较 ,[object Object],[object Object],[object Object],[object Object],9.4.1  游标概述
3.  服务器游标与客户端游标的比较 ,[object Object],[object Object],[object Object],[object Object],[object Object],9.4.1  游标概述
[object Object],[object Object],[object Object],[object Object],[object Object],4.  服务器游标类型 9.4.1  游标概述
9.4.2  声明游标 ,[object Object],[object Object],[object Object],[object Object],[object Object],9.4  游标管理与应用
声明客户端游标的步骤 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],9.4  游标管理与应用
[object Object],[object Object],[object Object],[object Object],1. SQL-92 游标定义格式 9.4.2  声明游标
表 9-13  SCROLL 的取值 9.4.2  声明游标 提取游标中的第 n 行数据 ABSULUTE n 提取游标当前位置之前或之后的第 n 行数据 (n 为正表示向后, n 为负表示向前 ) RELATIVE n 提取游标当前位置的下一行数据 NEXT 提取游标当前位置的上一行数据 PRIOR 提取游标中的最后一行数据 LAST 提取游标中的第一行数据 FIRST 含  义 SCROLL 选项
例 9-34  使用 SQL-92 标准的游标声明语句声明一个游标,用于访问 Sales 数据库中的 goods 表的信息。 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],9.4.2  声明游标
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],2. Transact-SQL 扩展游标定义格式 9.4.2  声明游标
例 9-35  为 customer 表定义一个全局滚动动态游标,用于访问顾客的编号、姓名、地址、电话信息。 ,[object Object],[object Object],[object Object],[object Object],[object Object],9.4.2  声明游标
9.4.3  使用游标 ,[object Object],[object Object],[object Object],[object Object],[object Object],9.4  游标管理与应用
2.  读取游标 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],9.4.3  使用游标
表 9-14  @@fetch_status 变量 9.4.3  使用游标 所读取的数据已经不存在。 -2 FETCH 命令失败或者行数据己超出了结果集 -1 FETCH 命令已成功执行 0 描  述 返回值
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],例 9-36  打开例 9-35 中声明的游标,读取游标中的数据。 9.4.3  使用游标
[object Object],[object Object],[object Object],[object Object],[object Object],3.  关闭游标 9.4.3  使用游标
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],4.  释放游标 9.4.3  使用游标
9.4.4  游标的应用 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],9.4  游标管理与应用
例 9-37  定义游标 cur_customer ,通过 cur_customer 更新 customer 表中的 customer_name 和 linkman_name 列。 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],9.4.4  游标的应用
[object Object],[object Object],[object Object],9.4.4  游标的应用
2.  使用游标变量 ,[object Object],[object Object],9.4.4  游标的应用
游标与一个游标变量相关联的方法  ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],9.4.4  游标的应用
(2)  定义游标变量后,通过 SET 命令直接创建游标与游标变量关联 ,[object Object],[object Object],[object Object],[object Object],9.4.4  游标的应用
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],例 9-38  通过游标变量来操作例 9-35 所声明的游标 cur_customer ,操作完成后删除游标变量。 9.4.4  游标的应用
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],3.  滚动游标 9.4.4  游标的应用
用 FETCH 语句将记录指针滚动记录 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],9.4.4  游标的应用
9.4.5  使用系统存储过程管理游标 ,[object Object],[object Object],[object Object],9.4  游标管理与应用 表示 LOCAL 、 GLOBAL 游标都返回 3 表示返回所有的 GLOBAL 游标 2 表示返回所有的 LOCAL 游标 1 描  述 cursor_scope 值 表 9-15  游标作用域范围值
例 9-40  声明一个键值驱动游标,并使用  sp_cursor_list  报告该游标的特性。 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],9.4.5  使用系统存储过程管理游标
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],2. sp_describe_cursor 9.4.5  使用系统存储过程管理游标
例 9-41  定义并打开一个全局游标,使用 sp_describe_cursor 报告游标的特性。 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],9.4.5  使用系统存储过程管理游标
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]

More Related Content

What's hot

4, workflow tables & api
4, workflow tables & api4, workflow tables & api
4, workflow tables & apited-xu
 
07 陣列與字串
07 陣列與字串07 陣列與字串
07 陣列與字串shademoon
 
Swift编程语言入门教程 中文版
Swift编程语言入门教程 中文版Swift编程语言入门教程 中文版
Swift编程语言入门教程 中文版Harvey Zhang
 
系統程式 -- 第 12 章 系統軟體實作
系統程式 -- 第 12 章 系統軟體實作系統程式 -- 第 12 章 系統軟體實作
系統程式 -- 第 12 章 系統軟體實作鍾誠 陳鍾誠
 
MySQL_EXPLAIN_liling
MySQL_EXPLAIN_lilingMySQL_EXPLAIN_liling
MySQL_EXPLAIN_lilingTracyLLing
 
重構—改善既有程式的設計(chapter 7)
重構—改善既有程式的設計(chapter 7)重構—改善既有程式的設計(chapter 7)
重構—改善既有程式的設計(chapter 7)Chris Huang
 
Cypher 查询语言
Cypher 查询语言Cypher 查询语言
Cypher 查询语言zernel
 
C語言 第4章 基本輸出與輸入功能
C語言 第4章 基本輸出與輸入功能C語言 第4章 基本輸出與輸入功能
C語言 第4章 基本輸出與輸入功能shademoon
 
Excel函數進階班(北市政府公訓處) 2
Excel函數進階班(北市政府公訓處) 2Excel函數進階班(北市政府公訓處) 2
Excel函數進階班(北市政府公訓處) 2terry28853669
 

What's hot (20)

4, workflow tables & api
4, workflow tables & api4, workflow tables & api
4, workflow tables & api
 
Ch10
Ch10Ch10
Ch10
 
C語言結構與串列
C語言結構與串列 C語言結構與串列
C語言結構與串列
 
07 陣列與字串
07 陣列與字串07 陣列與字串
07 陣列與字串
 
C語言列舉與聯合
C語言列舉與聯合C語言列舉與聯合
C語言列舉與聯合
 
Swift编程语言入门教程 中文版
Swift编程语言入门教程 中文版Swift编程语言入门教程 中文版
Swift编程语言入门教程 中文版
 
系統程式
系統程式系統程式
系統程式
 
Ch03
Ch03Ch03
Ch03
 
Python基本資料運算
Python基本資料運算Python基本資料運算
Python基本資料運算
 
系統程式 -- 第 12 章 系統軟體實作
系統程式 -- 第 12 章 系統軟體實作系統程式 -- 第 12 章 系統軟體實作
系統程式 -- 第 12 章 系統軟體實作
 
建置Python開發環境
建置Python開發環境建置Python開發環境
建置Python開發環境
 
MySQL_EXPLAIN_liling
MySQL_EXPLAIN_lilingMySQL_EXPLAIN_liling
MySQL_EXPLAIN_liling
 
重構—改善既有程式的設計(chapter 7)
重構—改善既有程式的設計(chapter 7)重構—改善既有程式的設計(chapter 7)
重構—改善既有程式的設計(chapter 7)
 
C語言標準輸出入函式
C語言標準輸出入函式C語言標準輸出入函式
C語言標準輸出入函式
 
Cypher 查询语言
Cypher 查询语言Cypher 查询语言
Cypher 查询语言
 
C語言 第4章 基本輸出與輸入功能
C語言 第4章 基本輸出與輸入功能C語言 第4章 基本輸出與輸入功能
C語言 第4章 基本輸出與輸入功能
 
SCJP ch03
SCJP ch03SCJP ch03
SCJP ch03
 
Excel函數進階班(北市政府公訓處) 2
Excel函數進階班(北市政府公訓處) 2Excel函數進階班(北市政府公訓處) 2
Excel函數進階班(北市政府公訓處) 2
 
5
55
5
 
Ch9
Ch9Ch9
Ch9
 

Viewers also liked

Operacje minimalnie logowane
Operacje minimalnie logowaneOperacje minimalnie logowane
Operacje minimalnie logowaneBartosz Ratajczyk
 
第7章 索引和视图
第7章 索引和视图第7章 索引和视图
第7章 索引和视图hanmo1988
 
第9章 t sql程序设计
第9章 t sql程序设计第9章 t sql程序设计
第9章 t sql程序设计hanmo1988
 
Resiliency in the cloud myths versus facts
Resiliency in the cloud myths versus factsResiliency in the cloud myths versus facts
Resiliency in the cloud myths versus factsjorge navas
 
Infografia justificacion comercial_de_la_resiliencia
Infografia justificacion comercial_de_la_resilienciaInfografia justificacion comercial_de_la_resiliencia
Infografia justificacion comercial_de_la_resilienciajorge navas
 
第5章 sql server表的管理
第5章 sql server表的管理第5章 sql server表的管理
第5章 sql server表的管理hanmo1988
 
第2章 关系数据库基本原理
第2章  关系数据库基本原理第2章  关系数据库基本原理
第2章 关系数据库基本原理hanmo1988
 
第1章 数据库系统概论
第1章   数据库系统概论第1章   数据库系统概论
第1章 数据库系统概论hanmo1988
 
Infografia smart energy managemet services 2.3
Infografia smart energy managemet services 2.3Infografia smart energy managemet services 2.3
Infografia smart energy managemet services 2.3jorge navas
 
第6章 数据查询
第6章 数据查询第6章 数据查询
第6章 数据查询hanmo1988
 
A beginners guide
A beginners guideA beginners guide
A beginners guideASAFI
 
Resiliency in the cloud myths versus facts
Resiliency in the cloud myths versus factsResiliency in the cloud myths versus facts
Resiliency in the cloud myths versus factsjorge navas
 
Jak szybko przetwarzasz hurtowe ilości XML?
Jak szybko przetwarzasz hurtowe ilości XML?Jak szybko przetwarzasz hurtowe ilości XML?
Jak szybko przetwarzasz hurtowe ilości XML?Bartosz Ratajczyk
 
第10章 (续)事务
第10章 (续)事务 第10章 (续)事务
第10章 (续)事务 hanmo1988
 

Viewers also liked (18)

Operacje minimalnie logowane
Operacje minimalnie logowaneOperacje minimalnie logowane
Operacje minimalnie logowane
 
第7章 索引和视图
第7章 索引和视图第7章 索引和视图
第7章 索引和视图
 
第9章 t sql程序设计
第9章 t sql程序设计第9章 t sql程序设计
第9章 t sql程序设计
 
Resiliency in the cloud myths versus facts
Resiliency in the cloud myths versus factsResiliency in the cloud myths versus facts
Resiliency in the cloud myths versus facts
 
XML w SQL Server w praktyce
XML w SQL Server w praktyceXML w SQL Server w praktyce
XML w SQL Server w praktyce
 
Infografia justificacion comercial_de_la_resiliencia
Infografia justificacion comercial_de_la_resilienciaInfografia justificacion comercial_de_la_resiliencia
Infografia justificacion comercial_de_la_resiliencia
 
第5章 sql server表的管理
第5章 sql server表的管理第5章 sql server表的管理
第5章 sql server表的管理
 
第11章
第11章 第11章
第11章
 
第2章 关系数据库基本原理
第2章  关系数据库基本原理第2章  关系数据库基本原理
第2章 关系数据库基本原理
 
Alerty WMI
Alerty WMIAlerty WMI
Alerty WMI
 
第1章 数据库系统概论
第1章   数据库系统概论第1章   数据库系统概论
第1章 数据库系统概论
 
Infografia smart energy managemet services 2.3
Infografia smart energy managemet services 2.3Infografia smart energy managemet services 2.3
Infografia smart energy managemet services 2.3
 
第6章 数据查询
第6章 数据查询第6章 数据查询
第6章 数据查询
 
A beginners guide
A beginners guideA beginners guide
A beginners guide
 
Resiliency in the cloud myths versus facts
Resiliency in the cloud myths versus factsResiliency in the cloud myths versus facts
Resiliency in the cloud myths versus facts
 
Jak szybko przetwarzasz hurtowe ilości XML?
Jak szybko przetwarzasz hurtowe ilości XML?Jak szybko przetwarzasz hurtowe ilości XML?
Jak szybko przetwarzasz hurtowe ilości XML?
 
第10章 (续)事务
第10章 (续)事务 第10章 (续)事务
第10章 (续)事务
 
Podstawy ETL z SSIS
Podstawy ETL z SSISPodstawy ETL z SSIS
Podstawy ETL z SSIS
 

Similar to 第9章 transact sql程序设计

Oracle经典教程
Oracle经典教程Oracle经典教程
Oracle经典教程yiditushe
 
Mysql开发与优化
Mysql开发与优化Mysql开发与优化
Mysql开发与优化isnull
 
Tdxgongshi
TdxgongshiTdxgongshi
Tdxgongshiairsina
 
第六章 函數與巨集
第六章 函數與巨集第六章 函數與巨集
第六章 函數與巨集shademoon
 
Free Marker中文文档
Free Marker中文文档Free Marker中文文档
Free Marker中文文档yiditushe
 
1 C入門教學
1  C入門教學1  C入門教學
1 C入門教學Sita Liu
 
Rde packagean zhuang_ji_ji_ben_cao_zuo_
Rde packagean zhuang_ji_ji_ben_cao_zuo_Rde packagean zhuang_ji_ji_ben_cao_zuo_
Rde packagean zhuang_ji_ji_ben_cao_zuo_vinsin27
 
上海立派信息技术有限公司
上海立派信息技术有限公司上海立派信息技术有限公司
上海立派信息技术有限公司yiditushe
 
Sql Server 高级技巧系列之三整体优化
Sql Server 高级技巧系列之三整体优化Sql Server 高级技巧系列之三整体优化
Sql Server 高级技巧系列之三整体优化向 翔
 
認識 C++11 新標準及使用 AMP 函式庫作平行運算
認識 C++11 新標準及使用 AMP 函式庫作平行運算認識 C++11 新標準及使用 AMP 函式庫作平行運算
認識 C++11 新標準及使用 AMP 函式庫作平行運算建興 王
 
11/01 SAS 快速複習
11/01 SAS 快速複習11/01 SAS 快速複習
11/01 SAS 快速複習景淳 許
 
Asp.net mvc 培训
Asp.net mvc 培训Asp.net mvc 培训
Asp.net mvc 培训lotusprince
 
Sql语句的优化
Sql语句的优化Sql语句的优化
Sql语句的优化abszhanghe
 
11, OCP - awr & alert system
11, OCP - awr & alert system11, OCP - awr & alert system
11, OCP - awr & alert systemted-xu
 
了解Oracle在线重定义online redefinition
了解Oracle在线重定义online redefinition了解Oracle在线重定义online redefinition
了解Oracle在线重定义online redefinitionmaclean liu
 
Erlang培训
Erlang培训Erlang培训
Erlang培训liu qiang
 

Similar to 第9章 transact sql程序设计 (20)

Oracle经典教程
Oracle经典教程Oracle经典教程
Oracle经典教程
 
Mysql开发与优化
Mysql开发与优化Mysql开发与优化
Mysql开发与优化
 
Tdxgongshi
TdxgongshiTdxgongshi
Tdxgongshi
 
第六章 函數與巨集
第六章 函數與巨集第六章 函數與巨集
第六章 函數與巨集
 
Free Marker中文文档
Free Marker中文文档Free Marker中文文档
Free Marker中文文档
 
第6章指针
第6章指针第6章指针
第6章指针
 
1 C入門教學
1  C入門教學1  C入門教學
1 C入門教學
 
Rde packagean zhuang_ji_ji_ben_cao_zuo_
Rde packagean zhuang_ji_ji_ben_cao_zuo_Rde packagean zhuang_ji_ji_ben_cao_zuo_
Rde packagean zhuang_ji_ji_ben_cao_zuo_
 
上海立派信息技术有限公司
上海立派信息技术有限公司上海立派信息技术有限公司
上海立派信息技术有限公司
 
11
1111
11
 
Sql Server 高级技巧系列之三整体优化
Sql Server 高级技巧系列之三整体优化Sql Server 高级技巧系列之三整体优化
Sql Server 高级技巧系列之三整体优化
 
認識 C++11 新標準及使用 AMP 函式庫作平行運算
認識 C++11 新標準及使用 AMP 函式庫作平行運算認識 C++11 新標準及使用 AMP 函式庫作平行運算
認識 C++11 新標準及使用 AMP 函式庫作平行運算
 
11/01 SAS 快速複習
11/01 SAS 快速複習11/01 SAS 快速複習
11/01 SAS 快速複習
 
Optimzing mysql
Optimzing mysqlOptimzing mysql
Optimzing mysql
 
Asp.net mvc 培训
Asp.net mvc 培训Asp.net mvc 培训
Asp.net mvc 培训
 
Sql语句的优化
Sql语句的优化Sql语句的优化
Sql语句的优化
 
Python變數與資料運算
Python變數與資料運算Python變數與資料運算
Python變數與資料運算
 
11, OCP - awr & alert system
11, OCP - awr & alert system11, OCP - awr & alert system
11, OCP - awr & alert system
 
了解Oracle在线重定义online redefinition
了解Oracle在线重定义online redefinition了解Oracle在线重定义online redefinition
了解Oracle在线重定义online redefinition
 
Erlang培训
Erlang培训Erlang培训
Erlang培训
 

第9章 transact sql程序设计

  • 1. 第 9 章 Transact-SQL 程序设计
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33. 表 9-5 逻辑运算符 9.1.3 运算符与表达式 如果子查询包含一些行,那么值为 TRUE 。 EXISTS 如果操作数在某个范围之内,那么值为 TRUE 。 BETWEEN 如果一系列的比较中任何一个为 TRUE ,那么值为 TRUE 。 ANY 如果一系列的比较都为 TRUE ,那么值为 TRUE 。 ALL 如果操作数等于表达式列表中的一个,那么值为 TRUE 。 IN 如果操作数与一种模式相匹配,那么值为 TRUE 。 LIKE 对任何其他布尔运算符的值取反。 NOT 如果两个布尔表达式中的一个为 TRUE ,那么结果就为 TRUE 。 OR 如果两个布尔表达式都为 TRUE ,那么结果为 TRUE 。 AND 含 义 运算符
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53. 表 9-9 SQL Server 的日期函数 9.2.1 常用函数 返回 date_expr 中的年份值 Year(date_expr) 返回 date_expr 中的月份值 Month(date_expr) 返回 date_expr 中的日期值 Day(date_expr) 返回以 datepart 指定方式表示的 date_expr 加上 number 以后的日期 Dateadd(datepart, number, date_expr) 以 datepart 指定的方式,返回 date_expr2 与 date_expr1 之差 Datediff(datepart,date_expr1,date_expr2) 以整数形式返回 date_expr 中的 datepart 指定部分 Datepart(datepart, date_expr) 以字符串形式返回 date_expr 中的指定部分,如果合适的话还将其转换为名称 ( 如 June) Datename(datepart, date_expr) 返回当前系统的日期和时间 Getdate() 描 述 函数名称及格式
  • 54. 表 9-10 SQL Server 的日期部分 9.2.1 常用函数 0~999 ms Millisecond 0~59 ss Second 0~59 mi Minute 0~23 hh Hour 1~7(Mon~Sun) dw Weekday 1~54 wk Week 1~31 dd Day 1~366 dy Dayofyear 1~12 mm Month 1~4 qq Quarter 1753~9999 yy Year 取值范围 写 法 日期部分
  • 55.
  • 56.
  • 57.
  • 58.
  • 59.
  • 60.
  • 61.
  • 62.
  • 63.
  • 64.
  • 65.
  • 66.
  • 67.
  • 68.
  • 69.
  • 70.
  • 71.
  • 72.
  • 73.
  • 74.
  • 75.
  • 76.
  • 77.
  • 78.
  • 79.
  • 80.
  • 81.
  • 82.
  • 83.
  • 84.
  • 85.
  • 86.
  • 87.
  • 88.
  • 89.
  • 90.
  • 91.
  • 92.
  • 93.
  • 94.
  • 95.
  • 96.
  • 97.
  • 98.
  • 99.
  • 100.
  • 101.
  • 102.
  • 103.
  • 104.
  • 105.
  • 106.
  • 107.
  • 108.
  • 109.
  • 110.
  • 111.
  • 112.
  • 113.
  • 114.
  • 115.
  • 116.
  • 117.
  • 118.
  • 119.
  • 120.
  • 121. 表 9-13 SCROLL 的取值 9.4.2 声明游标 提取游标中的第 n 行数据 ABSULUTE n 提取游标当前位置之前或之后的第 n 行数据 (n 为正表示向后, n 为负表示向前 ) RELATIVE n 提取游标当前位置的下一行数据 NEXT 提取游标当前位置的上一行数据 PRIOR 提取游标中的最后一行数据 LAST 提取游标中的第一行数据 FIRST 含 义 SCROLL 选项
  • 122.
  • 123.
  • 124.
  • 125.
  • 126.
  • 127. 表 9-14 @@fetch_status 变量 9.4.3 使用游标 所读取的数据已经不存在。 -2 FETCH 命令失败或者行数据己超出了结果集 -1 FETCH 命令已成功执行 0 描 述 返回值
  • 128.
  • 129.
  • 130.
  • 131.
  • 132.
  • 133.
  • 134.
  • 135.
  • 136.
  • 137.
  • 138.
  • 139.
  • 140.
  • 141.
  • 142.
  • 143.
  • 144.