上一页
下一页
返回首页
第 2章 Transact-SQL语言
第 2章 Transact-SQL语言
2.1 数据定义语言( DDL)
2.2 数据操纵语言( DML)
2.3 数据控制语言( DCL)
2.4 系统存储过程
2.5 其它语言元素
上一章
返回目录
上一页
下一页
返回首页
第 2章 Transact-SQL语言
Transact-SQL语言主要组成部分
数据定义语言 ( DDL,Data Definition Language)
数据操纵语言 ( DML,Data Manipularion Language)
数据控制语言 ( DCL,Data Control Language)
系统存储过程 ( System Stored Procedure)
一些附加的语言元素
上一页
下一页
返回首页
第 2章 Transact-SQL语言
2.1 数据定义语言( DDL)
数据定义语言是指用来定义和管理数据库以及
数据库中的各种对象的语句, 这些语句包括
CREATE,ALTER和 DROP等语句 。 在 SQL
Server 2000中, 数据库对象包括表, 视图,
触发器, 存储过程, 规则, 缺省, 用户自定义
的数据类型等 。 这些对象的创建, 修改和删除
等 都 可 以 通 过 使 用 CREATE, ALTER,
DROP等语句来完成 。
上一页
下一页
返回首页
第 2章 Transact-SQL语言
程序清单 2-1:创建数据库表的一个例子
CREATE TABLE publishers
(
pub_id char(4) NOT NULL
CONSTRAINT UPKCL_pubind PRIMARY KEY CLUSTERED
CHECK (pub_id IN ('1389','0736','0877',
'1622','1756')
OR pub_id LIKE '99[0-9][0-9]'),
pub_name varchar(40) NULL,
city varchar(20) NULL,
state char(2) NULL,
country varchar(30) NULL
DEFAULT('USA')
)
上一页
下一页
返回首页
第 2章 Transact-SQL语言
程序清单 2-2:修改视图的一个例子
USE pubs
GO
ALTER VIEW yourview
AS
SELECT title,mycount= @@ ROWCOUNT,ytd_sales
FROM titles
WHERE type = 'mod_cook'
GO
SELECT *
FROM yourview
GO
上一页
下一页
返回首页
第 2章 Transact-SQL语言
程序清单 2-3:删除触发器的一个例子
/*下面的例子将删除触发器 employee_insupd。 */
USE pubs
IF EXISTS (SELECT name FROM sysobjects
WHERE name = 'employee_insupd' AND type =
'TR')
DROP TRIGGER employee_insupd
GO
上一页
下一页
返回首页
第 2章 Transact-SQL语言
2.2 数据操纵语言( DML)
数据操纵语言是指用来查询、添加、修改
和删除数据库中数据的语句,这些语句包
括 SELECT,INSERT,UPDATE、
DELETE等。在默认情况下,只有
sysadmin,dbcreator,db_owner或
db_datawriter等角色的成员才有权利执行
数据操纵语言。
上一页
下一页
返回首页
第 2章 Transact-SQL语言
1,SELECT语句
SELECT语句的语法形式如下:
SELECT select_list
[ INTO new_table ]
FROM table_source
[ WHERE search_condition ]
[ GROUP BY group_by_expression ]
[ HAVING search_condition ]
[ ORDER BY order_expression [ ASC | DESC ] ]
[COMPUTE clause]
[FOR BROWSE]
上一页
下一页
返回首页
第 2章 Transact-SQL语言
几种常用语句的用法
SELECT子句用于指定所选择的要查询的特
定表中的列, 它可以是星号 ( *), 表达式,
列表, 变量等 。
INTO子句用于指定所要生成的新表的名称 。
FROM子句用于指定要查询的表或者视图,
最多可以指定 16个表或者视图, 用逗号相互
隔开 。
WHERE子句用来限定查询的范围和条件 。
GROUP BY子句是分组查询子句 。
HAVING子句用于指定分组子句的条件 。
上一页
下一页
返回首页
第 2章 Transact-SQL语言
GROUP BY子句, HAVING子句和集合函数
一起可以实现对每个组生成一行和一个汇总值 。
ORDER BY子句可以根据一个列或者多个列
来排序查询结果, 在该子句中, 既可以使用列
名, 也可以使用相对列号 。
ASC表示升序排列, DESC表示降序排列 。
COMPUTE子句使用集合函数在查询的结果集
中生成汇总行 。
COMPUTE BY子句用于增加各列汇总行 。
上一页
下一页
返回首页
第 2章 Transact-SQL语言
SELECT子句的语法形式如下所示:
SELECT [ ALL | DISTINCT ]
[ TOP n [ PERCENT ] [ WITH TIES ] ]
< select_list >
< select_list >,:=
{ *
| { table_name | view_name |
table_alias }.*
| { column_name | expression |
IDENTITYCOL | ROWGUIDCOL }
[ [ AS ] column_alias ]
| column_alias = expression
} [,...n ]
上一页
下一页
返回首页
第 2章 Transact-SQL语言
程序清单 2-4,显示居住在加利福尼亚州且姓名不为
McBadden 的作者列。
USE pubs
SELECT au_fname,au_lname,phone AS
Telephone
FROM authors
WHERE state = 'CA' and au_lname <>
'McBadden'
ORDER BY au_lname ASC,au_fname ASC
上一页
下一页
返回首页
第 2章 Transact-SQL语言
程序清单 2-5:使用两个相关子查询查找作者姓名, 这些
作者至少参与过一本受欢迎的计算机书籍的创作 。
USE pubs
SELECT au_lname,au_fname
FROM authors
WHERE au_id IN
(SELECT au_id
FROM titleauthor
WHERE title_id IN
(SELECT title_id
FROM titles
WHERE type = 'popular_comp'))
上一页
下一页
返回首页
第 2章 Transact-SQL语言
程序清单 2-6:显示含有本年度截止到现在的当前销售额的行,
然后按 type以递减顺序计算书籍的平均价格和预付款总额。
USE pubs
SELECT CAST(title AS char(20)) AS
title,type,price,advance
FROM titles
WHERE ytd_sales IS NOT NULL
ORDER BY type DESC
COMPUTE AVG(price),SUM(advance) BY
type
COMPUTE SUM(price),SUM(advance)
上一页
下一页
返回首页
第 2章 Transact-SQL语言
程序清单 2-7:先删除表 T1,然后又创建一个带有四个列的表 T1。最
后利用 INSERT 语句插入一些数据行,这些行只有部分列包含值。
IF EXISTS(SELECT TABLE_NAME FROM
INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME = 'T1')
DROP TABLE T1
GO
CREATE TABLE T1
( column_1 int identity,
column_2 varchar(30)
CONSTRAINT default_name
DEFAULT ('column default'),
上一页
下一页
返回首页
第 2章 Transact-SQL语言
column_3 int NULL,
column_4 varchar(40)
)
INSERT INTO T1 (column_4)
VALUES ('Explicit value')
INSERT INTO T1 (column_2,column_4)
VALUES ('Explicit value','Explicit value')
INSERT INTO T1 (column_2,column_3,column_4)
VALUES ('Explicit value',-44,'Explicit
value')
SELECT *
FROM T1
上一页
下一页
返回首页
第 2章 Transact-SQL语言
程序清单 2-8:一个简单的修改语句。
UPDATE publishers
SET city = 'Atlanta',state = 'GA‘
上一页
下一页
返回首页
第 2章 Transact-SQL语言
程序清单 2-9:一个带有 WHERE条件的修改语句。
UPDATE authors
SET state = 'PC',city = 'Bay City'
WHERE state = 'CA' AND city =
'Oakland'
上一页
下一页
返回首页
第 2章 Transact-SQL语言
程序清单 2-10:通过 UPDATE 语句使用来自另一个表的信息,其修
改表 titles 中的 ytd_sales 列,以反映表 sales 中的最新销售记录。
UPDATE titles
SET ytd_sales = titles.ytd_sales +
sales.qty
FROM titles,sales
WHERE titles.title_id =
sales.title_id
AND sales.ord_date = (SELECT
MAX(sales.ord_date) FROM sales)
上一页
下一页
返回首页
第 2章 Transact-SQL语言
2.3 数据控制语言( DCL)
数据控制语言( DCL)是用来设置或者更改
数据库用户或角色权限的语句,这些语句包
括 GRANT,DENY,REVOKE等语句,在
默认状态下,只有 sysadmin,dbcreator、
db_owner或 db_securityadmin等角色的成员
才有权利执行数据控制语言。
上一页
下一页
返回首页
第 2章 Transact-SQL语言
1,GRANT语句
GRANT语句是授权语句, 它可以把语句权
限或者对象权限授予给其他用户和角色 。
授予语句权限的语法形式为:
GRANT {ALL | statement[,...n]}
TO security_account [,...n ]
上一页
下一页
返回首页
第 2章 Transact-SQL语言
授予对象权限的语法形式为:
GRANT
{ ALL [ PRIVILEGES ] | permission [,...n ] }
{
[ ( column [,...n ] ) ] ON { table | view }
| ON { table | view } [ ( column [,...n ] ) ]
| ON { stored_procedure | extended_procedure }
| ON { user_defined_function }
}
TO security_account [,...n ]
[ WITH GRANT OPTION ]
[ AS { group | role } ]
上一页
下一页
返回首页
第 2章 Transact-SQL语言
2,DENY语句
DENY语句用于拒绝给当前数据库内的用户或
者角色授予权限, 并防止用户或角色通过其组
或角色成员继承权限 。
否定语句权限的语法形式为:
DENY { ALL | statement [,...n ] }
TO security_account [,...n ]
上一页
下一页
返回首页
第 2章 Transact-SQL语言
否定对象权限的语法形式为:
DENY
{ ALL [ PRIVILEGES ] | permission
[,...n ] }
{
[ ( column [,...n ] ) ] ON { table |
view }
| ON { table | view } [ ( column
[,...n ] ) ]
| ON { stored_procedure |
extended_procedure }
| ON { user_defined_function }
}
TO security_account [,...n ]
[ CASCADE ]
上一页
下一页
返回首页
第 2章 Transact-SQL语言
3,REVOKE语句
REVOKE语句是与 GRANT语句相反的语句, 它能
够将以前在当前数据库内的用户或者角色上授予或
拒绝的权限删除, 但是该语句并不影响用户或者角
色从其他角色中作为成员继承过来的权限 。
收回语句权限的语法形式为:
REVOKE { ALL | statement [,...n ] }
FROM security_account [,...n ]
上一页
下一页
返回首页
第 2章 Transact-SQL语言
收回对象权限的语法形式为:
REVOKE [ GRANT OPTION FOR ]
{ ALL [ PRIVILEGES ] | permission [,...n ] }
{
[ ( column [,...n ] ) ] ON { table | view }
| ON { table | view } [ ( column [,...n ] ) ]
| ON { stored_procedure | extended_procedure }
| ON { user_defined_function }
}
{ TO | FROM }
security_account [,...n ]
[ CASCADE ]
[ AS { group | role } ]
上一页
下一页
返回首页
第 2章 Transact-SQL语言
2.4 系统存储过程
系统存储过程是 SQL Server系统创建的存
储过程,它的目的在于能够方便地从系统
表中查询信息,或者完成与更新数据库表
相关的管理任务或其它的系统管理任务。
系统存储过程可以在任意一个数据库中执
行。系统存储过程创建并存放于系统数据
库 master中,并且名称以 sp_或者 xp_开头。
上一页
下一页
返回首页
第 2章 Transact-SQL语言
系统存储过程的部分示例如下:
sp_addtype:用于定义一个用户定义数据类型 。
sp_configure:用于管理服务器配置选项设置 。
xp_sendmail:用于发送电子邮件或寻呼信息 。
sp_stored_procedures:用于返回当前数据库中的存
储过程的清单 。
上一页
下一页
返回首页
第 2章 Transact-SQL语言
sp_help:用于显示参数清单和其数据类型 。
sp_depends:用于显示存储过程依据的对象
或者依据存储过程的对象 。
sp_helptext:用于显示存储过程的定义文本 。
sp_rename:用于修改当前数据库中用户对象
的名称 。
上一页
下一页
返回首页
第 2章 Transact-SQL语言
2.5 其它语言元素
2.5.1 注释
2.5.2 变量
2.5.3 运算符
2.5.4 函数
2.5.5 流程控制语句
上一页
下一页
返回首页
第 2章 Transact-SQL语言
2.5.1 注释
注释是程序代码中不执行的文本字
符串(也称为注解)。在 SQL Server中,
可以使用两种类型的注释字符:一种是
ANSI标准的注释符,--”,它用于单行注
释;另一种是与 C语言相同的程序注释符
号,即,/* */”。
上一页
下一页
返回首页
第 2章 Transact-SQL语言
2.5.2 变量
变量是一种语言中必不可少的
组成部分 。 Transact-SQL语言中有两
种形式的变量, 一种是用户自己定义
的局部变量, 另外一种是系统提供的
全局变量 。
上一页
下一页
返回首页
第 2章 Transact-SQL语言
1,局部变量
局部变量是一个能够拥有特定数据类型的
对象,它的作用范围仅限制在程序内部。
局部变量可以作为计数器来计算循环执行
的次数,或是控制循环执行的次数。另外,
利用局部变量还可以保存数据值,以供控
制流语句测试以及保存由存储过程返回的
数据值等。局部变量被引用时要在其名称
前加上标志“@”,而且必须先用
DECLARE命令定义后才可以使用。
上一页
下一页
返回首页
第 2章 Transact-SQL语言
2,全局变量
全局变量是 SQL Server系统内部使用的变
量,其作用范围并不仅仅局限于某一程序,
而是任何程序均可以随时调用。全局变量
通常存储一些 SQL Server的配置设定值和
统计数据。用户可以在程序中用全局变量
来测试系统的设定值或者是 Transact-SQL
命令执行后的状态值。
上一页
下一页
返回首页
第 2章 Transact-SQL语言
使用全局变量时应该注意以下几点:
① 全局变量不是由用户的程序定义的, 它们是在
服务器级定义的 。
② 用户只能使用预先定义的全局变量 。
③ 引用全局变量时, 必须以标记符, @@”开头 。
④ 局部变量的名称不能与全局变量的名称相同,
否则会在应用程序中出现不可预测的结果 。
上一页
下一页
返回首页
第 2章 Transact-SQL语言
2.5.3 运算符
运算符是一些符号, 它们能够用来执行算
术运算, 字符串连接, 赋值以及在字段,
常量和变量之间进行比较 。 在 SQL
Server 2000中, 运算符主要有以下六大
类:算术运算符, 赋值运算符, 位运算符,
比较运算符, 逻辑运算符以及字符串串联
运算符 。
上一页
下一页
返回首页
第 2章 Transact-SQL语言
1.算术运算符
算术运算符可以在两个表达式上执行数
学运算,这两个表达式可以是数字数据
类型分类的任何数据类型。算术运算符
包括加( +)、减( — )、乘( *)、除
( /)和取模( %)。
上一页
下一页
返回首页
第 2章 Transact-SQL语言
2.赋值运算符
Transact-SQL 中只有一个赋值运算符, 即
等号 ( =) 。 赋值运算符使我们能够将数据
值指派给特定的对象 。 另外, 还可以使用赋
值运算符在列标题和为列定义值的表达式之
间建立关系 。
上一页
下一页
返回首页
第 2章 Transact-SQL语言
3.位运算符
位运算符使我们能够在整型数据或者
二进制数据( image 数据类型除外)之
间执行位操作。此外,在位运算符左
右两侧的操作数不能同时是二进制数
据。
上一页
下一页
返回首页
第 2章 Transact-SQL语言
表 2-1 位运算符
运 算 符 含 义
&( 按位 AND) 按位 AND( 两个操作数 ) 。
|( 按位 OR) 按位 OR( 两个操作数 ) 。
^( 按位互斥 OR) 按位互斥 OR( 两个操作数 ) 。
上一页
下一页
返回首页
第 2章 Transact-SQL语言
4.比较运算符
比较运算符用于比较两个表达式的大小或是否
相同,其比较的结果是布尔值,即 TRUE(表
示表达式的结果为真),FALSE(表示表达式
的结果为假)以及 UNKNOWN。除了 text、
ntext 或 image 数据类型的表达式外,比较运算
符可以用于所有的表达式。
上一页
下一页
返回首页
第 2章 Transact-SQL语言
5.逻辑运算符
逻辑运算符可以把多个逻辑表达式连接
起来 。 逻辑运算符包括 AND,OR和
NOT等运算符 。 逻辑运算符和比较运
算符一样, 返回带有 TRUE 或 FALSE
值的布尔数据类型 。
上一页
下一页
返回首页
第 2章 Transact-SQL语言
6.字符串串联运算符
字符串串联运算符允许通过加号
(+) 进行字符串串联, 这个加号即
被称为字符串串联运算符 。 例如
对于语句 SELECT ‘abc’+’def’,
其结果为 abcdef。
上一页
下一页
返回首页
第 2章 Transact-SQL语言
运算符的优先等级从高到低如下所示
括号,( ) ;
乘, 除, 求模运算符,*,/,%;
加减运算符,+,- ;
比较运算符,=,>,<,>=,<=,<>,!=,!>,!<;
位运算符,^,&,|;
逻辑运算符,NOT;
逻辑运算符,AND;
逻辑运算符,OR。
上一页
下一页
返回首页
第 2章 Transact-SQL语言
2.5.4 函数
在 Transact-SQL语言中, 函数被用来执行一
些特殊的运算以支持 SQL Server的标准命令 。
Transact-SQL编程语言提供了三种函数:
㈠ 行集函数:行集函数可以在 Transact-SQL
语句中当作表引用 。
㈡ 聚合函数:聚合函数用于对一组值执行计
算并返回一个单一的值 。
㈢标量函数:标量函数用于对传递给它的一
个或者多个参数值进行处理和计算, 并返回
一个单一的值 。
上一页
下一页
返回首页
第 2章 Transact-SQL语言
SQL Server中最常用的几种函数
字符串函数
日期和时间函数
数学函数
转换函数
系统函数
聚合函数
其它函数
上一页
下一页
返回首页
第 2章 Transact-SQL语言
字符串函数
字符串函数可以对二进制数据、字符串和
表达式执行不同的运算,大多数字符串函
数只能用于 char和 varchar数据类型以及
明确转换成 char和 varchar的数据类型,
少数几个字符串函数也可以用于 binary和
varbinary数据类型。此外,某些字符串
函数还能够处理 text,ntext,image数据
类型的数据。
上一页
下一页
返回首页
第 2章 Transact-SQL语言
字符串函数的分类:
基本字符串函数,UPPER,LOWER、
SPACE,REPLICATE,STUFF、
REVERSE,LTRIM,RTRIM。
字符串查找函数,CHARINDEX、
PATINDEX。
长度和分析函数,DATALENGTH、
SUBSTRING,RIGHT。
转换函数,ASCH,CHAR,STR、
SOUNDEX,DIFFERENCE。
上一页
下一页
返回首页
第 2章 Transact-SQL语言
程序清单 2-25:
在选择价格位于 $11和 $20之间的书名
时,使用 LOWER 函数,UPPER 函数
且把 UPPER 函数嵌套在 LOWER 函
数内。另外,该程序还使用
SUBSTRING函数从字符串中返回指定
的字符串。其源程序清单为:
上一页
下一页
返回首页
第 2章 Transact-SQL语言
部分函数应用例子
程序清单 2-26 --2-30为:
上一页
下一页
返回首页
第 2章 Transact-SQL语言
2.日期和时间函数
日期和时间函数用于对日期和时间数据
进行各种不同的处理和运算, 并返回一
个字符串, 数字值或日期和时间值 。 在
SQL Server 2000中, 日期和时间函数
的类型如表 2-5所示;另外, 表 2-6列出
了日期类型的名称, 缩写形式以及可接
受的值 。
上一页
下一页
返回首页
第 2章 Transact-SQL语言
表 2-5 日期和时间函数的类型
函 数 参 数
DATEADD ( datepart,number,date )
DATEDIFF ( datepart,date1,date2 )
DATENAME ( datepart,date )
DATEPART ( datepart,date )
DAY ( date )
GETDATE ()
MONTH ( date )
YEAR ( date )
上一页
下一页
返回首页
第 2章 Transact-SQL语言
程序清单 2-33:从 GETDATE函数返回的日期中
提取月份数。
SELECT DATEPART(month,GETDATE())
AS 'Month Number'
运行结果为:
Month Number
------------
2
上一页
下一页
返回首页
第 2章 Transact-SQL语言
程序清单 2-34:从日期 03/12/1998 中返回月份数、天
数和年份数。
SELECT MONTH('03/12/1998'),
DAY('03/12/1998'),YEAR('03/12/1998')
运行结果为:
----- ------ ------
3 12 1998
上一页
下一页
返回首页
第 2章 Transact-SQL语言
3.数学函数
数学函数用于对数字表达式进行数学
运算并返回运算结果。数学函数可以
对 SQL Server提供的数字数据
( decimal,integer,float,real、
money,smallmoney,smallint 和
tinyint)进行处理。
上一页
下一页
返回首页
第 2章 Transact-SQL语言
程序清单 2-35:
在同一表达式中使用 CEILING(),FLOOR()、
ROUND()函数。
select ceiling(13.4),floor(13.4),
round(13.4567,3)
运行结果为:
--------- --------- -------
14 13 13.4570
上一页
下一页
返回首页
第 2章 Transact-SQL语言
4.转换函数
一般情况下, SQL Server会自动处理某些数据
类 型 的 转 换 。 例如, 如 果 比 较 char 和
datetime 表达式, smallint 和 int 表达式, 或不
同长度的 char 表达式, SQL Server 可以将它
们自动转换, 这种转换被称为隐性转换 。 但是,
无法由 SQL Server自动转换的或者是 SQL
Server自动转换的结果不符合预期结果的, 就
需要使用转换函数做显示转换 。 转换函数有两
个,CONVERT和 CAST。
上一页
下一页
返回首页
第 2章 Transact-SQL语言
CONVERT和 CAST函数
CAST ( expression AS data_type )
CONVERT函数允许用户把表达式从一种数据
类型转换成另一种数据类型, 还允许把日期转
换成不同的样式 。 其语法形式为:
CONVERT
(data_type[(length)],expression
[,style])
上一页
下一页
返回首页
第 2章 Transact-SQL语言
程序清单 2-36,
USE pubs
SELECT title,ytd_sales
FROM titles
WHERE CAST(ytd_sales AS char(20)) LIKE '15%'
AND type = 'trad_cook'
运行结果为:
Title ytd_sales
------------------------------
Fifty Years in Buckingham Palace Kitchens 15096
上一页
下一页
返回首页
第 2章 Transact-SQL语言
5.系统函数
系统函数用于返回有关 SQL Server系统、
用户、数据库和数据库对象的信息。系统
函数可以让用户在得到信息后,使用条件
语句,根据返回的信息进行不同的操作。
与其它函数一样,可以在 SELECT语句的
SELECT和 WHERE子句以及表达式中使
用系统函数。
上一页
下一页
返回首页
第 2章 Transact-SQL语言
程序清单 2-38
返回 Northwind 数据库的 Employees 表中的首
列的名称 。
USE Northwind
SELECT
COL_NAME(OBJECT_ID('Employees'),1)
运行结果为:
EmployeeID
上一页
下一页
返回首页
第 2章 Transact-SQL语言
6.聚合函数
聚合函数可以返回整个或者几个列或者
一个列的汇总数据,它常用来计算
SELECT语句查询的统计值。聚合函数
经常与 SELECT 语句的 GROUP BY
子句一同使用。常用的聚合函数 应用
举例,程序清单 2-41至 2-44如下:
上一页
下一页
返回首页
第 2章 Transact-SQL语言
2.5.5 流程控制语句
流程控制语句是指那些用来控制程序执
行和流程分支的命令,在 SQL Server
2000中,流程控制语句主要用来控制
SQL语句、语句块或者存储过程的执行
流程。
上一页
下一页
返回首页
第 2章 Transact-SQL语言
1,IF…ELSE 语句
IF…ELSE 语句是条件判断语句,其中,
ELSE子句是可选的,最简单的 IF语句
没有 ELSE子句部分。 IF…ELSE 语句
用来判断当某一条件成立时执行某段
程序,条件不成立时执行另一段程序。
SQL Server允许嵌套使用 IF…ELSE 语
句,而且嵌套层数没有限制。
上一页
下一页
返回首页
第 2章 Transact-SQL语言
IF…ELSE 语句的语法形式
IF Boolean_expression
{ sql_statement |
statement_block }
[ ELSE
{ sql_statement |
statement_block } ]
上一页
下一页
返回首页
第 2章 Transact-SQL语言
2,BEGIN…END 语句
BEGIN…END 语句能够将多个 Transact-
SQL语句组合成一个语句块,并将它们视
为一个单元处理。在条件语句和循环等控
制流程语句中,当符合特定条件便要执行
两个或者多个语句时,就需要使用
BEGIN…END 语句,其语法形式为:
BEGIN
{ sql_statement
| statement_block
}
END
上一页
下一页
返回首页
第 2章 Transact-SQL语言
3,CASE函数
CASE函数可以计算多个条件式,
并将其中一个符合条件的结果表
达式返回。 CASE函数按照使用形
式的不同,可以分为简单 CASE函
数和搜索 CASE函数。
上一页
下一页
返回首页
第 2章 Transact-SQL语言
1,CASE函数的语法形式
CASE input_expression
WHEN when_expression THEN
result_expression
[,..n ]
[
ELSE else_result_expression
END
上一页
下一页
返回首页
第 2章 Transact-SQL语言
2、搜索 CASE函数的语法形式
CASE
WHEN Boolean_expression THEN
result_expression
[,..n ]
[
ELSE else_result_expression
END
上一页
下一页
返回首页
第 2章 Transact-SQL语言
4,WHILE…CONTINUE…BREAK 语句
WHILE…CONTINUE…BREAK 语句
用于设置重复执行 SQL 语句或语句块
的条件。只要指定的条件为真,就重
复执行语句。其中,CONTINUE语句
可以使程序跳过 CONTINUE语句后面
的语句,回到 WHILE循环的第一行命
令。 BREAK语句则使程序完全跳出循
环,结束 WHILE语句的执行。
上一页
下一页
返回首页
第 2章 Transact-SQL语言
结束 WHILE语句的语法形式为:
WHILE Boolean_expression
{ sql_statement | statement_block }
[ BREAK ]
{ sql_statement | statement_block }
[ CONTINUE ]
上一页
下一页
返回首页
第 2章 Transact-SQL语言
5,GOTO语句
GOTO语句可以使程序直接跳到指定
的标有标识符的位置处继续执行,而
位于 GOTO语句和标识符之间的程序
将不会被执行。 GOTO语句和标识符
可以用在语句块、批处理和存储过程
中,标识符可以为数字与字符的组合,
但必须以“:”结尾。
上一页
下一页
返回首页
第 2章 Transact-SQL语言
GOTO语句的语法形式
GOTO label
……
label:
程序清单 2-50:利用 GOTO语句求出从 1加到 5的总和。
declare @sum int,@count int
select @sum=0,@count=1
label_1:
select @sum=@sum+@count
select @count=@count+1
if @count<=5
goto label_1
select @count @sum
上一页
下一页
返回首页
第 2章 Transact-SQL语言
6,WAITFOR语句
WAITFOR语句用于暂时停止执行 SQL语
句、语句块或者存储过程等,直到所设定
的时间已过或者所设定的时间已到才继续
执行。 WAITFOR语句的语法形式为:
WAITFOR { DELAY 'time' | TIME
'time' }
其中,DELAY用于指定时间间隔,
TIME用于指定某一时刻,其数据类型为
datetime,格式为‘ hh:mm:ss’。
上一页
下一页
返回首页
第 2章 Transact-SQL语言
7,RETURN语句
RETURN语句用于无条件地终止一个查询,
存储过程或者批处理, 此时位于 RETURN
语句之后的程序将不会被执行 。 RETURN
语句的语法形式为:
RETURN [ integer_expression ]
其中, 参数 integer_expression为返回的整
型值 。 存储过程可以给调用过程或应用程
序返回整型值 。
上一页
下一页
返回首页
第 2章 Transact-SQL语言







Thank you very much!
下一章