第 21 章 Transact-SQL 编 程 语 言 参 考

Transact-SQL 是 Microsoft SQL Server 的 编 程 语 言 , 是 结 构 化 查 询 语 言 (SQL) 的 增 强 版 本 , SQL 是 首 先 由 IBM 开 发 的 数 据 库 语 言 。 Transact-SQL 可 用 来 从 数据 库 中 提 取 数 据 , 执 行 SQL 语 言 的 数 据 定 义 (DDL) 、 数 据 操 作 (DML) 和 数 据 控 制(DCC) 等 操 作 。 Transact-SQL 将 继 续 朝 着 American National Standards Institute(ANSI) 标 准 的 方 向 向 前 发 展 , 并 在 许 多 情 况 下 进 一 步 改 进 。

Transact-SQL 用 下 列 格 式 对 语 法 进 行 分 类 : 语 法 格 式 说 明

UPPERCASE 关 键 词

斜 体 字 用 户 提 供 的 内 容

| ( 竖 杠 ) 选 择 一 个 , 与 单 词 “ or ” 相 对 应

[ ] 方 括 号 可 选 的 语 法

{ } 花 括 号 必 选 的 语 法

[ ,...n ] 向 后 重 复 , 并 以 逗 号 或 空 格 分 隔 开

< 标 号 > :: = 标 记 可 能 有 多 个 长 度 单 位 的 语 法

加 号 ( + ) 和 字 符 串 连 接 ( + )

加 号 ( + ) 有 两 种 功 能 , 它 可 以 表 示 加 法 运 算 符 , 把 两 个 数 字 加 到 一 起 或 将几 天 加 到 日 期 中 。 也 可 使 用 列 名 、 常 数 和 表 达 式 。

加 号 的 第 二 种 用 途 是 在 字 符 串 表 达 式 中 用 作 连 接 两 个 或 多 个 字 符 或 二 进 制字 符 串 的 运 算 符 。 把 字 符 串 放 在 引 号 内 , 就 可 以 使 用 从 非 字 符 到 字 符 或 从 非 二进 制 到 二 进 制 表 达 式 的 CONVERT( 转换 ) 或 CAST( 加法 ) 函 数 。

语法

expression + expression [+ [ ...n ]]

变量

expression 对 于 此 运 算 符 ,expression 的 数 据 类 型 可 以 是 in t( 整

型 )、smallin t( 短 整 型 )、tinyin t( 微 整 型 )、numeric

( 数 值 )、decima l( 小 数 )、floa t( 实 型 )、real money

( 货 币 型 )、 smallmoney ( 小 货 币 型 )、 datetime ( 日期 时 间 ) 以 及 smalldatetime ( 小 日 期 时 间 )。 当 进 行日 期 运 算 时 , 可 提 供 一 个 datetime 或 smalldatetime 表 达 式 ; 而 另 一 个 表 达 式 必 须 是 天 数 , 以 便 计 算 日 期表 达 式 。 对 于 字 符 串 的 连 接 , 将 字 符 串 放 在 引 号 中 , 就 可 以 使 用 从 非 字 符 到 字 符 或 从 非 二 进 制 到 二 进 制 表达 式 的 CONVERT( 转 换 ) 或 CAST( 加 法 ) 函 数 。

n n 表 示 前 面 的 各 项 可 以 重 复 。

示例

下 面 这 个 加 号 运 算 符 的 例 子 是 将 两 个 用 数 值 表 达 的 数 加 在 一 起 , 再 将 两 个用 列 名 表 达 的 数 加 在 一 起 :

SELECT 9 + 7

SELECT salary + bonus FROM mymoneytable

在 这 个 例 子 中 ,将 数 值 9 和 7 加 在 一 起 ,也 可 以 用 列 名 表 示 数 值 ,并 使 用 FROM 子 句 。

减 号 (-)

减 号 是 将 两 数 相 减 的 运 算 符 。 也 可 以 用 减 号 运 算 符 从 日 期 中 减 去 天 数 , 该运 算 符 可 以 使 用 列 名 、 常 数 和 / 或 表 达 式 。

语法

expression-expression [ -[ n ]]

变量

expression 对 于 此 运 算 符 , expression 的 数 据 类 型 可 以 是 int ( 整型 )、 smallint ( 短 整 型 )、 tinyint ( 微 整 型 )、 numeric

( 数 值 )、 decimal ( 小 数 )、 float ( 实 型 )、 real money

( 货 币 型 )、 smallmoney ( 小 货 币 型 )、 datetime ( 日 期时 间 ) 以 及 smalldatetime ( 小 日 期 时 间 )。 当 进 行 日 期运 算 时 , 可 提 供 一 个 datetime 或 smalldatetime 表 达式 ; 而 另 一 个 表 达 式 必 须 是 天 数 , 以 便 计 算 日 期 表 达 式 。

n n 表 示 前 面 的 各 项 可 以 重 复 。

示例

下 面 是 减 号 运 算 符 的 示 例 。

SELECT 4-2

本 例 中 , SELECT 语 句 进 行 了 4 减 2 的 运 算 。

乘 号 (*)

乘 号 是 用 于 乘 法 的 运 算 符 , 它 可 使 用 列 名 、 常 数 、 和 / 或 表 达 式 。

语法

expression * expression [ * [ n ]]

变量

expression 对 于 此 运 算 符 , expression 的 数 据 类 型 可 以 是 int

( 整 型 )、smallin t( 短 整 型 )、tinyin t( 微 整 型 )、numeric

( 数 值 )、 decimal ( 小 数 )、 float ( 实 型 )、 real money

( 货 币 型 ) 以 及 smallmoney ( 小 货 币 型 )。

n n 表 示 前 面 的 各 项 可 以 重 复 。

示例

下 面 是 乘 法 运 算 符 的 一 个 例 子 :

SELECT 7*8

本 例 中 , 使 数 字 7 与 数 字 8 相 乘 。

除 号 (/ )

除 号 是 执 行 除 法 的 运 算 符 , 它 可 使 用 列 名 、 常 数 和 / 或 表 达 式 。

语法

expression / expression [/ [ n ]]

变量

expression 对 于 此 运 算 符 , expression 的 数 据 类 型 可 以 是

in t( 整 型 )、 smallin t( 短 整 型 )、 tinyin t( 微 整 型 )、numeri c( 数 值 )、decima l( 小 数 )、floa t( 实 型 )、real

money ( 货 币 型 ) 以 及 smallmoney ( 小 货 币 型 )。

n n 表 示 前 面 的 各 项 可 以 重 复 。

示例

下 面 是 除 法 运 算 符 的 示 例 :

SELECT 56 / 8

本 例 中 , 数 56 除以 8 。

模 及 通 配 符 ( % )

符 号 “ % ” 用 于 两 种 不 同 的 操 作 。 它 可 以 提 供 一 个 数 除 以 另 一 个 数 后 的 余数 , 也 可 以 在 用 列 名 、 常 数 和 / 或 表 达 式 查 找 字 符 串 时 用 作 通 配 符 。 用 关 键 词LIKE 和 通 配 符 可 查 找 日 期 时 间 、 字 符 和 可 变 字 符 等 数 据 类 型 , 但 不 能 查 询 秒 。当 搜 索 不 同 数 据 部 分 的 日 期 时 间 型 值 时 , 最 好 使 用 LIKE 。 如 果 要 搜 索 “ % ”, 可 使 用 方 括 号 。

语法

百 分 号 ( % ) 可 用 作 模 运 算 符 , 它 返 回 相 除 的 余 数 :

SELECT dividend % divisor

或 者 作 为 通 配 符 ( % ) :

string-expression [ N O T ] LIKE string_expression

变量

dividend 模 运 算 ( 返 回 相 除 时 的 余 数 ) 中 要 相 除 的 数 字表 达 式 、 整 型 数 、 短 整 型 数 或 微 短 整 型 数 。

divisor 模 运 算 中 ( 返 回 相 除 时 的 余 数 ) , 要 除 以dividend 的 数 字 表 达 式 、 整 型 数 、 短 整 型 数 , 或微 短 整 型 数 。

string_expression 括 在 引 号 内 的 字 符 串 和 通 配 符 ( % ) 。NOT NOT 是 布 尔 表 达 式 的 否 定 表 示 符 。

LIKE LIKE 进 行 模 式 比 较 。

示例

下 面 是 个 模 运 算 符 返 回 余 数 的 示 例 :

SELECT 87 % 9

本 例 中 , 数 字 87 除 以 数 字 9 , 返 回 余 数 6 。下 面 是 个 通 配 符 ( % ) 的 例 子 :

SELECT *

FROM authors WHERE name

like ′ Heming% ′

本 例 中 , 模 式 比 较 查 找 字 符 串 中 前 6 个 字 符 是 Heming 的 名 称 。

按 位 与 操 作 (& )

先 将 整 型 、 短 整 型 或 微 短 整 型 数 据 转 换 成 二 进 制 表 达 式 。 按 位 与 操 作 可 在二 进 制 表 达 式 上 进 行 操 作 。

语法

expression & expression

变 量 expression 是 转 换 成 二 进 制 的 整 型 、 短 整 型 、 微 短 整 型 数 据 。

示例

下 面 是 按 位 与 操 作 的 示 例 :

SELECT(integer & integer)

0 0 0 1 0 1 0 1 二 进 制 表 示 的 整 数 A

0 1 1 0 1 0 1 1 二 进 制 表 示 的 整 数 B


0 0 0 0 0 0 0 1

本 例 中 , 当 A 的 位 是 0 , B 的 位 是 1 时 , 结 果 是 0 ,当 A 的 位 和 B 的 位 都 为

1 时 , 结 果 是 1 , A 的 位 和 B 的 位 都 为 0 时 , 结 果 是 0 。 A 的 位 为 1 , B 的 位 为 0 时 , 结 果 也 是 0 。

按 位 或 操 作 ( | )

将 整 型 、 短 整 型 或 微 短 整 型 数 据 转 换 成 二 进 制 表 达 式 。 按 位 或 操 作 可 在 二进 制 表 达 式 上 进 行 操 作 。

语法

expression | expression

变 量 expression 是 转 换 成 二 进 制 的 整 型 、 短 整 型 或 微 短 整 型 数 。

示例

下 面 是 按 位 或 操 作 的 例 子 :

(integer | integer)

1 0 1 0 1 0 1 0 二 进 制 表 示 的 整 数 A

1 1 0 0 1 0 1 1 二 进 制 表 示 的 整 数 B


1 1 1 0 1 0 1 1

本 例 中 , 当 A 和 B 的 位 都 是 1 时 , 结 果 是 1 , 当 A 的 位 是 0 , B 的 位 也 是 0 时 , 结 果 是 0 。当 A 的 位 为 0 , B 的 位 数 为 1 时 , 结 果 是 1 , 当 A 的 位 为 1 , B 的位 为 0 时 , 结 果 是 1 。

按 位 异 或 操 作 ( ^ )

将 整 型 、 短 整 型 或 微 短 整 型 数 据 转 换 成 二 进 制 表 达 式 , 按 位 异 或 可 在 二 进制 表 达 式 上 进 行 操 作 。

语法

expression ^ expression

变 量 expression 是 转 换 成 二 进 制 的 整 型 、 短 整 型 、 微 短 整 型 数 据 。 按 位异 或 返 回 表 达 式 的 数 据 类 型 。

示例

下 面 是 按 位 异 或 操 作 的 示 例 :

SELECT(A ^ B)

1 0 1 0 1 0 1 0 二 进 制 表 示 的 整 数 A

0 1 0 0 1 0 1 1 二 进 制 表 示 的 整 数 B


1 1 1 0 0 0 0 1

本 例 中 , 当 A 和 B 的 位 都 是 1 时 , 结 果 是 0 , 当 A 和 B 的 位 都 是 0 时 , 结 果是 0 。 当 A 的 位 为 0 , B 的 位 为 1 , 或 A 的 位 为 1 , B 的 位 为 0 时 , 返 回 值 为 1 。

按 位 非 操 作 ( ~ )

将 整 型 、 短 整 型 或 微 短 整 型 数 据 转 换 成 二 进 制 表 达 式 , 按 位 非 可 在 二 进 制表 达 式 上 进 行 操 作 。

语法

SELECT ~ expression

变 量 expression 是 转 换 成 二 进 制 的 整 型 、 短 整 型 或 微 短 整 型 数 。 按 位 非 返回 表 达 式 的 数 据 类 型 。 由 于 微 短 整 型 、 短 整 型 和 整 型 数 存 储 的 字 节 数 不 同 , 所以 当 存 储 十 进 制 数 时 , 应 注 意 要 与 原 来 使 用 的 数 据 类 型 一 致 。

示例

下 面 是 按 位 非 的 示 例 :

~ 1 1 0 0 1 1 0 0

本 例 中 , 返 回 值 为 0 0 1 1 0 0 1 1 。 所 有 的 1 变 为 0 , 所 有 的 0 变 为 1 。

等 于 (=)

Equal 号 表 示 进 行 比 较 的 两 个 表 达 式 彼 此 相 等 。

语法

expression = expression

变 量 expression 是 任 意 有 效 的 表 达 式 , 它 可 以 是 变 量 或 列 名 。 只 能 比 较 数据 类 型 相 同 的 表 达 式 。

示例

下 面 是 等 于 比 较 运 算 符 的 例 子 :

SELECT *

FROM My Table

WHERE column1=column2

本 例 中 , 表 格 中 的 某 一 列 值 与 另 一 列 值 相 比 较 , 并 选 出 列 值 相 等 的 行 。

大 于 (>)

Great Than 是 一 个 比 较 运 算 符 , 它 将 两 个 表 达 式 进 行 比 较 , 看 哪 一 个 更大 。

语法

expression > expression

变 量 expression 是 任 意 有 效 的 表 达 式 , 它 可 以 是 变 量 或 列 名 。 只 能 比 较 数据 类 型 的 表 达 式 。

示例

下 面 是 Great Than 比 较 运 算 符 的 示 例 :

SELECT *

FROM MyTable

WHERE column1 > column2

本 例 中 , 表 中 column1 列 包 含 的 值 与 column2 列 包 含 的 值 相 比 较 , 看 它 是否 大 于 column2 列 的 值 , 如 果 是 , 就 选 择 此 行 。

小 于 (<)

Less Than 是 个 比 较 运 算 符 , 它 将 两 个 表 达 式 进 行 比 较 , 看 哪 个 值 小 。

语法

expression < expression

变 量 expression 是 任 意 有 效 的 表 达 式 , 可 以 是 变 量 或 列 名 , 只 能 比 较 数据 类 型 相 同 的 表 达 式 。

示例

下 面 是 Less Than 比 较 运 算 符 的 示 例 :

SELECT *

FROM MyTable

WHERE column1 < column2

本 例 中 , 表 中 column1 列 包 含 的 值 与 column2 列 值 相 比 较 , 看 它 是 否 小 于后 者 。 如 果 是 , 则 选 择 此 行 。

大 于 或 等 于 (>=)

Greater Than or Equal To 是 一 个 比 较 运 算 符 , 它 将 表 达 式 进 行 比 较 , 看 其 中 一 个 是 否 大 于 或 等 于 另 一 个 。

语法

expression >= expression

变 量 expression 是 任 意 有 效 的 表 达 式 , 可 以 为 变 量 或 列 名 , 只 能 比 较 数据 类 型 相 同 的 表 达 式 。

示例

下 面 是 Great Than or Equal To 比 较 运 算 符 的 示 例 :

SELECT *

FROM MyTable

WHERE column1 >= column2

本 例 中 , 将 表 中 column1 列 包 含 的 值 与 column2 列 包 含 的 值 进 行 比 较 , 看它 是 否 大 于 或 等 于 后 者 。 如 果 是 , 就 选 择 此 行 。

小 于 或 等 于 (<=)

Less Than or Equal To 是 一 个 比 较 运 算 符 , 它 比 较 两 个 表 达 式 , 看 其 中一 个 表 达 式 是 否 小 于 或 等 于 另 一 个 表 达 式 。

语法

expression <= expression

变 量 expression 是 任 意 有 效 的 表 达 式 , 它 可 以 是 变 量 或 列 名 。 只 能 比 较 数据 类 型 相 同 的 表 达 式 。

示例

下 面 是 Less Then or Equal To 比 较 运 算 符 的 示 例 :

SELECT *

FROM MyTable

WHERE column1 <= column2

本 例 中 , 将 表 格 中 column1 列 包 含 的 值 与 column2 列 包 含 的 值 相 比 较 , 看它 是 否 小 于 或 等 于 第 2 列 包 含 的 值 。 如 果 是 , 则 选 择 此 行 。

不 等 于 (<>)

Not Equal 号 (<>) 表 示 比 较 的 两 个 表 达 式 彼 此 不 相 等 。

语法

expression <> expression

变 量 expression 是 任 意 有 效 的 表 达 式 , 它 可 以 是 变 量 或 列 名 。 只 能 比 较数 据 类 型 相 同 的 表 达 式 。

示例

下 面 是 Not Equal 比 较 运 算 符 的 示 例 :

SELECT *

FROM MyTable

WHERE column1 <> column2

本 例 中 , 将 表 中 某 列 的 值 与 另 一 列 的 值 相 比 较 , 选 出 列 值 不 等 的 行 。

不 小 于 (!<)

Not Less Than 是 一 个 比 较 运 算 符 , 它 用 来 比 较 表 达 式 , 看 某 个 值 是 否 不小 于 另 一 个 值 。

语法

expression !< expression

变 量 expression 是 任 意 有 效 的 表 达 式 , 可 以 是 变 量 或 列 名 。 只 能 比 较 数 据类 型 相 同 的 表 达 式 。

示例

下 面 是 Not Less Than(!<) 比 较 的 示 例 :

SELECT *

FROM MyTable

WHERE column1 !< column2

本 例 中 , 将 表 格 中 column1 列 包 含 的 值 与 column2 列 包 含 的 值 相 比 较 , 看它 是 否 不 小 于 第 二 列 的 值 。 如 果 是 , 选 择 此 行 。

不 等 于 (!=)

此 版 本 的 Not Equal 号 (!=) 表 示 相 比 较 的 两 个 表 达 式 彼 此 不 相 等 。

语法

expression != expression

变 量 expression 是 任 意 有 效 的 表 达 式 , 可 以 是 变 量 或 列 名 。 只 能 比 较 数 据类 型 相 同 的 表 达 式 。

示例

下 面 是 Not Equal 比 较 运 算 符 的 示 例 :

SELECT *

FROM MyTable

WHERE column1 != column2

本 例 中 , 将 表 中 某 一 列 的 值 为 另 一 列 的 值 相 比 较 , 选 出 不 相 等 的 值 。

不 大 于 (!>)

Not Greater Than(!>) 是 一 个 比 较 运 算 符 , 它 比 较 两 个 表 达 式 , 看 哪 一 个

更 大 。

语法

expression !> expression

变 量 expression 是 任 意 有 效 的 表 达 式 , 可 以 是 变 量 或 列 名 , 只 能 比 较 数据 类 型 相 同 的 表 达 式 。

示例

下 面 是 Not Greater Than 比 较 运 算 符 的 示 例 :

SELECT *

FROM MyTable

WHERE column1 !> column2

本 例 中 , 将 表 中 column1 列 包 含 的 值 与 column2 列 包 含 的 值 相 比 较 , 看 它是 否 不 大 于 后 者 , 如 果 是 , 则 选 择 此 行 。

注 释 (--)

服 务 器 会 忽 略 注 释 , 但 是 可 以 用 这 个 语 法 将 注 释 放 在 包 含 Transact-SQL 语 法 的 行 末 , 或 将 注 释 放 在 单 独 的 一 行 中 。 注 释 不 能 包 括 GO 语 句 。

语法

-- Whatever your comment is

变 量 whatever your comment is 可 以 是 任 意 字 符 串 。

示例

下 面 是 注 释 的 例 子 :

SELECT * --Any character string can be placed on a comment line FROM MyTable

本 例 中 , 两 条 虚 线 表 示 注 释 的 开 始 。 SQL Server 将 不 会 检 查 行 中 两 条 虚 线后 面 的 部 分 。

注 释 (/ *...* / )

SQL Server 会 忽 略 注 释 。 可 以 用 此 语 法 将 注 释 放 在 包 含 Transact-SQL 语句 的 行 中 间 , 或 将 注 释 放 在 单 独 的 一 行 或 数 行 中 。 注 释 不 能 包 含 GO 语 句 。

语法

/ * Whatever your comment is * /

变 量 whatever your comment is 可 以 是 任 意 字 符 串 。

示例

下 面 是 注 释 的 示 例 :

/ * Any character string can be placed on a comment line and can span multiple l

ines* /

本 例 中 ,“ / * ” 表 明 注 释 的 开 始 ,“ * / ” 表 示 注 释 的 结 束 。 SQL Server 将 不 会 检 查 “ / * ” 和 “ * / ” 之 间 的 行 的 内 容 。

匹 配 的 通 配 符 ([ ] )

在 通 配 搜 寻 过 程 中 , 方 括 号 ( [ ] ) 表 示 SQL Server 会 搜 索 方 括 号 内 的 任 意字 符 。 方 括 号 内 的 值 也 可 指 定 值 的 范 围 。

escape 子 句 提 供 这 样 一 种 机 制 来 通 知 SQL 服 务 器 : SQL Server 通 常 用 作通 配 语 法 的 某 些 字 符 串 , 现 在 不 在 通 配 环 境 中 使 用 , 而 是 用 作 字 符 串 中 正 在 搜索 的 值 。 换 言 之 , 要 寻 找 串 中 的 字 符 , 而 不 是 将 该 字 符 用 作 通 配 符 。

语法

string_expression [ N O T ] LIKE string_expression [ ESCAPE ′

escape_character′ ]

[| NOT ]string_expression LIKE string_expressio n[ ESCAPE ′ escape_character

′ ]

变量

string_expression string_expression 是 字 符 串 和 通 配 符 。 它

可 以 包 括 方 括 号 以 便 在 某 个 范 围 内 搜 寻 。

NOT NOT 为 布 尔 表 达 式 的 否 定 指 示 符 。

LIKE LIKE 进 行 模 式 匹 配 。

ESCAPE ′ escape_character ′ 该 变 量 表 示 要 搜 寻 串 中 指 定 的 字 符 , 而 不

是 用 作 通 配 句 法 中 的 字 符 。

示例

下 面 的 匹 配 的 通 配 符 示 例 可 搜 寻 列 中 某 范 围 内 的 字 母 :

SELECT *

FROM table2

WHERE column2 LIKE ′ [ C-H ] urry ′

本 例 中 , 将 选 出 column2 列 中 以 字 母 C 到 H 开头,以 “ urry" 结 尾 的 任 何 值 。

下 面 是 搜 寻 列 中 方 括 号 的 例 子 :

CREATE TABLE table1

(column1 char(30))

INSERT Table1 VALUES ( ′ [ Searchforbracket′ ) INSERT table1 VALUES ( ′ Donotsearchforbracket′ ) SELECT column1

FROM table1

WHERE column1 LIKE ′ [[ Searchforbracket′ ESCAPE ′ [′

本 例 中 , ESCAPE 子 句 和 指 定 的 换 码 字 符 “[ ” 用 于 查 找 列 中 的 字 符 串 “ ′

[ Searchforbracket ′ ”。 它 表 示 不 是 将 方 括 号 用 作 通 配 符 , 而 是 寻 找 列 中 的 方括 号 。

不 匹 配 的 通 配 符 ( [ ^ ] )

在 通 配 搜 寻 过 程 中 ,“ ^ ” 表 示 SQL Server 查 找 不 在 方 括 号 内 的 字 符 。 方括 号 内 的 值 也 可 指 定 不 在 搜 寻 范 围 内 的 数 值 。

escape 子 句 提 供 这 样 一 种 机 制 来 通 知 SQL 服 务 器 : SQL Server 通 常 用 作通 配 语 法 的 某 些 字 符 串 , 现 在 不 在 通 配 环 境 中 使 用 , 而 是 用 作 字 符 串 中 不 查 找的 值 。 换 言 之 , 要 寻 找 不 在 串 中 的 字 符 , 而 不 是 将 该 字 符 用 作 通 配 符 。

语法

string_expression [ NOT ] LIKE string_expression [ ESCAPE ′

escape_character′ ]

| [ NOT ] string_expression LIKE string_expression [ ESCAPE ′

escape_character′ ]

变量

string_expression string_expression 是 字 符 串 和 通配 符 , 以 及 引 号 中 放 置 的 任 意 字 符 串 。它 可 以 包 括 方 括 号 以 便 在 某 个 范 围 内 搜寻 。

NOT NOT 为 布 尔 表 达 式 的 否 定 指 示 符 。

LIKE LIKE 进 行 模 式 匹 配 。

ESCAPE ′ escape_character ′ 该 变 量 表 示 要 搜 寻 串 中 指 定 的 字 符 , 而

不 是 用 作 通 配 句 法 中 的 字 符 。

示例

下 面 的 不 匹 配 的 通 配 符 示 例 可 搜 寻 列 中 某 范 围 内 的 字 母 :

SELECT *

FROM table2

WHERE column2 NOT LIKE ′ [ ^I-Z ]′

本 例 中 , 将 从 表 中 选 出 column2 列 中 不 以 字 母 I 到 Z 开 头 的 任 何 值 。

  • 个 字 符 匹 配 的 通 配

    符 (_)

在 通 配 搜 寻 过 程 中 , 下 划 线 会 通 知 SQL Server 搜 寻 后 面 可 以 跟 随string_expression 中 其 余 值 的 单 个 字 符 。 escape 子 句 提 供 这 样 一 种 机 制 来 通知 SQL 服 务 器 : SQL Server 通 常 用 作 通 配 语 法 的 某 些 字 符 , 现 在 不 在 通 配 环 境中 使 用 , 而 是 用 作 字 符 串 中 正 在 搜 索 的 值 。 换 言 之 , 要 寻 找 串 中 的 字 符 , 而 不是 将 该 字 符 用 作 通 配 符 。

语法

string_expression [ NOT ] LIKE string_expression [ ESCAPE ′

escape_character′ ]

| [ NOT ] string_expression LIKE string_expression [ ESCAPE ′

escape_character′ ]

变量

string_expression string_expression 是 字 符 串 和 通配 符 , 以 及 放 在 引 号 中 的 任 意 字 符 串 。它 可 以 包 括 方 括 号 以 便 在 某 个 范 围 内 搜寻。

NOT NOT 为 布 尔 表 达 式 的 否 定 指 示 符 。

LIKE LIKE 进 行 模 式 匹 配 。

ESCAPE ′ escape_character ′ 该 变 量 表 示 要 搜 寻 串 中 指 定 的 字 符 , 而

不 是 用 作 通 配 句 法 中 的 字 符 。

示例

下 面 的 匹 配 的 通 配 符 示 例 可 搜 寻 后 面 能 接 串 中 其 余 值 的 一 个 字 符 :

SELECT *

FROM table2

WHERE column2 LIKE ′ _urry ′

本 例 中 , 将 从 表 中 选 出 后 跟 字 母 “ urry ” 的 任 意 字 符 。

@ @ connections

此 全 局 变 量 可 保 存 自 Microsoft SQL Server 最 近 一 次 启 动 以 来 注 册 和 未成 功 注 册 的 数 目 。

语法

SELECT @@connections

@ @ cpu_busy

全 局 变 量 @@cpu_busy 保 存 了 自 Microsoft SQL Server 最 近 一 次 启 动 以 来 , CPU 执 行 SQL Server 命 令 占 用 的 滴 嗒 (3.3 千 分 之 一 秒 ) 数 。

语法

SELECT @@ cpu_busy

@ @ cursor_rows

全 局 变 量 @@cursor_rows 可 保 存 最 近 一 次 启 动 时 游 标 中 的 行 数 。

如 果 异 步 占 用 游 标 , 则 返 回 值 (-m) 是 当 前 键 集 内 的 行 数 。 如 果 全 部 占 用 游标 , 则 返 回 值 (n) 为 游 标 中 的 所 有 行 。 如 果 没 有 打 开 游 标 , 返 回 值 为 0( 零 ) 。

语法

SELECT @@ cursor_rows

示例

下 面 是 使 用 @@cursor_rows 的 例 子 :

SELECT @@cursor_rows

DECLARE cursor1 CURSOR FOR

SELECT customer_name FROM customer OPEN cursor1

FETCH NEXT FROM cursor1 SELECT @@cursor_rows CLOSE cursor1 DEALLOCATE cursor1

本 例 中 , 因 为 没 有 打 开 游 标 , @@cursor_rows 第 一 次 出 现 时 , 返 回 值 为 0 。下 一 次 出 现 @@cursor_rows 时 , 返 回 值 为 -1 , 因 为 只 有 FETCH NEXT 语 句 异 步 占用 了 一 行 游 标 。

@@datefirst

全 局 变 量 @@datefirst 包 含 SET DATEFIRST 的 值 , 该 设 置 表 示 SQL Server 不 考 虑 是 每 星 期 的 哪 一 天 , 其 中 , 星 期 天 返 回 1 ; 星 期 一 返 回 2 ; 星 期 二 返 回 3 ; 星 期 三 返 回 4 ; 星 期 四 返 回 5 ; 星 期 五 返 回 6 ; 星 期 六 返 回 7 。

语法

SELECT @@datefirst

@@dbts

全 局 变 量 @@dbts 保 存 了 当 前 数 据 库 的 当 前 时 间 戳 。

语法

SELECT @@dbts

@ @ error

全 局 变 量 @@error 保 存 了 对 话 过 程 中 执 行 最 后 一 个 Transact-SQL 语 句 的 错误 号 。 如 果 执 行 Transact-SQL 语 句 时 没 有 出 现 错 误 , @@error 就 设 置 为 0( 零 ) 。如 果 有 一 个 SQL Server 错 误 , @@error 就 将 错 误 号 存 储 在 sysmessages 系 统 表中 。 该 变 量 只 将 错 误 号 保 存 到 下 一 个 Transact-SQL 语 句 开 始 执 行 时 。 只 能 在 执行 完 一 个 Transact-SQL 语 句 , 且 还 没 开 始 执 行 下 一 个 Transact-SQL 语 句 时 查看 全 局 变 量 @@error 。 因 此 , 要 在 语 句 执 行 完 后 立 即 查 看 @@error 失 误 , 如 果 以后 在 Transact-SQL 代 码 中 需 要 @@error 的 值 , 也 可 以 将 @@error 存 储 到 一 个 局部 变 量 中 。

语法

SELECT @@error

示例

下 面 是 将 @@error 存 储 到 局 部 变 量 中 的 例 子 :

DECLARE @error_number int SELECT *

FROM table1

SELECT @error_number = @@error

本 例 中 , @@error 中 的 值 存 储 到 局 部 变 量 @error_number 中 。

@ @ fetch_status

全 局 变 量 @@ fetch_status 可 保 存 游 标 FETCH 语 句 的 状 态 , 其 中 , 零 (0) 表示 指 读 取 成 功 , -1 表 示 读 取 失 败 , -2 表 示 已 读 取 的 行 不 再 有 效 。

语法

SELECT @@fetch_status

示例

下 面 为 使 用 @@fetch_status 的 示 例 :

DECLARE cursor1 CURSOR FOR

SELECT customer_name FROM table1

FETCH NEXT FROM cursor1 W H ILE @@fetch_status = 0 BEGIN

FETCH NEXT FROM cursor1

END

CLOSE cursor1 DEALLOCATE cursor1

本 例 中 , @@fetch_status 用 于 控 制 游 标 。

@ @ identity

全 局 变 量 @@identity 包 含 最 后 一 次 使 用 的 等 同 值 。执 行 INSERT 或 SELECT INTO 语 句 可 以 改 变 全 局 变 量 @@identity , 当 将 成 批 拷 贝 插 入 到 表 中 时 也 会 改 变 全 局变 量 @@identity 。 如 果 对 没 有 等 同 列 的 表 格 进 行 操 作 , 对 话 的 @@ identity 就可 设 置 为 空 。 如 果 操 作 被 回 滚 , @@identity 将 不 复 位 , 而 保 持 其 递 增 的 值 。

语法

SELECT @@identity

示例

下 面 是 使 用 @@identity 的 示 例 :

SELECT @@identity

本 例 中 , 将 显 示 @@identity 的 值 , 在 对 有 全 同 列 的 表 格 进 行 插 入 操 作 后 , 用 此 语 句 可 以 查 看 刚 才 插 入 到 等 同 列 中 的 值 。

@ @ idle

全 程 变 量 @@idle 可 存 储 SQL Server 启 动 后 没 有 使 用 的 3.33 毫 秒 数 。

示例

下 面 是 使 用 @@ idle 的 示 例 :

SELECT @@idle

本 例 中 , 将 显 示 SQL Server 处 于 空 闲 状 态 的 @@idle 时 间 量 。

@ @ io_busy

全 局 变 量 @@io_busy 可 包 含 SQL Server 启 动 后 执 行 输 入 输 出 操 作 的 3.33 毫

秒 数 。

示例

下 面 是 使 用 @@io_busy 的 示 例 :

SELECT @@io_busy

本 例 中 , @@io-busy 将 显 示 SQL-Server 最 近 一 次 启 动 以 来 执 行 输 入 输 出 操作 所 占 用 的 时 间 。

@ @ L A N G ID

全 局 变 量 @@LANGID 可 返 回 当 前 使 用 的 语 言 的 本 地 语 言 ID 。

语法

@@LANGID

@ @ language

全 局 变 量 @@ language 可 保 存 Microsoft SQL Server 当 前 所 用 语 言 的

语 言 名 称 。

语法

SELECT @@language

示例

下 面 是 使 用 @@ language 的 示 例 :

SELECT @@language

本 例 中 , @@language 变 量 将 显 示 SQL Server 所 用 的 语 言 名 称 。

@ @ lock_timeout

全 局 变 量 @@lock_timeout 可 保 存 运 行 过 程 中 的 超 时 锁 定 设 置 , 以 毫 秒 为 单

位 。

语法

SELECT @@lock_timeout

@ @ m ax_connections

全 局 变 量 @@max_connections 可 保 存 Microsoft SQL Server 并 行 联 接 的 最大 值 , 这 个 最 大 值 是 用 sp_configure 运 行 阶 段 的 值 为 SQL Server 配 置 的 。

语法

SELECT @@max_connections

@ @ m ax_precision

全 局 变 量 @@max_precision 可 保 存 由 小 数 或 数 字 型 数 据 使 用 的 精 度 等 级 , 其缺 省 值 为 28 。 在 命 令 提 示 行 上 调 用 sqlservr , 并 使 用 / p 参 数 启 动 Microsoft Server , 就 可 以 改 变 该 变 量 。

语法

SELECT @@max_precision

@@nestlevel

全 局 变 量 @@nestlevel 可 及 时 存 储 当 前 存 储 过 程 在 某 一 位 置 的 嵌 套 级 。 当 一个 存 储 过 程 调 用 另 一 个 存 储 过 程 时 , 嵌 套 级 从 0 开 始 递 增 , 递 增 的 权 限 值 为 32 。

语法

SELECT @@nestlevel

@@options

全 局 变 量 @@options 可 保 存 当 前 对 每 个 用 户 都 有 效 的 SET 选 项 信 息 。 用sp_configure 配 置 选 项 “ user options ” 可 改 变 整 个 设 置 , 并 代 表 @@options , SET 命 令 可 用 于 改 变 语 言 和 查 询 选 项 。 可 以 用 SET 命 令 改 变 选 项 , 然 后 立 刻 检查 @@options 中 的 选 项 值 。

语法

SELECT @@options

@@pack_received

全 局 变 量 @@pack_received 可 保 存 输 入 数 据 包 的 数 目 , 此 数 据 包 为 自Microsoft SQL Server 最 近 一 次 启 动 以 来 接 收 到 的 和 读 取 的 数 据 包 。

语法

SELECT @@ pack_received

@@pack_sent

全 局 变 量 @@pack_sent 可 保 存 输 出 数 据 包 的 数 目 , 此 数 据 包 为 自 Microsoft SQL Server 最 近 一 次 启 动 以 来 发 送 的 数 据 包 。

语法

SELECT @@pack_sent

@@packet_errors

全 局 变 量 packet_errors 可 保 存 Microsoft SQL Server 最 近 一 次 启 动 数 据包 出 现 错 误 的 数 目 。

语法

SELECT @@packet_errors

@@procid

全 局 变 量 @@procid 可 保 存 当 前 正 执 行 的 存 储 过 程 的 ID 。

语法

SELECT @@procid

@ @ remserver

全 局 变 量 @@remserver 位 于 注 册 记 录 中 , 它 包 含 了 远 程 服 务 器 的 名 称 。

语法

SELECT @@remserver

@ @ rowcount

全 局 变 量 @@rowcount 可 保 存 受 Transact-SQL 语 句 影 响 的 行 数 , 这 些Transact-SQL 语 句 是 仅 是 为 那 些 影 响 各 行 的 语 句 执 行 的 , 例 如 : SELECT 语 句 , INSERT 语 句 , UPDATE 语 句 和 DELETE 语 句 。

语法

SELECT @@rowcount

@ @ servername

全 局 变 量 @@servername 可 保 存 本 地 Microsoft SQL Server 的 名 称 。

语法

SELECT @@servername

@ @ servicename

全 局 变 量 @@servicename 可 保 存 Microsoft SQL Server 的 注 册 键MSSQLServer 的 名 称 。

语法

SELECT @@servicename

@ @ spid

全 局 变 量 @@spid 可 保 存 当 前 运 行 的 程 序 的 程 序 ID 。

语法

SELECT @@spid

@ @ textsize

全 局 变 量 @@textsize 可 保 存 SET 选 项 TEXTSIZE 的 当 前 值 。 TEXTSIZE 选 项

可 决 定 SELECT 语 句 能 返 回 的 文 本 或 图 像 数 据 的 最 长 长 度 。

语法

SELECT @@textsize

@ @ timeticks

全 局 变 量 @@timeticks 可 保 存 计 算 机 从 属 滴 嗒 的 长 度 , 1 毫 秒 表 示 1 滴 嗒 。操 作 系 统 认 为 1 滴 嗒 为 31.25 毫 秒 , 或 1 / 32 秒 。

语法

SELECT @@timeticks

@ @ total_errors

全 局 变 量 @@total_errors 可 保 存 自 Microsoft SQL Server 最 近 一 次 启 动 以来 发 现 的 磁 盘 读 / 写 错 误 总 数 。

语法

SELECT @@total_errors

@ @ total_read

全 局 变 量 @@total_read 可 保 存 自 Microsoft SQL Server 最 近 一 次 启 动 以 来查 看 到 的 磁 盘 读 取 总 数 。

语法

SELECT @@total_read

@ @ total_write

全 局 变 量 @@total_write 可 保 存 自 Microsoft SQL Server 最 近 一 次 启 动 以来 查 看 到 的 磁 盘 写 入 总 数 。

语法

SELECT @@total_write

@ @ trancount

全 局 变 量 @@trancount 可 保 存 当 前 对 话 过 程 中 为 用 户 打 开 的 活 动 事 务 的 总

数 。

语法

SELECT @@trancount

@@version

全 局 变 量 @@version 可 保 存 Microsoft SQL Server 当 前 使 用 的 处 理 器 的 版本 日 期 、 版 本 和 类 型 。

语法

SELECT @@version

ABS

ABS 函 数 返 回 数 值 表 达 式 的 绝 对 值 。

语法

ABS(numeric_expression)

变 量 numeric expression 可 以 是 整 型 数 、 短 整 型 数 、 微 短 整 型 数 、 小 数 、浮 点 数 、 货 币 、 数 字 、 实 型 数 或 小 货 币 型 数 。

ACOS

ACOS 函 数 是 一 个 数 学 函 数 , 它 返 回 以 弧 度 表 示 的 角 度 , 即 arc cosine 。

语法

ACOS(float_expression)

变 量 float_expression 是 浮 点 数 数 据 类 型 , 表 示 角 度 的 反 余 弦 。

ALL

ALL 可 返 回 true( 真 ) 或 false( 假 ) , 当 由 子 查 询 返 回 的 内 容 与 表 达 式 想 相 匹配 时 , 就 返 回 真 , 当 不 是 全 部 匹 配 或 完 全 不 匹 配 时 , 返 回 假 。

语法

[ NOT ] expression { = | <> | != | > | >= | !> | < | <= | !< } ALL (subquery)

变量

NOT

expression

NOT 为 布 尔 表 达 式 的 否 定 指 示 符 。

expression 可 以 是 为 列 名 , 常 数 , 函数 、 变 量 、 子 查 询 程 序 、 多 个 常 数 或多 个 函 数

{= | <> |

!= |

> | >= | !> | <

这 些 符 号 代 表 运 算 符 。

<= | !<}

subquery 子 程 序 中 不 能 有 ORDER BY 语 句 , COMPUTE 子 句 和 关 键 词 INTO 。

ALTER DATABASE

ALTER DATABASE 可 改 变 数 据 库 大 小 和 文 件 。

语法

A LTER DATABASE database

{ ADD FILE <filespec> [ ,...n ] [ TO FILEGROUP filegroup_nam e]

| ADD LOG FILE <filespec> [ ,...n ]

| REMOVE FILE logical_file_name

| ADD FILEGROUP filegroup_name

| REMOVE FILEGROUP filegroup_name

| MODIFY FILE <filespec>

| MODIFY FILEGROUP filegroup_name filegroup_property

}

<filespec> ::=

(NAME = ′ logical_file_nam e′

[ , FILENAME = ′ os_file_nam e′ ]

[ , SIZE =size ]

[ , MAXSIZE = { max_size | UNLIMITED } ]

[ , FILEGROWTH =growth_incremen t] )

变量

DATABASE 要 修 改 的 数 据 库 。

ADD FILE ADD FILE 添 加 文 件 或 文 件 组 。

NAME Name 指 文 件 的 逻 辑 名 称 。

FILENAME FILENAME 是 操 作 系 统 上 的 文 件 名 。

SIZE SIZE 是 文 件 开 始 的 大 小 ,MB( 缺 省 值 为 最 小 1MB) 表 示 兆 字 节 , KB 表 示 千 字 节 。 如 果 没 有 提 供 文件 的 大 小 , SIZE 变 量 对 数 据 预 置 为 3MB , 对 记录 预 置 为 1MB 。

MAXSIZE MAXSIZE 是 文 件 可 以 扩 展 的 最 大 容 量 , 以 MB( 缺省 值 ) 或 KB 表 示 。 如 果 没 有 提 供 此 变 量 , 文 件将 扩 展 到 磁 盘 满 为 止 。

UNLIMITED UNLIMITED 表 示 让 文 件 扩 展 至 磁 盘 满 为 止 。

FILEGROWTH FILEGROWTH 指 文 件 一 次 增 长 的 量 ( 缺 省 值 为256KB , 最 小 64KB) , 零 (0) 表 示 没 有 增 长 。

TO FILEGROUP TO FILEGROUP 指 将 文 件 添 加 至 文 件 组 。

FOR RESTORE 这 是 一 个 向 后 兼 容 的 变 量 ( 版 本 6.5 使 用 FOR LOAD) 。 由 于 要 恢 复 数 据 库 , 所 以 无 需 初 始 化 就可 以 建 立 文 件 。

ADD LOG FILE ADD LOG FILE 可 将 记 录 文 件 添 加 到 数 据 库 中 。

DROP LOG FILE DROP LOG FILE 可 从 数 据 库 中 撤 消 记 录 文 件 。

CREATE FILEGROUP CREATE FILEGROUP 可 给 要 建 立 的 文 件 组 命 名 。filegroup_name 要 添 加 或 撤 消 的 文 件 组 名 称 。

REMOVE FILEGROUP REMOVE FILEGROUP 可 指 定 要 撤 消 的 文 件 组 。MODIFY FILE MODIFY FILE 可 指 示 SQL Server 修 改 文 件 的

FILENAME , SIZE 和 MAXSIZE 。

MODIFY FILEGROUP

filegroup_name filegroup_property

示例

MODIFY FILEGROUP 可 给 出 文 件 组 的 文 件 组 属性 。 文 件 组 属 性 有 : READONLY= 只 读 文 件 组 , READWRITE= 允 许 修 改 , DEFAULT= 文 件 组 是 建 立新 表 格 和 新 索 引 的 缺 省 文 件 组 。

下 面 是 ALTER DATABASE 语 句 的 示 例 :

A LTER DATABASE mydatabase ADD FILE (NAME = ′ mddat2 ′ ,

FILENAME = ′ c:\ mssql7 \ data \ mddat2.ndf ′ ,

SIZE =10MB, MAXSIZE=100MB, FILEGROWTH=2MB)

本 例 中 , 文 件 添 加 到 mydatabase 中 , 容 量 为 10MB , 最 大 容 量 为 100MB , 文

件 以 2MB 的 增 量 递 增 。

ALTER PROCEDURE

ALTER PROCEDURE 可 改 变 已 有 的 存 储 过 程 , 但 不 影 响 许 可 与 从 属 对 象 。 如 果要 保 存 可 选 项 , 就 必 须 用 ALTER PROCEDURE 使 用 WITH ENCRYPTION 或 WITH RECOMPILE 。

语法

A LTER PROC [ EDURE ] procedure_name [ ; numbe r]

[ ({ @ parameter_name | parameter } data_type [ = default]

[ OUTPUT ] ) ][ ,...n ]

W ITH { RECOMPILE |ENCRYPTION | RECOMPILE ,ENCRYPTION} ]

[ FOR REPLICATION ] A S

sql_statemen t[ ,...n ]

变量

procedure_name procedure_name 是 要 修 改 的 程 序 名 称

;number number 将 程 序 存 储 集 中 在 一 起 , 以 便 能 一 次 撤消 它 们 。

{ @parameter_name | parameter }

存 储 过 程 的 变 量 或 参 数 。

data_type data_type 是 变 量 或 参 数 的 数 据 类 型 , 不 支 持 图

像 数 据 类 型 。

Default default 是 量 或 参 数 的 缺 省 值 。

OUTPUT OUTPUT 表 示 变 量 或 参 数 用 来 返 回 一 个 值 。

N n 表 示 可 以 列 出 更 多 的 变 量 或 参 数 , 最 多 可 达1,024 个 变 量 或 参 数 。

{ RECOMPILE | ENCRYPTION

| RECOMPILE , ENCRYPTION }

RECOMPILE 表 示 每 次 程 序 执 行 时 都 重 新 编 译 。ENCRYPTION 表 示 将 加 密 存 储 CREATE PROCEDURE

语 句 的 syscomments 系 统 表 格 行 。

FOR REPLICATION FOR REPLICATION 可 筛 选 只 通 过 复 制 执 行 的 存 储

过 程 和 用 FOR REPLICATION 子 句 建 立 的 存 储 程序 。 它 们 不 能 在 订 阅 服 务 器 上 执 行 , 也 不 能 和变 量 WITH RECOMPILE 一 起 使 用 。

AS 存 储 过 程 的 命 令 位 于 关 键 词 AS 的 后 面 。

sql_statement Transact-SQL 语 句 建 立 存 储 过 程 。

n n 表 示 多 个 Transact-SQL 语 句 组 成 存 储 过 程 , 并 可 以 列 出 来 。

示例

下 面 是 ALTER PROCEDURE 语 句 的 示 例 :

A LTER PROCEDURE MyProcedure W ITH ENCRYPTION

A S

SELECT col1,col2 FROM MyTable WHERE col1=5

G O

本 例 中 , 加 密 了 存 储 过 程 。

ALTER TABLE

ALTER TABLE 语 句 可 通 过 撤 消 列 、 添 加 列 、 添 加 表 格 或 列 级 约 束 、 禁 止 或 重新 启 动 约 束 或 触 发 器 来 改 变 指 定 表 格 的 定 义 。

语法

A LTER TABLE MyTable

{

[ W ITH CHECK |WITH NOCHECK ]

{ [ A LTER COLUMN column_name

{

[ new_data_type [ (precision [ , scale ] )]

[ NULL |NOT NULL ] ]

| [ {ADD |DROP} ROWGUIDCOL ]

}

|ADD

{ [ <column_definition> ]

|column_name AS computed_column_expression

|[ <table_constraint> ]

}(,...n)

|DROP

{ [ CONSTRAIN T ] constraint

| COLUMN column

} [ ,...n ]

| {CHECK |NOCHECK} CONSTRAINT

{ALL | constraint [ ,...n ] }

| {ENABLE | DISABLE} TRIGGER

{ALL | trigger[ ,...n ] }

}

}

<column_definition> ::= {column_name data_type}

[ NULL | NOT NULL ]

[ IDENTITY [ (seed [ ,incremen t] )

[ NOT FOR REPLICATION ] ]

[ ROWGUIDCOL ]

[ <column_constraint>::=

[ CONSTRAINT constraint_nam e]

{ { PRIMARY KEY | UNIQUE }

[ CLUSTERED |NONCLUSTERED ]

[ W ITH [ FILLFACTOR = fillfactor]

[[ ,] {SORTED_DATA

| SORTED_DATA_REORG} ]]

[ ON filegroup ]

| [ FOREIGN KEY ]

REFERENCES ref_table

[ ( ref_column) ]

[ NOT FOR REPLICATION ]

| DEFAULT constant_expression

|CHECK [ NOT FOR REPLICATION ]

(logical_expression)

}

] [ ...n ]

<table_constraint> ::= [ CONSTRAINT constraint_nam e]

{ [ { PRIMARY KEY | UNIQUE}

[ CLUSTERED | NONCLUSTERED ]

{ (colum n[ ,...n ] ) }

[ W ITH [ FILLFACTOR = fillfactor]

[[ ,] { SORTED_DATA

| SORTED_DATA_REORG} ]

[ ON filegroup ]

| FOREIGN KEY

[ (colum n[ ,...n ] )]

REFERENCES ref_table [ (ref_colum n[ ,...n ] )]

[ NOT FOR REPLICATION ]

| DEFAULT constant_expression

[ FOR colum n]

| CHECK [ NOT FOR REPLICATION ]

(search_conditions)

}

变量

Table Table 是 要 修 改 的 表 格 名 称 。

WITH CHECK | WITH NOCHECK WITH CHECK | WITH NOCHECK 可 确 定 是 否 检

查 了 新 约 束 的 有 效 性 (WITH CHECK 是 新 约 束的 缺 省 值 ) 或 是 重 新 启 动 (WITH NOCHECK 是重 新 启 动 约 束 的 缺 省 值 )FOREIGN KEY 或 者CHECK 约 束 。

ALTER COLUMN ALTER COLUMN 是 指 修 改 的 列 。

column_name column_name 是 要 修 改 、 增 加 , 或 撤 消 的 列

名 。 该 变 量 不 能 是 文 本 、 图 像 、 ntext 、 时间 戳 、 表 格 的 ROWGUIDCOL; 已 计 算 的 列 、 已复 制 的 列 、 已 索 引 的 列 ; 列 名 不 能 用 于CHECK 、FOREIGN KEY ,UNIQUE 或 PRIMARY KEY

约 束 中 , ( 可 以 改 变 约 束 中 可 变 长 度 列 的 长度 ); 列 名 不 能 与 缺 省 值 一 起 使 用 。

new_data_type New Data Type 指 修 改 列 中 的 新 数 据 类 型 。

precision precision 是 指 数 据 类 型 的 精 度 。

scale scale 是 数 据 类 型 的 尺 度 。

[{ ADD | DROP } ROWGUIDCOL ] 这 些 变 量 说 明 列 是 从 添 加 到 表 格 中 或 是 从

表 格 中 删 去 。 并 说 明 列 是 具 有 ROWGUIDCOL 属 性 ( 全 局 唯 一 标 识 符 列 可 以 分 配 给 唯 一标 识 符 列 的 全 局 唯 一 标 识 符 列 )

ADD ADD 表 示 添 加 列 的 定 义 、 已 计 算 的 列 定 义或 表 格 约 束 。

AS

computed_column_expression

DROP [ CONSTRAINT ]

constraint | COLUMN column

计 算 列 是 虚 拟 列 , 是 新 的 可 选 项 , 现 在可 以 存 储 和 检 索 计 算 列 , 但 是 不 能 INSERT 或 UPDATE 它 。 不 能 将 计 算 列 用 作 关 键 列 , 也 不 能 用 于 PRIMARY KEY , UNIQUE , FOREIGN

KEY 或 CHECK 约 束 。

DROP CONSTRAINT 或 COLUMN 表 示 将 约 束 或

列 从 表 格 中 删 除 。

N N 表 示 前 面 的 项 可 重 复

CHECK | NOCHECK CHECK 选 项 启 用 约 束 , 而 NOCHECK 选 项 禁 用约 束 。 禁 用 约 束 表 示 进 行 INSERT 或 UPDATE 时 不 能 使 用 约 束 条 件 , 这 个 变 量 只 适 用 于FOREIGN KEY 和 CHECK 约 束 。

ALL ALL 是用 CHECK 或 NOCHECK 选 项 启 用 或 禁 用所 有 的 约 束 。

{ENABLE | DISABLE} TRIGGER ENABLE TRIGGER 或 DISABLE TRIGGER 表 示

触 发 器 仍 作 为 数 据 库 中 的 一 个 对 象 , 但 是如 果 禁 用 它 , INSERT 、 UPDATE 和 DELETE 语句 将 不 能 启 动 触 发 器 。

ALL ALL 是 用 ENABLE TRIGGER 或 DISABLE

TRIGGER 选 项 启 用 或 禁 用 所 有 触 发 器 。

trigger trigger 是 要 启 用 或 禁 用 的 触 发 器 名 。

data_type Data_type 是 新 列 的 SQL Server 数 据 类 型 。如 果 用 唯 一 标 识 符 数 据 类 型 , 且 表 格 中 已有 几 行 , 就 可 以 用 DEFAULT 约 束 和 NEWID() 函 数 为 已 存 在 的 行 在 新 列 中 生 成 唯 一 的 标识 符 值 。

NULL | NOT NULL NULL 或 者 NOT NULL 确 定 列 能 否 存 储 Null 值 。 如 果 表 格 中 有 行 , 且 使 用 NOT NULL , 则 使 用 DEFAULT 约束 WITH VALUES , 已 有 行

的 新 列 将 自 动 包 含 缺 省 值 。

IDENTITY IDENTITY 是 一 个 属 性 , 它 可 用 来 将 递 增 的整 数 放 在 新 列 中 。 如 果 表 格 中 已 有 行 , 用IDENTITY 属 性 添 加 一 列 , 为 已 有 行 添 加 的新 列 将 自 动 为 已 有 的 行 在 每 个 新 列 中 包 含递 增 的 整 数 。 在 将 来 添 加 新 行 时 , 也 能 执行 上 述 操 作 。

seed seed 指 用 IDENTITY 属 性 添 加 一 列 时 第 一 行

的 整 数 值 , 它 也 表 明 新 IDENTITY 列 中 的 值从 哪 儿 开 始 。如 果 不 用 此 关 键 词 ,SQL Server 就 把 值 1 放 到 该 列 中 。

Increment 如 果 用 IDENTITY 属 性 添 加 一 列 , 当 添 加 新行 时 , Increment 就 是 新 IDENTITY 列 中 要增 加 的 增 量 。 如 果 不 用 Increment , SQL Server 将 对 最 后 添 加 的 行 中 的 值 加 1 。

NOT FOR REPLICATION 如 果 使 用 复 制 , 并 用 IDENTITY 属 性 添 加 一

列 , 可 用 该 变 量 通 知 SQL Server , 当 SQL Server 系 统 复 制 注 册 ( 例 如 sqlrepl) 将 数据 插 入 到 表 格 中 时 , 不 要 施 加 IDENTITY 条件。

CONSTRAINT CONSTRAINT 选 项 是 指 如 何 建 立 PRIMARY KEY 、UNIQUE 、FOREIGN KEY 、CHECK 或 DEFAULT

约 束 。 CONSTRAINT 用 来 保 持 数 据 的 完 整 性 , 添加 CONSTRAINT 可 以 建 立 索 引 。

constraint_name constraint_name 是 新 建 立 CONSTRAINT 的名 称 。 如 果 没 给 约 束 命 名 , 那 么 SQL Server 将 为 其 命 名 。

PRIMARY KEY PRIMARY KEY 是 一 个 约 束 ( 一 个 表 格 中 只 有一 个 ) , 它 在 一 列 或 几 列 中 建 立 唯 一 的 索引 , 并 将 一 列 或 几 列 指 定 为 表 格 中 主 键 。

UNIQUE 列 值 可 以 是 表 中 唯 一 的 值 。 但 不 必 指 定 为主 键 。 UNIQUE 约 束 可 建 立 列 中 唯 一 的 索 引 。

CLUSTERED | NONCLUSTE-RED 如 果 要 建 立 PRIMARY KEY( 缺 省 值 为

CLUSTERED) 或 UNIQUE( 缺 省 值 为 NON- CLUSTERED) 约 束 , CLUSTERED 或

NONCLUSTERED 可 确 定 添 加 何 种 索 引 。 如 果已 有 成 簇 索 引 , 就 不 能 使 用 CLUSTERED , 除非 删 除 了 现 有 的 CLUSTERED 索 引 , 因 为 一个 表 格 中 只 能 有 一 个 索 引 。 如 果 已 有 一 个成 簇 索 引 , 再 添 加 PRIMARY KEY 约 束 , 该变 量 的 缺 省 值 就 是 NONCLUSTERED 。

WITH FILLFACTOR =fillfactor WITH FILLFACTOR 说 明 每 一 索 引 页 中 有 多 少

数 据 。 可 选 值 是 1 到 100 , 缺 省 值 为 0 , 以百 分 数 表 示 。 填 充 因 子 越 低 , 页 中 索 引 项

SORTED_DATA | SORTED_DATA_REORG

可 用 的 空 间 就 越 多 , 这 样 , 页 中 就 为 插 入新 行 留 出 了 更 多 的 空 间 , 也 就 不 需 SQL Server 为 新 行 分 配 较 多 的 空 间 。

SORTED DATA 通 知 SQL Server 数 据 已 分 类 , 当 添 加 成 簇 索 引 时 , SQL Server 就 不 必 对数 据 分 类 。 SQL Server 将 进 行 检 查 , 并 通过 检 查 索 引 值 来 确 保 数 据 按 分 类 排 列 。 如果 检 查 失 败 , 将 返 回 错 误 , ALTER table 也失 败 , 另 一 方 面 , SORTED_DATA_REORG 通 知SQL Server 数 据 已 经 分 类 , 只 需 在 磁 盘 上重 新 组 织 这 些 数 据 。 当 使 用 FILLFACTOR OPTION 时 使 用 SORTED_DATA_REORG 可 改 变

数 据 在 页 中 的 存 储 方 式 。 用 DBCC SHOWCONTIG 可 确 认 表 格 是 否 已 经 分 段 , 是否 需 要 重 新 组 织 。

ON filegroup ON filegroup 可 决 定 为 约 束 建 立 的 索 引 将驻 留 在 磁 盘 的 哪 一 部 分 。 如 果 不 用 ON filegroup , 索 引 将 与 表 格 放 在 同 一 文 件 组中 。 当 添 加 PRIMARY KEY CLUSTERED 索 引或 UNIQUE CLUSTERED 索 引 时 , 使 用 ON filegroup 会 出 现 下 面 的 情 况 : 由 于 成 簇 索引 的 数 据 位 于 成 簇 索 引 的 底 部 , 整 个 表 格

将 向 指 定 的 文 件 组 移 动 。

FOREIGN KEY...

REFERENCES

FOREIGN KEY...REFERENCES 可 通 过 确 保 列

中 的 每 一 项 位 于 引 用 表 格 的 列 中 , 来 建 立

ref_table ref_column

保 持 引 用 完 整 性 的 约 束 。

ref_table 是 FOREGIGN KEY 约 束 所 引 用 的表 格 名 称 。

ref_column 是 FOREIGN KEY 约 束 所 引 用 的

列。

NOT FOR REPLICATION 如 果 正 使 用 复 制 , 并 用 IDENTITY 属 性 添 加

一 列 , 用 NOT FOR REPLICATION 通 知 SQL

Server , 当 SQL Server 系 统 复 制 注 册 ( 例如 sqlrepl) 将 数 据 插 入 表 格 时 不 施 加IDENTITY 条 件 。

DEFAULT DEFAULT 是 一 种 约 束 ,如 果 没 有 指 定 INSERT 列 中 的 值 , 它 决 定 插 入 列 中 的 值 。 由 于 一列 中 只 能 有 一 个 值 , 当 列 中 带 有 时 间 戳 数据 类 型 、 IDENTITY 属 性 或 另 一 个 DEFAULT 约 束 时 , 不 能 使 用 DEFAULT 约 束 。 如 果 需添 加 另 一 个 DEFAULT 约 束 , 必 须 撤 消 旧 的缺 省 值 。 DEFAULT 可 以 将 数 值 添 加 至 已 有 行的 新 列 中 , 这 一 方 面 它 的 功 能 很 强 。

VALUES VALUES 可和 DEFAULT 一 起 使 用 , 是 已 有 行

的 新 值 , 它 还 可 用 于 以 ALTER TABLE 添 加的 新 列 。

constant_expression constant_expression 可 和 DEFAULT 一 起 使

用 , 是 列 的 缺 省 值 , 它 可 以 是 常 数 、 NULL 或 系 统 函 数 。

CHECK CHECK 是 一 种 约 束 , 它 限 制 可 以 插 入 到 列 中的 值 。

logical_expression logical_expression 可 以 引 用 同 一 行 中 其

它 的 列 , 其 返 回 值 为 true 或 false 。

column [ ,...n ] column 表 示 约 束 的 列 目 录 。

FOR column FOR column 是 和 DEFAULT 约 束 一 起 使 用 的列。

示例

下 面 是 个 ALTER TABLE 语 句 的 示 例 :

A LTER TABLE MyTable ADD col1 int null CONSTRAINT myconstraint UNIQUE

G O

本 例 中 , 单 独 的 约 束 和 列 添 加 到 表 格 中 。

ALTER TRIGGER

Transact-SQL 现 在 能 修 改 触 发 器 对 象 , 不 必 为 修 改 触 发 器 对 象 而 从 数 据 库中 和 syscomments 系 统 表 中 删 除 它 。 修 改 触 发 器 的 功 能 很 重 要 , 因 为 触 发 器 携带 了 其 它 参 数 和 许 可 , 一 旦 撤 消 对 象 , 参 数 与 许 可 就 将 被 删 除 。 只 修 改 对 象 而不 是 删 除 它 , 将 保 留 与 对 象 有 关 的 参 数 和 许 可 , 如 果 使 用 CREETE TRIGGER 语 句的 WITH APPEND 选 项 , 那 么 每 个 Update , Insert Delete 可 以 有 多 个 触 发 器 , 这 意 味 着 每 个 Update 、Insert 、Delete 可 以 启 动 多 个 触 发 器 。 这 种 WITH APPEND 功 能 包 含 在 由 sp_dbcmptlevel 设 置 的 7.0 级 别 的 兼 容 中 。 WITH APPEND 只 需 要65 或 60 级 别 的 兼 容 , 因 为 当 兼 容 级 别 达 到 70 时 , WITH APPEND 就 是 缺 省 操 作 。

触 发 器 受 其 可 使 用 的 Transact-SQL 语 句 的 限 制 , 触 发 器 中 不 能 使 用 下 列Transact-SQL 语 句 :

  • ALTER DATABASE · LOAD LOG

  • ALTER TABLE · RESTORE LOG

  • ALTER TRIGGER · REVOKE

  • CREATE DATABASE · SELECT INTO( 因 为 该 语 句 创 建 了 表 格 )

  • CREATE DEFAULT

  • CREATE PROCEDURE · TRUNCATE TABLE

  • CREATE RULE · ALTER PROCEDURE

  • CREATE TABLE · ALTER VIEW

  • CREATE TRIGGER · CREATE INDEX

  • DENY · CREATE TABLE

  • DISK INIT · CREATE VIEW

  • DROP DATABASE · DISK RESIZE

  • DROP DEFAULT · DROP INDEX

  • DROP PROCEDURE · DROP TABLE

  • DROP RULE · GRANT

  • DROP TRIGGER · RESTORE DATABASE

  • DROP VIEW · RECONFIGURE

  • LOAD DATABASE · UPDATE STATISTICS

语法

A LTER TRIGGER trigger_name ON table

[ W ITH ENCRYPTION ]

{FOR { [ ,] [ INSERT ] [ ,] [ UPDATE ] [ ,] [ DELETE ] }

[ NOT FOR REPLICATION ] A S

sql_statement [ ...n ]

} | {FOR { [ ,] [ INSERT ] [ ,] [ UPDATE ] }

[ NOT FOR REPLICATION ] A S

IF UPDATE (column)

[ {AND | OR} UPDATE (column) [ ,...n ] ]

sql_statemen t[ ...n ] }

变量

TriggerName 要 修 改 的 触 发 器 名 。

TableName 触 发 器 执 行 时 所 在 的 表 格 。

WITH ENCRYPTION 加 密 syscomments 系 统 表 中 的 代 码 。

{[ , ][ INSERT ][ , ][ UPDATE ] [ , ]

[ DELETE ] } | { [ , ][ INSERT ][ , ]

[ UPDATE ] }

NOT FOR REPLICATION AS

指 明 启 动 触 发 器 的 语 句 的 关 键 词 。

如 果 与 复 制 有 关 的 sqlrepl 注 册 ID 修改 了 表 格 , 就 不 启 动 触 发 器 。

表 示 下 一 个 语 句 是 Transact-SQL 语句 。

Transact-SQL statement(s) 是 触 发 器 的 Transact-SQL 语 句 。

IF UPDATE (ColumnName) 根 据 是 否 对 指 定 列 进 行 INSERT 或

UPDATE , 来 提 供 IF 逻 辑 。

ColumnName 检 查 INSERT 操 作 或 UPDATE 操 作 的 列名 。

示例

下 面 是 ALTER TRIGGER 语 句 的 示 例 :

A LTER TRIGGER mytrigger ON tablename

FOR INSERT

AS RAISERROR ( ′ mytrigger error′ ,1, 2)

本 例 中 , 修 改 了 触 发 器 mytrigger 。

ALTER VIEW

ALTER VIEW 能 修 改 视 图 对 象 , 而 不 必 为 修 改 视 图 对 象 而 将 该 对 象 从 数 据 库中 或 syscomments 系 统 表 中 删 除 它 。 修 改 视 图 的 功 能 很 重 要 , 因 为 视 图 携 带 了其 他 参 数 和 许 可 , 删 除 对 象 时 , 这 些 参 数 和 许 可 也 被 删 除 , 只 修 改 对 象 而 不 是删 除 它 , 将 保 留 与 对 象 有 关 的 参 数 和 许 可 。 SELECT 语 句 中 不 要 引 用 临 时 表 , 也不 能 包 括 ORDER BY 子 句 、 COMPUTE 子 句 、 COMPUTE BY 子 句 或 关 键 词 INTO 。

语法

A LTER VIEW view_name column [ ,...n] )]

[ W ITH ENCRYPTION ]

A S

select_statement [ W ITH CHECK OPTION ]

变量

view_name 要 修 改 的 视 图 名

Column [ , n ] Column 是 列 名 的 名 称 , 用 逗 号 分 隔开 , 是 视 图 的 一 部 分 。

WITH ENCRYPTION 加 密 syscomments 系 统 表 中 的 对 象 。

AS 表 示 下 一 个 语 句 是 Transact-SQL 语句 。

select_statement [ WITH CHECK OPTION ]

SELECT 语 句 是 视 图 的 基 础 , WITH CHECK OPTION 表 示 SQL Server 将 进行 检 查 , 以 确 保 视 图 的 任 意 数 据 修 改语 句 都 符 合 视 图 中 select_statement 包 含 的 边 界 设 置 。

示例

下 面 是 使 用 ALTER VIEW 的 语 句 的 示 例 :

CREATE VIEW MyView A S

SELECT column1,column2 FROM MyTable

本 例 中 , 修 改 了 视 图 , 而 没 有 删 除 并 再 创 建 它 。

AND

AND 语 句 可 串 接 两 个 条 件 。 当 两 个 条 件 都 为 真 时 , 它 也 为 真 。 SQL Server 中 AND 运 算 符 先 于 其 他 逻 辑 运 算 符 进 行 , 如 果 使 用 括 号 , 将 影 响 执 行 逻 辑 运 算符 的 顺 序 。

语法

[ N O T ] <predicate>AND [ N O T ] <predicate> [ , n ]

变量

NOT NOT 是 布 尔 表 达 式 的 否 定 指 示 符Prepredicate [ , ] Predicate 也 称 为 表 达 式 , 用 逗 号 分 隔

开 , 它 返 回 TRUE 或 FALSE 。

示例

下 面 是 AND 语 句 的 示 例 :

SELECT *

FROM MyTable

WHERE column1 = column2 AND column3 = column4

本 例 中 , 会 选 择 出 表 格 中 的 Column 1 等 于 Column 2 ,且 Column 3 等 于 Column 4 的 行 。

ANY

使 用 关 键 字 ANY , 将 返 回 TRUE 和 FALSE , 即 使 与 子 查 询 程 序 一 起 使 用 也 是如 此 ( 不 返 回 子 查 询 程 序 的 行 , 只 返 回 TRUE 或 FALSE) 。

当 子 查 询 中 检 索 出 的 数 据 与 表 达 式 中 的 比 较 相 符 时 返 回 TRUE 。

当 对 子 查 询 程 序 中 所 有 的 行 进 行 比 较 出 现 错 误 时 , 返 回 FALSE , 子 查 询 程 序没 有 找 到 行 时 也 返 回 FAUISE 。

语法

[ NOT ] expression { = | <> | != | > | >= | !> | > | <= | !< }

{SOME|ANY}(subquery)

变量

NOT NOT 是 布 尔 表 达 式 的 否 定 指 示 符 。

Expression 表 达 式 可 以 是 列 名 、常 数 、函 数 、变量、子 查 询 程 序 、 几 个 常 数 或 几 个 函 数 。

{=|< >|!=|>|>=|!> |<|<=|!<} 这 些 符 号 表 示 算 术 运 算 符 。

subquery 子 查 询 程 序 中 不 允 许 出 现 ORDER BY 子句、 COMPUTE 子 句 、 关 键 词 INTO 。

示例

下 面 是 关 键 字 ANY 的 示 例 :

IF @myvar>= ANY (SELECT au_lname FROM authors)

PRINT ′ O K , this value is not less than all the names in the table ′ ELSE

PRINT ′ Sorry, you cannot use a value less than all the names in the table ′ 本 例 中 , 返 回 TRUE 。

APP_NAME

如 果 程 序 设 置 此 函 数 , 执 行 的 对 话 将 返 回 最 大 长 度 的 字 符 型 或 可 变 字 符 型程 序 名 。 用 此 函 数 可 以 确 定 哪 个 客 户 应 用 程 序 在 运 行 Microsoft SQL Server。

语法

APP_NAM E ( )

示例

下 面 是 APP_NAME() 函 数 的 示 例 :

SELECT APP_NAME()

本 例 中 , 将 选 择 出 返 回 “ MS SQL Query Analyzer ” 的 APP_NAME 的 内 容 , 因 为 是 在 Query Analyzer 中 执 行 程 序 而 且 Query Analyzer 设 置 了 此 函 数 。

ASCII

ASCII 函 数 返 回 的 整 数 表 示 字 符 表 达 式 最 左 边 的 字 符 的 ASCII 代 码 值 。

语法

ASCII (character_expression)

字 母 变 量 character_expression 可 以 是 常 量 、 变 量 或 列 。

示例

下 面 是 ASCII 函 数 的 示 例 :

SELECT ASCII("AB")

本 例 中 , 返 回 的 “ 65 ” 是 字 符 A 的 ASCII 码 值 , 因 为 不 管 A 字 符 后 面 放 置什 么 字 符 , 都 返 回 字 符 表 达 式 中 最 左 边 的 字 符 的 ASCII 码 值 。

ASIN

数 学 函 数 ASIN 返 回 以 弧 度 表 示 的 角 度 。 该 函 数 通 常 是 指 反 正 弦 函 数 。 如 果看 到 错 误 信 息 “ 域 有 差 错 ” ,Microsoft SQL Server 是 指 角 度 值 不 在 ASIN 函 数的 有 效 范 围 内 。

语法

ASIN(float_expression)

变 量 float_expression 是 浮 点 型 数 据 。

示例

下 面 是 ASIN 函 数 的 示 例 :

SELECT ASIN (.345986)

本 例 中 ,正 弦 值 为 0.345986 的 浮 点 表 达 式 ,其 返 回 值 0.35328948592348308 是 以 弧 度 表 示 的 角 度 。

ATAN

数 学 函 数 AIAN 返 回 以 弧 度 表 示 的 角 度 , 此 角 度 的 正 切 是 作 为 变 量 传 递 给 该函 数 的 浮 点 表 达 式 , 该 函 数 也 称 为 反 正 切 函 数 。

语法

ATAN (float_expression)

变 量 float expression 是 浮 点 型 数 据 。

示例

下 面 是 ATAN 函 数 的 示 例 :

SELECT ATAN(0.345986)

本 例 中 ,正 切 值 为 0.345986 的 浮 点 表 达 式 ,其 返 回 值 0.33309440694206421 是 以 弧 度 表 示 的 角 度 。

ATN2

数 学 函 数 ATN2 返 回 角 度 的 弧 度 值 , 此 角 度 的 正 切 位 于 两 个 作 为 变 量 传 递 给函 数 的 浮 点 表 达 式 之 间 , 该 函 数 也 称 为 反 正 切 函 数 。

语法

ATN2(float_expression,float_expression)

变 量 float expression 是 浮 点 型 数 据 , 且 必 须 给 出 两 个 浮 点 表 达 式 。

示例

下 面 是 ATN2 函 数 的 示 例 :

SELECT ATN2 (.34 , .35)

本 例 中 , 返 回 值 0.77090642433194834 是 以 弧 度 表 示 的 角 度 , 该 角 度 的 正切 位 于 两 个 浮 点 表 达 式 0.34 和 0.35 之 间 。

AVG

AVG 是 个 集 合 函 数 ,它 计 算 出 数 值 列 的 平 均 值 ,但 忽 略 给 定 表 达 式 中 的 空 值 。如 果 使 用 了 DISTINCT , 则 对 重 复 的 值 只 取 一 次 进 行 平 均 。

语法

AVG ([ ALL | DISTINCT ] expression)

变量

ALL 集 合 函 数 适 用 于 所 有 数 值 , ALL 是 缺 省 值 。

DISTINCT 对 重 复 的 值 只 取 一 次 进 行 平 均 。

expression 表 达 式 可 以 是 常 数 、 列 名 、 函 数 、 子 查 询 程 序 、算 术 运 算 符 、 按 位 运 算 符 和 字 符 串 运 算 符 。

示例

下 面 是 AVG 集 合 函 数 的 示 例 :

SELECT AVG (age)

FROM table1

本 例 中 , 对 表 table1 中 的 “ age ” 列 进 行 平 均 并 返 回 。 如 果 任 意 行 有 NULL 值 , 则 此 行 被 忽 略 。

BACKUP

BACKUP 语 句 可 备 份 整 个 数 据 库 , 事 务 处 理 记 录 、 文 件 或 文 件 组 。

语法

备 份 整 个 数 据 库 的 语 法 :

BACKUP DATABASE {database_name | @database_name_var} TO <backup_device> [ ,...n ]

[ W ITH

[ BLOCKSIZE = {blocksize | @blocksize_variable} ]

[[ ,] DESCRIPTION = { text | @text_variable} ]

[[ ,] DIFFERENTIA L]

[[ ,] EXPIREDATE ={ date | @date_var}

| RETAINDAYS = {days|@days_var} ]

[[ ,] FORMAT | NOFORMAT ]

[[ ,] {INIT |NOINIT} ]

[[ ,] MEDIADESCRIPTION ={ text | @text_variable} ]

[[ ,] MEDIANAME ={ media_name | @media_name_variable} ]

[[ ,] [ NAME ={ backup_set_name | @backup_set_name_var} ]

[[ ,] {NOSKIP |SKIP}]

[[ ,] {NOUNLOAD |UNLOAD }]

[[ ,] [ RESTART ]

[[ ,] STATS [ = precentage ]]

语法

备 份 属 于 某 数 据 库 的 文 件 或 文 件 组 的 语 法 :

BACKUP DATABASE {database_name | @database_name_var}

<file_or_filegroup> [ ,...n ] TO <backup_device> [ ,...n ]

[ W ITH

[ BLOCKSIZE = {blocksize | @blocksize_variable} ]

[[ ,] DESCRIPTION = { text | @text_variable} ]

[[ ,] EXPIREDATE ={ date | @date_var}

| RETAINDAYS = {days|@days_var} ]

[[ ,] FORMAT | NOFORMAT ]

[[ ,] {INIT |NOINIT} ]

[[ ,] MEDIADESCRIPTION ={ text | @text_variable} ]

[[ ,] MEDIANAME ={ media_name | @media_name_variable} ]

[[ ,] N A M E ={ backup_set_name | @backup_set_name_var} ]

[[ ,] {NOSKIP |SKIP}]

[[ ,] {NOUNLOAD |UNLOAD }]

[[ ,] [ RESTART ]

[[ ,] STATS [ = precentage ]]

语法

备 份 事 务 处 理 记 录 的 语 法 :

BACKUP LOG {database_name | @database_name_var}

{

[ W ITH

{ NO_LOG | TRUNCATE_ONLY } ]

}

|

{

TO <backup_device> [ ,...n ]

[ W ITH

[ BLOCKSIZE = {blocksize | @blocksize_variable} ]

[[ ,] DESCRIPTION = { text | @text_variable} ]

[[ ,] EXPIREDATE ={ date | @date_var}

| RETAINDAYS = {days|@days_var} ]

[[ ,] FORMAT | NOFORMAT ]

[[ ,] {INIT |NOINIT} ]

[[ ,] MEDIADESCRIPTION ={ text | @text_variable} ]

[[ ,] MEDIANAME ={ media_name | @media_name_variable} ]

[[ ,] [ NAME ={ backup_set_name | @backup_set_name_var} ]

[[ ,] NO_TRUNCATE ]

[[ ,] {NOSKIP |SKIP}]

[[ ,] {NOUNLOAD |UNLOAD }]

[[ ,] [ RESTART ]

[[ ,] STATS [ = precentage ]]

}

<backup_device>::=

{

{backup_device_name | @ backup_device_name_var}

|

{DISK | TYPE | PIPE }=

{ ′ temp_backup_device ′ |@ temp_backup_device_var}

}

<file_or_filegroup>::=

{

FILE ={ logical_file_name | @ logical_file_name_var}

|

FILEGROUP = { logical_filegroup_name | @ logical_filegroup_name_var}

}

变量

DATABASE 如 果 使 用 该 变 量 , 就 命 令 Microsoft SQL Server 对 数 据 库 进 行 完 整 的 备 份 。 也 可 以 和 文 件 或 文 件组 列 表 一 起 使 用 该 变 量 , 这 将 限 定 将 数 据 库 备 份到 指 定 的 文 件 或 文 件 组 中 。 现 在 , Microsoft SQL Server 7 在 恢 复 备 份 文 件 时 , 只 备 份 足 以 建 立 数据 库 的 记 录 , 并 带 有 完 整 的 事 务 处 理 。

databasename 此 变 量 是 包 含 在 备 份 程 序 中 的 数 据 库 名 , 可 以 用

变 量 或 常 数 串 的 形 式 传 递 数 据 库 名 称 。databasename = @dbvariable 或 者 databasename = plaintextname 。

backupfilename 此 变 量 是 由 sp_addumpdevice 建 立 的 备 份 设 备 的

逻 辑 名 称 。 该 名 称 必 须 遵 从 标 识 符 1 ~ 128 字 符 的命 名 规 则 。 可 以 用 变 量 或 常 数 串 的 形 式 传 递 备 份文 件 名 : backupfilename=@BFNvariable 或backupfilename=plaintextname

{DISK | TAPE | PIPE}=PATHFILENAME

此 变 量 允 许 自 由 直 接 备 份 至 文 件 , 而 不 必 使 用 逻辑 备 份 设 备 , 第 一 次 进 行 备 份 时 建 立 新 文 件 , 以后 再 进 行 备 份 时 可 以 使 用 该 文 件 。 关 于 临 时 备 份文 件 :DISKDISK 备 份 文 件 每 次 都 重 新 建 立 , 要 使 用完 整 的 路 径 和 文 件 名 。 TAPE 对 于 有 效 的 Microsoft Tape 格 式 数 据 集 , 使 用 WITH FORMAT 。 要 使 用 完整 的 路 径 和 文 件 名 。 例 如 : \ \ . \ tape0 。 PIPE 由 客 户 应 用 程 序 使 用 的 指 定 管 道 的 客 户 机 名 称 。可 以 用 变 量 或 常 量 字 符 串 的 形 式 传 递 临 时 备 份 文件 名 : tempbackupfilename = @TBFvariable 或tempbackupfilename= plaintextname

NOUNLOAD 此 变 量 可 确 定 备 份 后 磁 带 不 会 从 磁 带 驱 动 器 上 自动 卸 载 。 用 这 种 方 式 设 定 此 设 置 , 直 到 备 份 命 令中 给 出 改 变 此 设 置 的 UNLOAD 指 令 为 止 。

UNLOAD 此 变 量 确 定 备 份 完 成 以 后 , 磁 带 将 自 动 倒 回 并 卸载 , 这 是 磁 带 驱 动 器 的 缺 省 设 置 。 用 这 种 方 式 设定 此 设 置 , 直 到 备 份 命 令 中 给 出 改 变 此 设 置 的

NOUNLOAD 指 令 为 止 。

DESCRIPTION 这 是 用 户 定 义 的 文 本 , 用 来 提 供 备 份 信 息 。 可 以

键 入 多 达 255 个 字 符 说 明 其 内 容 , 也 可 以 是 日 期或 与 以 后 备 份 的 标 识 符 有 关 的 任 何 其 他 信 息 。

BLOCKSIZE 指 定 块 的 实 际 大 小 , 以 字 节 表 示 。 DISK 不 用 TAPE 只 有 在 用 FORMAT 覆 盖 磁 带 时 才 使 用 , 否 则 备 份 程序 可 以 确 定 最 合 适 的 容 量 , 除 非 忽 略 此 变 量 , 自己 给 出 磁 带 的 块 容 量 。 PIPE 如 果 没 有 给 出 块 的 大小 , Microsoft SQL Server 将 使 用 65 , 536 。

FORMAT 此 变 量 改 写 备 份 文 件 和 介 质 标 题 。 可 以 利 用 格 式重 新 初 始 化 带 状 的 备 份 集 。 如 果 使 用 了 该 变 量 , 就 不 必 使 用 SKIP 和 INIT 变 量 , 因 为 FORMAT 可 自动 调 用 它 们 。 对 于 所 有 的 FORMAT 命 令 , 该 变 量 还删 除 数 据 和 标 题 信 息 , 使 用 时 须 注 意 。 FORMAT 也会 删 除 口 令 信 息 。

NOFORMAT NOFORMAT 和 FORMAT 正 相 反 。 它 不 改 写 所 有 卷 上 的

介 质 标 题 , 也 不 改 写 备 份 文 件 。

MEDIANAME 此 变 量 可 以 是 多 达 128 个 字 符 的 用 户 定 义 文 本 , 此 文 本 是 备 份 介 质 集 的 介 质 名 称 。 如 果 给 出 介 质名 称 , 媒 体 名 称 将 试 图 与 备 份 卷 的 介 质 名 称 相 匹配 。 如 果 没 有 给 出 介 质 名 称 , 或 使 用 了 SKIP 变 量 , 就 不 会 检 查 介 质 名 称 的 匹 配 情 况 。 如 果 该 变 量 与

FORMAT 变 量 一 起 使 用 , MEDIANAME 将 作 为 介 质 名称 , 和 NT 备 份 共 用 的 磁 带 必 须 有 介 质 名 称 。

MEDIADESCRIPTION 此 变 量 可 有 255 个 字 符 , 是 描 述 介 质 集 的 用 户 定

义 文 本 。

INIT 此 变 量 指 要 覆 盖 设 备 上 的 所 有 数 据 , 只 有 INIT 备份 文 件 在 DISK 或 TAPE 介 质 上 。 因 为 它 不 覆 盖 介质 标 题 , 所 以 INIT 与 FORMAT 不 同 。 它 与 FORMAT 的 不 同 之 处 还 在 于 口 令 信 息 防 止 SQL Server 写 到设 备 上 。 用 FORMAT 和 口 令 可 覆 盖 介 质 。 要 覆 盖 用口 令 保 护 或 加 密 的 介 质 , 可 指 定 WITH FORMAT 选项 。 如 果 介 质 上 的 所 有 备 份 集 还 没 有 到 期 ( 详 见EXPIREDATE 和 RETAINDAYS 选 项 ) , 或 者 BACKUP 语

句 中 给 出 的 备 份 集 名 称 ( 如 果 提 供 该 名 称 ) 与 备份 介 质 ( 详见 NAME 选 项 ) 上 的 名 称 不 相 符 , 就 不 会覆 盖 备 份 介 质 。 注 意 , SQL Server 备 份 可 以 和Windows NT 备 份 共 存 于 磁 带 介 质 上 , 因 为Microsoft SQL Server 7.0 备 份 格 式 符 合Microsoft Tape Format(MFT) , Windows NT 磁 带备 份 也 使 用 这 个 格 式 。 使 用 SKIP 选 项 可 忽 略 这 些检 查 。

NOINIT 此 变 量 决 定 备 份 集 应 添 加 到 设 备 上 , 而 不 是 覆 盖最 后 一 次 备 份 。 如 果 不 指 明 INIT 或 者 NOINIT , 缺

省 值 就 是 NOINIT 。

EXPIREDATE 使 用 此 变 量 表 示 到 终 止 日 期 备 份 集 才 会 覆 盖 。 必须 对 介 质 上 所 有 的 备 份 集 定 义 这 此 变 量 , 才 能 使它 有 效 。 用 SKIP 变 量 可 忽 略 此 变 量 。 可 以 用 变 量或 常 数 串 的 形 式 传 递 终 止 日 期 : expiredate = @Evariable 或 expiredate = "constantstring"

RETAINDAYS 使 用 此 变 量 表 示 超 过 保 留 天 数 就 将 覆 盖 备 份 集 , 必 须 对 介 质 上 所 有 的 备 份 集 定 义 这 此 变 量 , 才 能使 它 有 效 。 用 SKIP 变 量 可 忽 略 此 变 量 。 可 以 用 变量 或 整 数 的 形 式 传 递 保 留 天 数 , retaindays = @Rvariable 或 retaindays = integer 和 INIT 一起 使 用 此 选 项 以 使 它 有 效 。 EXPIREDATE 或RETAINDAYS 的 缺 省 值 为 sp_configure 配 置 设 置Media Retention 。 防 止 覆 盖 的 设 置 只 由 Microsoft SQL Server 用 来 防 止 覆 盖 其 备 份 。

DIFFERENTIAL 这 是 一 个 新 的 备 份 性 能 。 此 变 量 指 只 备 份 自 最 近

一 次 全 集 备 份 以 来 修 改 的 数 据 库 部 分 , 此 选 项 可节 省 备 份 的 时 间 与 空 间 。 现 在 , 当 恢 复 备 份 文 件时 , Microsoft SQL Server 只 备 份 足 以 建 立 数 据库 的 记 录 , 并 带 有 完 整 的 事 务 处 理 。

NAME 此 变 量 遵 从 1 ~ 128 个 字 符 标 识 符 的 规 则 , 可 以 留有 空 格 , 它 是 备 份 集 的 名 称 。

RESTART 这 是 Microsoft SQL Server 7.0 又 一 个 新 的 可 选功 能 。 它 允 许 Microsoft SQL Server 重 新 启 动 中断 的 备 份 操 作 。要 执 行 此 重 新 启 动 功 能 ,用 RESTART 变 量 重 复 BACKUP 语 句 , 它 只 适 用 于 TAPE 。

NOSKIP 此 变 量 强 制 检 查 介 质 名 称 、 终 止 日 期 和 保 留 天 数 。如 果 给 出 了 NOSKIP 或 SKIP 变 量 , 当 创 建 了 备 份设 备 时 , 它 们 会 忽 略 任 何 已 定 义 的 设 置 。

SKIP 如 果 使 用 此 变 量 , 终 止 日 期 和 介 质 名 称 的 检 查 不用 来 防 止 覆 盖 备 份 集 和 备 份 集 中 不 匹 配 的 介 质 名称 。 如 果 给 出 了 NOSKIP 或 SKIP 变 量 , 当 创 建 了备 份 设 备 时 , 它 们 会 忽 略 任 何 已 定 义 的 设 置 。

STATS 此 变 量 可 查 看 备 份 程 序 的 进 展 情 况 , 并 将 进 度 以完 成 的 百 分 比 显 示 到 屏 幕 上 或 输 出 文 件 上 。

FILE FILEGROUP 此 变 量 用 于 下 列 情 况 : 数 据 库 太 大 , 从 性 能 上 讲 不

推 荐 进 行 全 集 备 份 整 个 数 据 库 , 它 可 能 是 一 个 文件 或 多 个 文 件 , 也 可 能 是 一 个 文 件 组 或 多 个 文 件组 , 备 份 文 件 和 / 或 文 件 组 与 checkpoint 选 项 中trunc 记 录 不 兼 容 。 如 果 表 格 及 其 索 引 驻 留 在 不 同的 文 件 或 文 件 组 上 , 所 有 这 些 文 件 必 须 一 起 备 份 。

LOG 此 变 量 表 示 备 份 的 是 事 务 处 理 记 录 , 而 不 是 数 据库 。 用 户 将 获 得 自 最 后 一 次 成 功 的 LOG 备 份 以 来对 数 据 库 的 所 有 变 动 。

TRUNCATE_ONLYNO_LOG 如 果 使 用 这 些 变 量 , 且 正 删 除 事 务 处 理 记 录 , 就

应 备 份 整 个 数 据 库 , 此 变 量 会 删 去 记 录 中 不 活 动的 部 分 ( 不 做 记 录 的 备 份 拷 贝 ) , 并 截 取 记 录 。 在用 NO_LOG 备 份 记 录 后 , 记 录 中 对 数 据 库 的 变 动 不能 应 用 于 恢 复 数 据 库 , 这 就 是 为 何 有 必 要 备 份 数据 库 的 原 因 。

NO_TRUNCATE 备 份 记 录 , 但 不 截 取 。

示例

下 面 是 备 份 整 个 数 据 库 的 示 例 :

BACKUP DATABASE Customer TO customer_db1

本 例 中 , 将 客 户 数 据 库 备 份 到 转 储 设 备 customer_db1 中 。

示例

下 面 的 例 子 是 备 份 整 个 数 据 库 和 事 务 处 理 记 录 :

BACKUP DATABASE Customer TO customer_db1 G O

BACKUP LOG Customer TO customer_log1 G O

BEGIN...END

BEGIN...END 语 句 将 Transact-SQL 语 句 组 合 在 一 起 , 这 样 , 当 使 用 流 程 控制 语 句 ( 如 IF...ELSE ) 时 , 整 个 语 句 组 将 按 流 程 控 制 逻 辑 运 行 , 而 不 会 在 执行 了 IF 语 句 后 单 个 执 行 一 个 语 句 。

语法

BEGIN

{sql_statemen t| statement_block} END

变 量 {sql_statement | statement_block} 是 任 意 系 列 的 Transact-SQL 语

句 。

示例

下 面 是 BEGIN...END 的 示 例 :

IF @var1=5 BEGIN

SELECT @var2=6

PRINT ′ I am also doing this print if var1=5 ′ END

本 例 中 , 如 果 @varl=5 , 就 执 行 SELECT 与 PRINT 语 句 。

BEGIN DISTRIBUTED TRANSACTION

BEGIN DISTRIBUTED TRANSACTION 语 句 表 明 , Microsoft Distributed Transaction Coordinator (MS DTC) 开 始 控 制 Transact-SQL 分 布 式 事 务 处 理 。

语法

BEGIN DISTRIBUTED TRAN [ SACTION ] [ transaction_nam e] 变 量 transaction_name 由 用 户 命 名 , MS DTC 用 它 来 引 用 事 务 处 理 。

示例

下 面 是 BEGIN DISTRIBUTED TRANSACTION 语 句 的 示 例 :

BEGIN DISTRIBUTED TRANSACTION

UPDATE mylocaltable SET col1= ′ N / A ′

EXECUTE remote.db1.dbo.reset_col1 ′ N / A ′

COMMIT TRAN

本 例 中 , 利 用 双 向 委 托 , UPDATE 语 句 更 新 本 地 数 据 库 , 远 程 存 储 过 程 更 新

远 程 数 据 库 。

BEGIN TRANSACTION

BEGIN TRANSACTION 语 句 表 明 开 始 进 行 Transact-SQL 本 地 事 务 处 理 。

语法

BEGIN TRAN [ SACTION ][ transaction_nam e]

变 量 transaction_name 是 由 用 户 命 名 的 事 务 处 理 。

示例

下 面 是 BEGIN TRANSACTION 语 句 的 示 例 :

BEGIN TRANSACTION

UPDATE mylocaltable SET col1= ′ N / A ′

EXECUTE reset_col1 ′ N / A ′

COMMIT TRAN

本 例 中 , 利 用 双 向 委 托 , 由 UPDATE 语 句 更 新 本 地 数 据 库 , 远 程 存 储 过 程 更新 远 程 数 据 库 。

BETWEEN

BETWEEN 包 括 某 一 范 围 的 两 个 数 值 。

语法

[ N O T ]

expression

[ N O T ]

BETWEEN expression AND expression

变量

NOT

expression

AND

NOT 是 布 尔 表 达 式 的 否 定 指 示 符 。

表 达 式 可 以 是 常 数 、 列 名 、 函 数 、 子查 询 程 序 、 算 术 运 算 符 、 按 位 运 算 符和 串 运 算 符 。

AND 语 句 串 接 两 个 条 件 。

示例

下 面 是 BETWEEN 语 句 的 示 例 :

SELECT *

FROM tableX

WHERE col1 BETWEEN 1 AND 5

本 例 中 , 选 择 出 的 行 , 其 列 值 在 1 ~ 5 之 间 , 查 询 中 将 选 择 有 1 和 5 的 行 。

binary

当 列 中 的 值 有 相 同 的 长 度 时 , 就 可 以 用 固 定 长 度 的 二 进 制 数 据 类 型 存 储 二进 制 数 据 , 如 果 长 度 不 一 致 , 就 采 用 可 变 长 度 的 数 据 类 型 。

语法

binary [ (n)]

变 量 (n) 是 字 符 数 , 它 最 多 可 存 储 8000 字 节 。 即 使 列 比 (n) 短 , (n) 仍 是 存储 所 占 用 的 空 间 总 量 , 如 果 列 不 超 过 15 ,将 15 用作 (n) , 可 以 避 免 列 比 要 存 储的 数 据 大 得 太 多 。 如 果 临 时 表 中 的 行 超 过 8000 , 查 询 处 理 器 就 不 可 能 处 理 这 种情 形 。

在 定 义 数 据 时 , 长 度 的 缺 省 值 ( 如 果 没 有 提 供 ) 为 1 , 如 果 使 用 CONVERT , 长度 为 30 , 如 果 数 据 太 长 , 在 一 列 中 放 不 下 , 就 截 去 数 据 的 尾 部 。

bit

位 数 据 类 型 存 储 1 或 0 , 通 常 用 来 表 示 1= 是 , 0= 非 。 如 果 想 在 位 数 据 类 型中 插 入 非 0 或 1 的 内 容 , 就 插 入 1 。

语法

Bit (n)

变 量 (n) 为 一 整 数 , 表 示 位 列 的 长 度 。 存 储 长 度 为 1 个 字 节 , 一 个 字 节 包 含8 位 。 有 位 数 类 型 的 列 不 能 加 索 引 。

BREAK

BREAK 语 句 用 在 Transact-SQL 流 程 控 制 语 言 中 以 退 出 WHILE 循 环 。

语法

BREAK

示例

下 面 是 WHILE 循 环 中 用 BREAK 的 示 例 :

W H ILE ... -- 某 些 内 容 为 真

BEGIN

IF...-- 其 他 内 容 为 真

BREAK ELSE CONTINUE

END

本 例 中 , 如 果 WHILE 循 环 中 其 它 内 容 为 真 , 就 退 出 循 环 。

BULK INSERT

BULK INSERT 是 将 数 据 文 件 以 指 定 格 式 存 放 到 数 据 库 表 中 。

语法

BULK INSERT [[ ′ database_nam e′ . ][ ′ owner ′ ] .] { ′ table_nam e′ FROM data_file}

[ W ITH (

[ BATCHSIZE [ =batch_size ]]

[[ ,] CHECK_CONSTRAINTS ]

[[ ,] CODEPAGE [ = ACP | OEM |RAW |code_page ]]

[[ ,] DATAFILETYPE [ =

{ ′ char′ |′ native′ |′ w idechar′ |′ w idenative′ } ]]

[[ ,] FIELDTERMINATOR [ = ′ field_terminator′ ]]

[[ ,] FIRSTROW [ =first_row ]]

[[ ,] FORMATFILE [ = ′ format_file_path ′ ]]

[[ ,] KEEPIDENTITY ]

[[ ,] KEEPNULLS ]

[[ ,] LASTROW [ =last_row ]]

[[ ,] maxerrors [ =max_errors ]]

[[ ,] ORDER ({column [ ASC | DESC ] } [ ,...n ] )]

[[ ,] ROWTERMINATOR [ = ′ row_terminator′ ]]

[[ ,] TABLOCK ] )]

变量

  • database_name ′ database_name 是 放 置 表 格 的 数 据 库名 称 。

  • owner ′ owner 是 表 格 拥 有 者 的 名 称 。

  • table_name ′ table_name 是 要 到 成 批 插 入 数 据 的 表格 。

data_file data_file 是 指 数 据 文 件 的 路 径 。BATCHSIZE [ =batch_size ] BATCHSIZE 是 成 批 处 理 的 行 数 。CHECK_CONSTRAINTS CHECK_CONSTRAINTS 指 成 批 插 入 时 对

表 格 上 的 约 束 进 行 检 查 。 缺 省 设 置 是不 检 查 约 束 。

CODEPAGE [ =ACP | OEM | RAW |

code_page ]

CODEPAGE 是 数 据 文 件 中 数 据 的 代 码页 , 这 些 数 据 是 字 符 、 可 变 字 符 或 文本 列 , 它 们 的 字 符 值 大 于 127 或 小 于32 。 RAW 由 于 不 用 转 换 , 速 度 最 快 ,

其 它 码 页 则 转 换 SQL 成 Server 代 码页 。

<value> <value> 是 代 码 页 数 。

DATAFILETYPE { [ = ′ char ′ |

′ native ′ | ′ widechar ′ | ′ widenative ′ }]

DATAFILETYPE 指 令 BULK INSERT 用 给

定 类 型 的 缺 省 值 进 行 成 批 插 入 。 char 用 \ t( 制 表 符 ) 作 为 缺 省 的 字 段 分 隔符 , 用 \ n( 新 行 字 符 ) 作 为 缺 省 的 行终 止 符 。 Native 用 数 据 的 本 机 数 据 类型 作 为 缺 省 值 进 行 成 批 复 制 。 每 个 字段 都 没 有 提 示 。 Widechar 用 Unicode 字 符 作 为 缺 省 值 , 也 没 有 提 示 , 用nchar 的 缺 省 值 作 为 缺 省 存 储 类 型 , 用 \ t( 制 表 符 ) 作 为 缺 省 的 字 段 分 隔符 。 用 \ n( 新 行 字 符 ) 作 为 缺 省 的 行终 止 符 。 Widenative 除 字 符 、 可 变 字

符 和 文 本 列 保 存 为 Unicode 字 符 外 ,

其 他 情 况 与 native 相 同 。Widenative 比 Widechar 快 , 并 其 用 途 是 用 数 据

文 件 将 数 据 从 一 个 SQL Server 传 输

到 另 一 个 SQL Server 。

FIELDTERMINATOR

=

field_terminator 是 用 于 字 符 和 宽 字

field_terminator ′

符 的 字 符 终 止 符 , 缺 省 值 为 \ t 。

FIRSTROW [ =first_row ] first_row 是 要 复 制 的 第 一 行 的 数

目 , 缺 省 值 为 1 。

FORMATFILE [ = ′ format_file_path

′ ]

format_file_path 格 是 响 应 前 一 次 使用 的 格 式 文 件 的 完 整 路 径 。

KEEPIDENTITY KEEPIDENTITY 表 示 标 识 列 在 文 件 中 ,

它 从 数 据 文 件 中 提 取 标 识 列 的 值 。

KEEPNULLS KEEPNULLS 表 示 是 指 保 持 空 值 , 而 不使 用 缺 省 值 。

LASTROW [ =last_row ] last_row 是 要 复 制 的 最 后 一 行 的 数目 , 缺 省 值 为 0 。 它 表 示 最 后 一 行 实际 上 在 文 件 中 。

MAXERRORS [ =max_errors ] max_errors 是 在 停 止 成 批 复 制 操 作

前 出 现 最 多 的 错 误 数 目 , 缺 省 值 为10 。

ORDER({column

ASC

DESC

}

ORDER 说 明 数 据 文 件 中 的 数 据 如 何 分

[ ,...n ]

类 。 缺 省 状 态 下 , 成 批 复 制 操 作 假 定

数 据 文 件 没 有 排 序 。 如 果 其 顺 序 与 表

的 成 簇 索 引 相 同 , 则 运 行 较 快 。

n n 表 示 指 前 面 的 项 可 重 复 。

ROWTERMINATOR

row_terminator ′ ] TABLOCK

[ = ′

row_terminator 是 用 于 字 符 和 宽 字 符的 行 结 束 符 , 缺 省 值 为 \ n 。TABLOCK 指 进 行 成 批 复 制 的 过 程 中 需

要 表 格 级 别 的 锁 定 。 如 果 表 中 没 有 索引 , 且 使 用 了 TABLOCK , 则 多 个 客 户可 以 插 入 表 格 中 。 缺 省 值 是 表 中 需 要行 级 锁 定 。

示例

下 面 是 BULK INSERT Transact-SQL 语 句 是 示 例 :

BULK INSERT Mydb..MyTable FORM ′ a: \ myfile.txt′

W ITH (FIELDTERMINATOR= ′ ,′ , ROWTERMINATOR= ′ \ n ′ )

本 例 中 , myfile 中 的 数 据 以 及 用 逗 号 表 示 的 字 段 终 止 符 和 新 行 的 行 终 止 符 , 插 入 到 数 据 库 Mydb 的 表 Mytable 中 。

CASE

CASE 语 句 是 Transact-SQL 表 达 式 中 使 用 条 件 值 的 工 具 。

语法

简 单 CASE 语 句 的 语 法

CASE expression

{WHEN expression THEN result} [ ,...n ]

[ ELSE result ] END

语法

搜 索 的 CASE 语 句 的 语 法 :

CASE

WHEN Boolrean_expression THEN result_expression [ ,...n ]

[ ELSE else_result_expression ] END

变量

expression expression 可 以 是 常 数 、 列 名 、 函 数 、 子 查 询 程序 , 也 可 以 是 算 术 运 算 符 、 按 位 运 算 符 或 串 运 算符 。

result result 是 表 达 式 与 WHEN 子 句 相 符 时 返 回 的 值 。

N 该 变 量 表 示 可 以 多 次 重 复 WHEN 子 句 。Boolean_expression 布 尔 表 达 式 表 明 是 否 执 行 THEN 子 句 。

ELSE result 如 果 WHEN 子 句 失 败 , 就 返 回 ELSE result 。 如 果没 有 使 用 ELSE ,而 WHEN 子 句 失 败 , 将 返 回 NULL 。

示例

下 面 是 CASE 语 句 的 示 例 :

SELECT name = CASE Software

WHEN ′ Word Processor′ THEN ′ M icrosoft Word ′ WHEN ′ Spreadsheet′ THEN ′ M icrosoft Exce l′ END

FROM table1

WHERE company = ′ M icrosoft′

本 例 中 , 如 果 在 table1 的 Software 列 中 找 到 “ Word Processor ” 或“ Spreadsheet ” 值 , 就 将 返 回 “ Microsoft Word ” 或 者 “ Microsoft Excel ” 的 值 。

CAST

CAST 语 句 和 COWERT 语 句 相 同 , 它 们 都 用 来 在 Transact-SQL 中 进 行 数 据 类型 的 转 换 。

语法

CAST(expression AS data_type)

变量

expression expression 可 以 是 常 数 、 列 名 、 函 数 、 子 查询 程 序 , 也 可 以 是 算 术 运 算 符 , 按 位 运 算 符 或串 运 算 符 。

data_type 数 据 类 型 是 列 可 以 转 换 的 任 意 系 统 数 据 类 型 。

示例

下 面 是 CAST 语 句 的 示 例 :

CAST(MyDate AS varchar)

本 例 中 , MyDate 值 转 换 成 可 变 字 符 数 据 类 型 , 而 不 再 是 日 期 时 间 数 据 类 型 。

CEILING

CEILING 函 数 用 于 数 学 环 境 , 它 的 返 回 值 是 大 于 或 等 于 给 定 的 数 值 表 达 式 的最 短 整 数 。

语法

CEILING(numeric_expression)

变 量 numeric_expression 可 以 是 小 数 、 浮 点 数 、 整 型 数 、 货 币 、 实 数 、 短整 型 数 、 小 货 币 数 或 微 短 整 型 数 。

示例

下 面 是 CEILING 函 数 的 一 些 示 例 :

SELECT CEILING(1.45)

本 例 中 , 返 回 整 数 2 。

SELECT CEILING(-1.45)

本 例 中 , 返 回 整 数 1 。

字 符 数 据 类 型

列 中 的 值 有 相 同 长 度 时 , 可 用 固 定 长 度 的 字 符 数 据 类 型 存 储 字 母 数 据 。 长度 不 一 致 时 , 用 可 变 长 度 的 可 变 字 符 数 据 类 型 。

语法

char[ (n)]

变 量 (n) 是 代 表 列 长 度 的 整 数 。

CHAR 字 符 串 函 数

CHAR 是 字 符 串 函 数 , 用 于 将 ASCII 码 整 数 转 换 为 字 符 。

语法

CHAR(integer_expression)

变 量 ( integer_expression ) 是 0 ~ 255 间 的 正 整 数 。

示例

下 面 是 CHAR 字 符 串 函 数 的 示 例 :

SELECT ′ BACKUP DATABASE ′ + name + ′ to ′ + name +

_dump with init, stats + CHAR(13) + ′ GO ′ FROM master..sysdatabases

WHERE name NOT LIKE ′ tempdb′

本 例 中 , 以 下 述 语 法 显 示 输 出 结 果 , 并 以 主 从 SQL SELECT 语 句 的 方 式 建 立Transact-SQL 代 码 。 这 表 示 主 SQL 语 句 建 立 以 后 运 行 的 从 SQL 语 句 。 在 运 行 从属 的 Transact-SQL 前 需 要 在 编 辑 过 程 中 删 除 文 本 “( 4 row(s) affected )”。 或者 在 SELECT 语 句 前 设 置 NOCUNT , 就 将 不 打 印 “( 4 row(s) affected )”。 可 以包 括 虚 线 行 , 因 为 它 被 解 释 为 注 释 。

前 面 的 SELECT 语 句 将 建 立 备 份 SQL Server 上 所 有 数 据 库 的 语 法 。 CHAR(13) 提 供 换 行 字 符 , 当 需 要 使 用 GO 语 句 时 , GO 语 句 需 要 此 换 行 字 符 为 新 行 的 第 一个 字 符 。 ASCII 码 13 就 是 换 行 字 符 。

BACKUP DATABASE master to master_dump with init,statsGO BACKUP DATABASE model to model_dump with init,statsGO BACKUP DATABASE msdb to msdb_dump with init,statsGO BACKUP DATABASE pubs to pubs_dump with init,statsGO

CHARINDEX 字 符 串 函 数

CHARINDEX 字 符 串 函 数 在 搜 索 字 符 串 中 的 模 式 时 , 返 回 模 式 的 开 始 位 置 。

语法

CHARINDEX (′ pattern ′ , expression [, start_location ] )

变量

pattern pattern 是 搜 索 的 字 母 值 。

expression expression 是 任 意 有 效 的 SQL Server 字符 串 表 达 式 。

start_location start_location 是 列 中 开 始 搜 索 模 式 的位 置 ,如 果 没 有 提 供 此 可 选 项 ,SQL Server

将 从 第 一 个 位 置 开 始 搜 索 。

示例

下 面 是 CHARINDEX 字 符 串 函 数 的 示 例 :

SELECT CHARINDEX ( ′ find me in row 4 ′ , Column2,10) FROM MyTable

WHERE Column1= ′ 4 ′

G O

本 例 中 , 返 回 的 整 数 是 Column2 中 模 式 “ find me in row 4 ” 开 始 的 位 置 , 或 是 第 10 个 字 符 后 面 。

CHECKPOINT

当 前 数 据 库 中 的 CHECKPOINT 向 SQL Server 发 布 命 令 , 将 自 最 后 一 个 检 查点 以 来 更 新 的 全 部 页 面 写 入 磁 盘 。 发 布 CHECKPOINT 语 句 检 查 数 据 库 , 其 它 检 查点 由 SQL Server 根 据 sp_configure 选 项 的 设 置 自 动 执 行 , 此 选 项 称 为 “ 恢 复间 隔 ” 集 , 它 决 定 可 接 受 的 最 长 恢 复 时 间 ( 以 分 钟 为 单 位 )。

语法

CHECKPOINT

CLOSE

CLOSE 语 句 关 闭 打 开 的 游 标 , 保 留 数 据 结 构 , 以 便 能 再 打 开 关 闭 的 游 标 。

语法

CLOSE{{ [ GLOBAL ] cursor_name} | cursor_variable_name}

GLOBAL GLOBAL 指 全 局 游 标 。

cursor_name cursor_name 是 要 关 闭 的 开 启 游 标名 ,如 果 GLOBAL 是 变 量 ,cursor_name 就 指 的 是 GLOBAL 游 标 , 如 果 没 有 使用 关 键 词 GLOBAL , 指 的 就 是 本 地 游标 。

cursor_variable_name cursor_variable_name 指 包 含 要 关 掉的 开 启 游 标 的 变 量 名 。

COALESCE

COALESCE 的 返 回 值 是 按 顺 序 检 查 每 个 变 量 时 找 到 的 第 一 个 NOT NULL 值 。SQL Server 将 检 查 第 一 个 变 量 、 列 或 表 达 式 。 如 果 其 为 NULL , 就 查 下 一 个 变 量 , 如果 这 个 又 是 NULL , 就 再 查 下 一 个 变 量 , 直 到 检 查 的 变 量 为 NOT NULL , 它 就 作 为返 回 值 。

语法

COALESCE(expression [ , n ] )

变量

expression 表 达 式 可 以 是 常 数 、 列 名 、 函 数 、 子查 询 程 序 , 也 可 以 是 算 术 运 算 符 , 按位 运 算 符 和 串 运 算 符 。

n n 表 示 前 面 的 项 可 以 重 复 。

示例

下 面 是 COALESCE 函 数 的 示 例 :

SELECT COALESCE (Column1, column2, column3) FROM MyTable

WHERE Column4 < 9 G O

本 例 中 , 分 析 Column1 中 是 否 有 NOT NULL , 如 果 Column1 中 有 NOT NULL , 就 返 回 Column1 中 的 值 ,但 如 果 Column1 中 有 NULL ,就分析 Column2 是 否 有 NOT NULL , 如 果 第 二 列 有 值 , 返 回 此 值 , 一 直 往 下 进 行 , 直 到 COALESCE 函 数 找 到 某变 量 中 有 NOTNULL 值 为 止 。

COL_LENGTH

COL_LENGTH 返 回 列 的 长 度 , 以 字 节 为 单 位 。

语法

COL_LENGTH (′ table ′ , ′ column ′ )

变量

table table 是 表 格 名 称 , 可 以 用owner.tablename 的 形 式 。

Column column 是 列 名 。

示例

下 面 是 COL_LENGTH 函 数 的 示 例 :

SELECT COL_LENGTH (′ M yTable ′ , ′ Column1 ′ )

本 例 中 , 返 回 表 MyTable 中 Column1 的 长 度 ( 整 数 ) 。

COL_NAME

COL_NAME 在 给 出 函 数 、 表 格 标 识 数 和 列 标 识 数 后 , 返 回 数 据 库 的 列 名 。

语法

COL_NAME(table_id , column_id)

变量

table_id 表 格 的 系 统 ID 。

column_id 列 的 系 统 ID 。

COLUMNPROPERTY

COLUMNPROPERTY 返 回 列 的 信 息 或 程 序 变 量 的 信 息 。

语法

COLUMNPROPERTY (id , column ,′ property ′ )

变量

id id 是 表 格 或 程 序 变 量 的 ID 。

column column 是 列 和 程 序 变 量 的 名 称 。

property property 指 表 格 或 程 序 变 量 返 回 的 信息 类 型 。 属 性 的 值 可 以 是 ′ AllowsNull ′ , ′ IsIdentity ′ , ′ IsIdNot- ForRep1 ′ , ′ IsOutParam

′ , ′ IsRowGuidCol ′ , ′ Precision

′ , ′ Scale ′ , 和 ′ UsesAnsiTrim

′ 。

示例

下 面 是 COLUMNPROPERTY 函 数 的 示 例 :

SELECT COLUMNPROPERTY (

OBJECT_ID ( ′ M yTable ′ ),′ Column1 ′ ,′ PRECISION ′ )

本 例 中 返 回 值 是 MyTable 中 Column1 的 精 度 。

C O M M IT TRAN S [ ACTION ]

COMMIT TRANSACTION 或 COMMIT TRANS 是 事 务 处 理 的 结 束 , 此 时 , 从 事 务 处理 开 始 对 数 据 所 做 的 变 动 将 成 为 数 据 库 的 固 定 内 容 。

语法

COMMIT [ TRAN [ SACTION ] [ transaction_nam e] ]

变 量 transaction_name 只 由 程 序 员 用 来 通 知 哪 个 COMMIT 归 属 于 哪 个BEGIN 。

示例

下 面 是 COMMIT TRANS[ ACTION ] 语 句 的 示 例 :

BEGIN TRANSACTION

UPDATE Mytable SET Column1 = 3 WHERE Column2 = 8 G O

COMMIT TRANSACTION G O

本 例 中 , 事 务 处 理 以 BEGIN TRANSACTION 开 始 , 以 COMMIT TRANSACTION 结

束 。

C O M M IT [ WORK ]

COMMIT WORK 是 事 务 处 理 的 结 束 , 此 时 , 从 事 务 处 理 开 始 对 数 据 所 做 的 变 动将 成 为 数 据 库 的 固 定 内 容 。 它 和 COMMIT TRANSACTION 完 全 一 样 , 是 为 与 ANSI SQL-92 兼 容 而 添 加 的 。

语法

COMMIT [ W O R K ]]

变 量 WORK 是 可 选 项 。 单 词 COMMIT 和 COMMIT WORK 起 同 样 的 作 用 。

示例

下 面 是 COMMIT [ WORK ] 语 句 的 示 例 :

BEGIN TRANSACTION

UPDATE Mytable SET Column1 = 3 WHERE Column2 = 8 G O

COMMIT G O

本 例 中 , 以 COMMIT 开 始 和 结 束 事 务 处 理 。

CONTAINS

CONTAINS 搜 索 以 字 符 为 基 础 的 数 据 类 型 中 列 的 精 度 或 其 他 方 面 的 匹 配 , 例如 单 词 或 词 组 , 单 词 或 词 组 的 前 缀 , 一 个 单 词 旁 边 的 另 一 个 单 词 , 由 一 个 单 词生 成 的 另 一 个 单 词 ( 例 :make 和 made) , 以 及 比 一 个 单 词 的 权 值 更 高 的 另 一 个 单词 。 此 函 数 取 决 于 数 据 库 / 表 格 / 列 能 否 进 行 全 文 搜 索 。 请 参 阅 第 22 章 了 解 全文 存 储 过 程 。

语法

CONTAINS

( { column | *}, ) ′ <contains_search_condition> ′

)

<contains_search_condition>::=

{

<simple_term>

| <prefix_term>

| <proximity_term>

| <generation_term>

| <isabout_term>

| (<contains_search_condition>)

}

[ {

{AND | AND NOT | OR } < contains_search_condition>

}

] [ ... n ]

<isabout_term>::= ISABOUT

({

<generation_term>

| <prefix_term>

| <proximity_term>

| <simple_term>

}

[ WEIGHT ( weight_value) >

)

< generation_term>::=

FORMSOF (INFLECTIONAL, <simple_term>)

<prefix_term>::=

word * | " phrase * "

<proximity_term>::=

{<simple_term> | <prefix_term>} [ NEAR() | ~ ]

<simple_term>::=

word | " phrase "

变量

column

*

column 指 字 符 类 型 列 的 名 称 。 列 必 须 注 册才 能 进 行 全 文 搜 索 。

* 表 示 表 中 所 有 的 列 都 适 于 搜 索 ( 注 册 了 全文 搜 索 ) 。 如 果 FROM 子 句 中 有 多 个 表 格 , 就 要 用 表 名 限 定 。

<contains_search_condition> < contains_search_condition> 指 要 在 列

中 搜 索 的 文 本 。

word word 单 词 指 中 间 无 空 格 、 无 标 点 的 一 串 字符。

phrase phrase 指 带 空 格 的 一 个 或 多 个 单 词 。

<isabout_term> <isabout_term> 决 定 返 回 的 行 与 有 各 自 加权 值 的 单 词 或 词 组 列 表 相 匹 配 。

ISABOUT ISABOUT 是 <isabout_term> 的 关 键 词 。WEIGHT (weight_value) weight_value 定 义 加 权 值 ,其 值 位 于 0.0 ~

1.0 之 间 。 <isabout_term> 的 每 一 部 分 都 有一 个 加 权 值 。

AND | AND NOT | OR AND | AND NOT | OR 是 逻 辑 运 算 符 。

<generation_term> <generation_term> 是 当 <simple_terms> 与

原 来 搜 索 的 单 词 不 同 时 的 单 词 匹 配 。

INFLECTIONAL INFLECTIONAL 表 示 名 词 的 单 数 或 复 数 形式 , 动 词 的 各 种 时 态 互 相 匹 配 。

<prefix_term> <prefix_term> 指 定 匹 配 的 单 词 或 词 组 以 指定 的 文 本 开 头 ( 例 如 ,“ MS* ” 搜 索 以 “ MS ” 开 始 的 任 意 串 ) 。

<proximity_term> < proximity_term> 定 义 匹 配 的 单 词 或 词 组互 相 近 似 。

NEAR() | ~ NEAR() | ~ 表 示 NEAR() 或 ~ 一 侧 的 串 、 单词 或 词 组 与 其 另 一 侧 的 串 、 单 词 或 词 组 相近。

<simple_term> <simple_term> 确 定 确 切 匹 配 单 词 或 词 组( 词 组 括 在 双 引 号 内 ) 。

N n 指 前 面 的 项 可 重 复 。

示例

下 面 是 关 键 词 CONTAINS 的 示 例 :

SELECT MyFullTextEnabledColumn FROM MyTable

WHERE CONTAINS (MyFullTextEnabledColumn ,′ computer * OR hardware*

′ )

本 例 中 , MyFullTextEnabledColumn 中 , 包 含 所 提 供 的 字 符 串 的 值 显 示 为 结果 集 。

示例

下 面 是 带 有 近 似 语 法 的 CONTAINS 的 示 例 :

SELECT MyFullTextEnabledColumn FROM MyTable

WHERE CONTAINS (MyFullTextEnabledColumn ,′ D iana NEAR Princess ′ )

本 例 中 , MyFullTextEnabledColumn 的 值 中 , 显 示 所 提 供 的 单 词 中 相 互 近 似的 单 词 。

示例

下 面 是 使 用 CONTAINS 后 缀 语 法 的 示 例 :

SELECT MyFullTextEnabledColumn FROM MyTable

WHERE CONTAINS (MyFullTextEnabledColumn, ′ FORMSOF

( INFLECTIONA L, agree)′ )

本 例 中 , 显 示 MyFullTextEnabledColumn 中 与 所 提 供 的 单 词 形 式 相 符 的 值(agreeable , agreed , agreeing , agrees , 等 等 ) 。

示例

下 面 是 使 用 CONTAINS 加 权 语 法 的 示 例 :

SELECT MyFullTextEnabledColumn FROM MyTable

WHERE CON TAINS (MyFullTextEnabledColumn, ′ ISABOUT ( dolphin

weight (.8),whale weight (.4),fish weight (.2 )) ′ )

本 例 中 , 搜 索 MyFullTextEnabledColumn 中 包 含 单 词 海 豚 、 鲸 和 鱼 并 带 有相 应 权 重 的 行 。

CONTAINSTABLE

CONTAINSTABLE 返 回 的 表 格 中 , 列 与 单 词 或 词 组 精 确 或 不 太 精 确 的 匹 配 , 单词 与 另 一 些 单 词 近 似 或 者 权 重 匹 配 。 它 像 表 格 名 称 一 样 可 用 于 SELECT 语 句 的FROM 子 句 。 它 还 返 回 每 行 的 级 别 值 。 详 细 内 容 可 参 阅 CONTAINS 。

语法

CONTAINSTABLE (table, {column | *}, ′ <contains_search_condition> ′ )

<contains_search_condition>::=

{

| <generation_term>

| <prefix_term>

| <proximity_term>

<simple_term>

| < weighted_term >

| (<contains_search_condition>)

}

{

{AND | AND NOT | OR } < contains_search_condition>

}

] [ ...n ]

< weighted_term >::= ISABOUT

({{

<generation_term>

| <prefix_term>

| <proximity_term>

| <simple_term>

}

[ WEIGHT (weight_value)]

} [ ,...n ]

)

< generation_term>::=

FORMSOF (INFLECTIONAL, <simple_term> [ ,...n ] )

<prefix_term>::=

{ " word * " | "phrase * " }

<proximity_term>::=

{<simple_term> | <prefix_term>}

{{NEAR | ~} {<simple_term> | <prefix_term>}} [ ...n]

<simple_term> ::= word | "phrase " 变量

table table 是 启 用 全 文 搜 索 的 表 格 的 可 选

限 定 名 。

Column column 指 要 全 文 搜 索 的 所 启 用 的 列名 。

* * 指 表 格 中 所 有 的 列 都 可 以 全 文 搜

索 。

<contains_search_condition> contains_search_condition 指 全 文

搜 索 所 启 用 列 中 的 文 本 ( 不 是 一 个 变量 ) 。

CONTINUE

CONTINUE 语 句 有 时 跟 IF 语 句 一 起 使 用 , 它 可 用 CONTINUE 后 面 没 有 执 行 的内 容 重 新 启 动 WHILE 循 环 。 请 参 看 WHILE 。

语法

CONTINUE

CONVERT

CONVERT 用 于 表 达 式 由 一 种 数 据 类 型 转 换 成 另 一 种 数 据 类 型 的 明 显 式 转 换 , 可 使 用 表 达 式 的 地 方 就 可 使 用 CONVERT 。

语法

CONVERT (data_type [ (length) ], expression [ ,style ] )

变量

data_type data_type 是 表 达 式 要 使 用 的 数 据 类型 , 但 不 是 用 户 定 义 的 数 据 类 型 。

length length 是 表 达 式 的 可 选 长 度 。

expression 任 意 有 效 的 表 达 式 。

style style 是 将 日 期 时 间 或 小 日 期 时 间 数据 转 换 成 字 符 数 据 时 使 用 的 数 据 格 式结 构 , 它 可 以 是 字 符 、 可 变 字 符 、nchar 、 nvarchar 数 据 类 型 。 如 果 使用 字 符 串 格 式 将 浮 点 数 、 实 数 、 货 币或 小 货 币 型 数 据 转 换 成 字 符 数 据 时 , 数 据 类 型 可 以 是 字 符 、 可 变 字 符 、nchar 或 nvarchar 数 据 类 型 。

日 期 时 间 或 小 日 期 时 间 转 换 成 字 符 的结构 ( 为 年 份 添 加 100 , 用 yyyy 格 式表 示 年 , 而 不 用 YY 格 式 表 示 年 ) :

-0 或 100 mon dd yyyy hh:miAM 或 PM 1 或 101 USA mm / dd / yy

  1. 或 102 ANSI yy.mm.dd

  2. 或 103 英 / 法 dd / mm / yy 4 或 104 德 dd.mm.yy

5 或 105 意 dd-mm-yy 6 或 106 -dd mon yy

  1. 或 107 -mon dd,yy

  2. 或 108 -hh:mm:ss

-9 或 109 缺 省 值 + 毫 秒 mon dd yyyy

hh:mi:ss:mmmAM 或 PM 10 或 110 USA mm-dd-yy

11 或 111 日 本 yy / mm / dd 12 或 112 ISO yymmdd

-13 或 113 欧洲 缺 省 值 + 毫 秒 dd mon yyyyhh:mm:ss:mmm(24 小 时 )

14 或 114-hh:mi:ss:mmm(24 小时 )

-20 或 120ODBC 规 范 yyyy-mm-dd hh:mi:ss(24 小 时 )

-21 或 121ODBC 规 范 ( 用 毫 秒 )

yyyy-mm-dd hh:mi:ss.mmm(24 小 时 ) 浮 点 数 或 实 数 型 数 据 转 换 成 字 符 的 结构 如 下 :

0( 缺 省 值 )=6 位 或 小 于 1=8 位

2=16 位

money 或 smallmoney 转 换 成 字 符 的 结构 如 下 :

0= 无 逗 号 , 2 位 小 数 ( 例 :1234.11) , 这 是 缺 省 值 。

1= 逗 号 和 2 位 小 数 ( 例 :1,234.11)

2= 无 逗 号 , 小 数 点 右 边 4 位 ( 例 :

1234.1111)

示例

下 面 是 CONVERT 函 数 的 示 例 :

SELECT ′ M y Birthday is Today′ + CONVERT(varchar(12),getdate())

本 例 中 , 日 期 转 换 成 字 符 串 后 , 字 符 串 就 能 与 日 期 串 接 在 一 起 。 用 加 号 还可 以 串 接 字 符 数 据 类 型 。

COS

COS 为 数 学 函 数 , 它 返 回 表 达 式 中 角 度 的 余 弦 。

语法

COS(float_expression)

变 量 float_expression 是 浮 点 型 数 据 。

COT

COT 为 数 学 函 数 , 它 返 回 表 达 式 中 角 度 的 余 切 。

语法

COT(float-expression)

变 量 float-expression 是 浮 点 型 数 据 。

COUNT

COUNT 是 一 个 集 合 函 数 , 它 返 回 的 整 数 代 表 表 达 式 中 ( 通 常 是 一 列 ) 值 的 个数 。 DISTINCT 和 COUNT 一 起 使 用 时 , 返 回 值 为 单 一 值 的 个 数 。

语法

COUNT({ [ ALL | D ISTINCT ]

expression

] | *})

变量

ALL ALL 是 缺 省 值 , 计 数 所 有 的 值 , 但 忽 略 NULL 。 DISTINCT DISTINCT 和 COUNT 一 起 使 用 时 , 返 回 单 一 值 的 个 数 。expression 表 达 式 可 以 是 常 量 、 列 名 、 函 数 、 子 查 询 程 序 、 算 术 运

算 符 、 按 位 运 算 符 和 串 运 算 符 。

* * 表 示 所 有 行 。

示例

下 面 是 COUNT 集 合 函 数 的 示 例 :

SELECT COUNT(Column1)

FROM Mytable

本 例 中 , COUNT 函 数 将 计 数 Mytable 的 Column1 中 没 有 空 值 的 行 数 , 如 果使 用 * 而 不 是 列 名 , 将 返 回 表 中 所 有 行 的 数 目 。

CREATE DATABASE

CREAE DATABASE 是 建 立 新 数 据 库 及 其 相 关 文 件 的 语 句 。

语法

CREATE DATABASE database_name

[ ON [ PRIMARY ]

[ <filespec> [ ,...n ]]

[ ,<filegroup> [ ,...n ]]

[ LOG ON { <filespec> } ]

[ FOR LOAD | FOR ATTACH ]

<filespec>::=

([ NAME = logical_file_name, ]

FILENAME = ′ os_file_nam e′

[ ,SIZE =size ]

[ , MAXSIZE= { max_size | UNLIMITED} ]

[ ,FILEGROWTH=growth_incrernen t] )[ ,...n ]

<filegroup>::=

FILEGROUP filegroup_name <filespec> [ ,...n ]

变量

database_name 用 标 识 符 规 则 建 立 的 新 数 据 库 名 称 。

[ ON [ PRIMARY ][ <filespec> [ , n ]][ ,<filegroup> [ , n ]]

如 果 使 用 ON , 就 要 提 供 存 储 数 据 的 磁盘 文 件 名 称 。 ON 后 面 跟 一 系 列 文 件 , 这 些 文 件 是 主 文 件 组 的 数 据 文 件 , 文件 中 也 可 以 有 用 户 建 立 的 文 件 组 列表 。 如 果 没 有 使 用 关 键 词 PRIMARY , 列 出 第 一 个 文 件 就 存 储 为 主 文 件 。

PRIMARY PRIMARY 表 示 filespec 列 表 包 含 主 文件 组 中 的 文 件 , 而 主 文 件 组 包 含 文 件组 中 没 有 定 义 的 系 统 表 和 对 象 。 数 据库 只 能 有 一 个 PRIMARY 文 件 , 它 命 名数 据 库 的 起 始 文 件 。 如 果 不 使 用 关 键

词 PRIMARY , 列 出 的 第 一 个 文 件 就 存储 为 主 文 件 。

n n 表 示 可 以 多 次 重 复 命 名 文 件 。

LOG ON 如 果 使 用 LOG ON , 就 要 表 示 为 事 务 处理 记 录 提 供 记 录 文 件 名 。 LOG ON 后 面跟 一 系 列 文 件 , 这 些 文 件 将 成 为 数 据库 的 记 录 文 件 。如 果 CREATE DATABASE 语 句 中 省 略 了 LOG ON , 就 将 建 立 一 个由 SQL Server 选 定 名 称 的 记 录 文 件 , 其 容 量 为 指 定 数 据 文 件 容 量 的 25 % 。

FOR LOAD 只 向 后 兼 容 , SQL Server 7.0 不 需要 该 变 量 , 因 为 SQL Server 可 以 在恢 复 时 建 立 数 据 库 。

FOR ATTACH FOR ATTACH 表 示 有 现 成 的 操 作 系 统 文件 集 , 必 须 提 供 定 义 第 一 个 主 文 件 的filespec , 如 果 与 文 件 首 次 建 立 或 者最 后 附 加 时 的 路 径 不 同 , 还 需 要 为 不同 路 径 的 文 件 提 供 filespec 列 表 , 除 非 必 须 多 于 16 个 filespec , 否 则 , 可 使 用 sp_attach_db, 而 不 使 用CREATE DATABASE FOR ATTACH。

NAME NAME 指 要 引 用 的 文 件 的 逻 辑 名 称 。

logical_file_name 文 件 使 用 的 逻 辑 名 称 。

FILENAME FILENAME 表 示 文 件 的 实 际 或 操 作 系 统文 件 名 。

′ os_file_name ′ 在 本 地 服 务 器 上 使 用 的 操 作 系 统 文 件名 和 路 径 。

SIZE 指 位 已 命 名 的 文 件 指 定 容 量 。

size size 是 文 件 的 起 始 容 量 , MB 或 KB 和数 字 一 起 使 用 表 示 兆 字 节 或 千 字 节 ; 缺 省 值 为 MB , 容 量 的 最 小 允 许 值 为1MB 。 如 果 不 用 SIZE , 建 立 文 件 时 , 数 据 文 件 的 容 量 为 3MB , 记 录 文 件 的容 量 为 1MB 。

MAXSIZE MAXSIZE 表 示 提 供 文 件 可 能 扩 展 的 最

大 容 量 。

max_size max_size 表 示 文 件 能 扩 展 的 最 大 容量 , 如 果 没 有 提 供 max_size , 文 件 将扩 展 到 磁 盘 满 为 止 。 当 磁 盘 接 近 某 一容 量 百 分 数 时 , 应 使 用 SQL Server Agent 生 成 警 告 。

UNLIMITED UNLIMITED 指 文 件 可 以 扩 展 至 磁 盘 满为 止 。

FILEGROWTH FILEGROWTH 表 示 提 供 文 件 扩 展 时 的 增

量 , 其 总 值 不 能 超 过 MAXSIZE 。

growth_increment growth_increment( 缺 省 值 为 256KB , 最 小 值 为 64KB) 给 出 扩 展 增 量 , 该 增量 化 整 至 最 接 近 64KB 。

示例

下 面 是 CREATE DATABASE 语 句 的 示 例 :

USE master G O

CREATE DATABASE mydb O N

( NAME = ′ mydb_dat1 ′ ,

FILENAME = ′ c :\ mssql7 \ data \ mydbdat.mdf ′ , SIZE=100,

MAXSIZE =900,

FILEGROWTH =5 ) LOG ON

( NAME = ′ mydb_log1 ′ ,

FILENAME = ′ d:\ mssql7 \ data \ mydblog.ldf′ , SIZE = 25MB,

MAXSIZE =200MB, FILEGROWTH =5MB ) G O

在 本 例 中 , 数 据 文 件 和 记 录 文 件 中 建 立 了 一 个 新 的 数 据 库 。

CREATE DEFAULT

CREATE DEFAULT 语 句 建 立 一 个 需 要 限 制 列 或 用 户 定 义 的 数 据 类 型 的 对 象 ( 这就 是 最 好 使 用 CREATE 或 ALTER TABLE 语 句 中 DEFAULT 子 句 的 原 因 ) 。 当 插 入 了一 行 , 而 又 没 有 提 供 数 值 时 , 利 用 用 户 定 义 的 数 据 类 型 , 其 缺 省 值 可 以 确 定 插入 一 列 或 所 有 列 中 的 数 值 。 如 果 重 复 使 用 缺 省 值 , 就 可 以 使 用 CREATE DEFAULT 语 句 , 因 为 它 比 编 写 CREATE TABLE 语 句 更 为 有 效 。

语法

CREATE DEFAULT default AS constant_expression

变量

default default 是 使 用 标 识 符 规 则 的 缺 省 名 称 。constant_expression 常 数 表 达 式 是 常 数 值 , 而 不 是 数 据 库 的 对 象

名 称 。 可 以 使 用 任 意 常 数 、 函 数 、 数 学 表 达式 和 全 局 变 量 。 字 符 与 日 期 应 加 上 单 引 号 。二 进 制 数 据 加 Ox 前 缀 , 货 币 加 前 缀 美 元 符号 ( $ )。

示例

下 面 是 CREATE DEFAULT 语 句 的 示 例 :

CREATE DEFAULT Phone_Default AS ′ No Phone Number ′ G O

sp_bindefault Phone_Default ,′ Mytable.Telephone_Nbr′ G O

本 例 中 , 建 立 了 Phone_Default , 当 没 有 给 出 Mytable 中 Telenhone_Nbr 列的 值 , 就 用 INSERT 语 句 在 该 列 中 插 入 字 符 “ No Phone Number ”。

CREATE INDEX

CREATE INDEX 语 句 建 立 表 格 的 索 引 , 但 是 用 户 必 须 是 表 格 的 拥 有 者 , 如 果所 建 索 引 是 PRIMARY KEY ,可 在 CREATE TABLE 或 ALTER TABLE 语 句 中 使 用 PRIMARY KEY 约 束 。 使 用 数 据 库 . 表 格 拥 有 者 . 表 名 限 制 表 名 , 并 限 制 数 据 库 和 拥 有 者 , 可 以 在 另 一 数 据 库 的 表 格 中 建 立 索 引 。

语法

CREATE [ UNIQUE ] [ CLUSTERED | NONCLUSTERED ]

INDEX index_name ON table (column [ ,...n ] )

[ W ITH

[ PAD_INDEX ]

[[ ,] FILLFACTOR = fillfactor]

[[ ,] IGNORE_DUP_KEY ]

[[ ,] DROP_EXISTING ]

[[ ,] STATISTICS_NORECOMPUTE ]

[ ON filegroup ]

变量

UNIQUE UNIQUE 表 示 建 立 唯 一 的 索 引 , 此 索 引 禁 止 组 成 该键 的 列 有 相 同 的 值 , SQL Server 通 过 检 查 重 复 值来 保 证 上 述 情 况 。 SQL Server 不 允 许 在 带 有 重 复列 的 行 上 放 置 索 引 。 即 使 重 复 行 为 空 , 也 必 须 更新 或 删 除 它 们 才 能 建 立 唯 一 索 引 。

CLUSTERED CLUSTERED INDEX 表 示 行 的 物 理 顺 序 与 行 的 索 引 顺序 相 同 , 这 些 行 带 有 保 存 数 据 行 的 成 簇 索 引 的 叶页 。 如 果 建 立 了 成 簇 索 引 , 表 格 中 的 所 有 非 成 簇索 引 也 都 重 建 。 这 表 示 第 一 步 应 先 建 立 成 簇 索 引 , 特 别 是 有 删 除 或 重 建 索 引 的 脚 本 时 就 更 应 如 此 。成 簇 索 引 是 已 分 类 的 表 格 , 所 以 建 立 成 簇 索 引 , 并 使 用 ON filegroup 子 句 可 将 已 分 类 的 表 格 移 到在 CREATE INDEX 语 句 中 指 定 的 新 文 件 组 上 , 要 保

证 文 件 有 足 够 的 空 间 ( 表 格 所 需 空 间 的 1.2 倍 ) 。NONCLUSTERED NONCLUSTERED 索 引 确 定 表 格 的 逻 辑 顺 序 。 与

CLUSTERED 索 引 不 同 , 逻 辑 顺 序 与 物 理 顺 序 不 同 , NONCLUSTERED 索 引 包 含 有 实 际 物 理 行 的 指 针 , 指针 可 以 是 目 前 存 储 在 NONCLUSTERED 索 引 而 不 是 过去 版 本 的 Row ID (RID) 中 的 成 簇 键 码 。 如 果 表 格没 有 CLUSTERED 索 引 , 指 针 就 指 向 由 文 件 ID 、 页数 和 行 ID 组 成 的 行 。 每 个 表 格 最 多 可 以 有 249 个NONCLUSTERED 索 引 。 但 是 , 表 格 中 索 引 越 多 , 它占 用 的 INSERT 行 就 越 长 。

index_name index_name 是 索 引 的 名 称 , 而 且 , 按 照 标 识 符 规则 , 每 个 表 格 ( 不 是 每 个 数 据 库 ) 必 须 有 唯 一 的 索引 名 称 。

table table 是 包 含 进 行 索 引 的 列 的 表 格 名 称 。 如 果 提 供了 数 据 库 和 表 格 拥 有 者 , 且 有 许 可 , 就 可 以 在 另一 个 数 据 库 中 建 立 索 引 。

column column 是 要 建 立 索 引 的 列 名 。 需 列 出 多 个 列 名 , 这 些 列 名 放 在 圆 括 号 内 , 并 用 逗 号 分 隔 开 , 按 建立 复 合 索 引 的 优 先 分 类 进 行 排 序 。 不 适 用 于 文 本 、图 像 、 位 和 已 计 算 的 列 , 它 们 也 不 能 用 作 任 何 索引 列 。 复 合 索 引 最 多 为 16 列 , 其 最 大 容 量 为 900 字 节 。

n n 指 前 面 的 列 可 以 重 复 。

PAD_INDEX PAD_INDEX 指 将 FILLFACTOR 应 用 于 内 部 ( 非 叶 ) 索引 页 ( 节 点 ) 以 及 叶 页 。

FILLFACTOR=

fillfactor

IGNORE_DUP_KEY

SORTED_DATA_REORG

FILLFACTOR 决 定 每 一 索 引 页 的 填 满 程 度 , 而 且 只在 第 一 次 创 建 索 引 时 使 用 , 但 是 页 面 的 实 际 填 满程 度 会 随 时 间 的 改 变 而 改 变 。 有 效 值 是 从 1 ~ 100 , 如 果 不 提 供 该 值 ,缺 省 值 为 0 。可 以 用 sp_configure 改 变 FILLFACTOR 的 缺 省 值 。如 果 FILLFACTOR 为 0 , 索 引 节 点 中 留 出 至 少 两 项 的 空 间 , 其 中 一 项 就 是索 引 页 面 的 索 引 指 针 。 如 果 FILLFACTOR 为 100 , 所 有 的 数 据 将 100 % 地 压 缩 在 一 起 , 这 只 适 用 于 只读 表 格 。 当 然 , FILLFACTOR 决 定 索 引 和 数 据 ( 在 成簇 索 引 的 情 况 下 ) 在 磁 盘 上 占 有 的 空 间 量 。 用 户 定义 的 FILLFACTOR 越 低 , 索 引 和 数 据 页 就 需 要 越 多的 空 间 存 储 数 据 。

IGNORE_DUP_KEY 决 定 重 复 键 和 其 他 行 一 起 插 入 唯一 成 簇 索 引 时 的 结 果 。 SQL Server 将 发 出 警 告 , 但 是 会 插 入 INSERT 中 非 重 复 键 的 其 他 行 。 忽 略 重复 键 的 行 , 且 不 插 入 它 们 , 如 果 不 使 用IGNORE_DUP_KEY , 将 部 插 入 所 有 的 行 , 不 只 是 重复 键 行 。

SORTED_DATA_REORG 通 知 SQL Server , 数 据 已 经

分 类 , 只 需 在 磁 盘 上 重 复 组 织 它 们 。 当 使 用FILLFACTOR OPTION , 改 变 数 据 在 页 面 中 的 存 储 方式 时 , 可 使 用 SORTED_DATA_REORG 。 用 DBCC SHOWCONTIG 可 决 定 表 格 是 否 分 段 , 是 否 需 要 重 新组 织 。

DROP EXISTING 使 用 DROP EXISTING 将 删 除 并 重 建 存 储 索 引 。 同

时 更 新 所 有 已 有 的 非 成 簇 索 引 。 该 变 量 比 DROP 和CREATE 更 有 效 , 因 为 只 需 进 行 一 次 更 新 , 而 不 必在 删 除 成 簇 索 引 后 更 新 一 次 , 在 重 建 成 簇 索 引 后再 更 新 一 次 。

STATISTICS_NORECOMPUT E

使 用 STATISTICS_NORECOMPUTE 也 可 以 提 高 效 率 , 这 表 示 指 索 引 统 计 数 字 不 会 自 动 重 新 计 算 。 使 用STATISTICS_NORECOMPUTE 可 能 带 来 伤 害 , 因 为 它不 能 提 供 查 询 优 化 程 序 进 行 分 布 统 计 , 也 就 不 能指 定 以 后 的 查 询 计 划 。

ON

filegroup

ON filegroup 表 示 放 置 索 引 的 文 件 组 。 如 果 不 使用 ON filegroup , 索 引 将 与 表 格 放 在 相 同 的 文 件组 中 。

示例

下 面 是 CREATE INDEX 语 句 的 示 例 :

CREATE INDEX Column1_2_ind ON Mytable (Column1,Column2)

本 例 建 立 了 一 个 复 合 索 引 。

CREATE PROCEDURE

CREATE PRECEDURE 语 句 建 立 存 储 过 程 , 此 存 储 过 程 是 Transact-SQL 语 句 的编 译 集 , 能 有 选 择 性 地 接 受 变 量 。

语法

CREATE PROC [ EDURE ]

procedure_name

[ ;number]

({ [ @ ]

parameter data_type}

[ VARYING ] [ =

default ]

[ OUTPUT ] )

[ ,...n ]

W ITH {RECOMPILE | ENCRYPTION | RECOMPILE, ENCRYPTION}

[ FOR REPLICATION ] A S

sql_statement

变量

procedure_name

; number

[ @ ] parameter

[ ...n ]

procedure_name 是 新 存 储 过 程 使 用 标识 符 规 则 的 名 称 , 存 储 过 程 名 对 于 数据 库 和 拥 有 者 是 唯 一 的 。 在 局 部 临 时程 序 的 名 称 前 加 一 个 英 磅 符 , 或 在 全局 临 时 程 序 的 名 称 前 加 两 个 英 磅 符 , 就 可 以 建 立 临 时 存 储 过 程 , 存 储 过 程也 可 创 建 为 启 动 存 储 过 程 , 在 SQL Server 用 sp_makestartup 系 统 存 储过 程 启 动 时 , 该 存 储 过 程 将 自 动 运行 。存 储 过 程 名 不 得 超 过 128 个 字 符 , 其 中 包 括 英 磅 符 “ # ”。

number 是 个 整 数 , 用 于 将 同 名 的 程 序

组 合 在 一 起 , 这 样 便 于 用 一 个 DROP PROCEDURE 语 句 将 它 们 全 部 删 除 。 名为 samename;1,samename;2 等 的 存 储过 程 可 以 用 “ DROP PROCEDURE samename ” 一 起 删 除 , 这 将 删 除 整 个组 , 一 旦 有 这 样 的 组 , 就 不 能 删 除 单个 程 序 。

@parameter 指 程 序 的 参 数 或 变 量 。0,1

或 1 个 以 上 的 变 量 都 可 以 在 CREATE PROCEDURE 语 句 中 声 明 。 如 果 没 有 编写 缺 省 值 , 当 运 行 程 序 时 , 由 用 户 提供 每 个 声 明 变 量 的 值 。 变 量 最 多 可 以有 1024 个 , 每 个 变 量 都 是 存 储 过 程的 局 部 变 量 。

data_type data_type 是 指 变 量 或 参 数 的 数 据 类

型 。 游 标 数 据 类 型 只 能 用 于 输 出 变量 , 而 且 必 须 同 VARYING 一 起 使 用 。

VARYING VARYING 将 返 回 集 定 义 为 输 出 参 数 , 它 用 于 游 标 数 据 类 型 。

default default 是 指 变 量 或 参 数 的 缺 省 值 , 它 必 须 是 个 常 数 。 利 用 缺 省 值 , 不 必提 供 参 数 或 变 量 的 值 , 就 能 运 行 存 储过 程 。 如 果 以 后 和 LIKE 一 起 使 用 变量 , 就 可 以 使 用 通 配 符 ( % ,_, [ ] 和

[ ^ ], 缺 省 值 可 以 是 NULL 。

OUTPUT OUTPUT 表 示 参 数 或 变 量 是 返 回 参 数 。值 返 回 至 调 用 程 序 , 不 适 用 于 文 本 参数 , 因 为 它 们 不 能 用 作 OUTPUT 参 数或 变 量 , 但 是 关 键 词 OUTPUT 可 以 保存 游 标 占 位 符 。

n n 指 前 面 的 项 可 以 重 复 。

{RECOMPILE | ENCRYPTION | RECOMPILE , ENCRYPTION}

RECOMPILE 指 每 次 运 行 存 储 过 程 时 都重 新 编 译 它 。 ENCRYPTION 通 知 SQL Server 为 存 储 过 程 加 密 存 储 在syscomments 系 统 表 中 的 行 。

FOR REPLICATION FOR REPLICATION 表 示 由 该 子 句 特 地

为 复 制 建 立 的 存 储 过 程 不 能 在 预 定 服务 器 上 运 行 , 它 用 于 建 立 只 能 通 过 复制 来 执 行 的 筛 选 存 储 过 程 。 FOR REPLICATION 不 能 和 RECOMPILE 选 项

一 起 使 用 。

AS AS 先 于 程 序 执 行 的 语 句 。

sql_statement SQL 语 句 指 存 储 过 程 中 要 运 行 的 多 个Transact-SQL 语 句 。

n n 指 可 能 有 多 个 SQL 语 句 。

示例

下 面 是 CREATE PROCEDURE 的 示 例 :

CREATE PROCEDURE MyProceduce A S

SELECT Column1,Column2

FROM Mytable WHERE Column3 = 8 G O

本 例 中 , 建 立 了 一 个 存 储 过 程 。

CREATE RULE

CREATE RULE 建 立 数 据 库 对 象 rule 。 规 则 可 以 连 接 列 或 用 户 定 义 的 数 据 类 型 , 决 定 哪 些 值 可 以 放 在 列 中 。 或 者 可 以 用 CHECK CONSTRAINTS 来 查 看 , 因 为 可 以在 一 列 或 多 个 列 上 定 义 多 个 约 束 。 一 列 只 能 连 接 一 个 规 则 。

语法

CREATE RULE rule

AS condition_expression

变量

rule rule 是 使 用 标 识 符 规 则 的 规 则 名 称 。

condition_expression condition_expression 是 在 定 义 规 则的 WHERE 子 句 中 有 效 的 任 意 表 达 式 。规 则 不 能 引 用 任 何 其 它 的 列 或 数 据 库

对 象 。 列 中 的 新 值 以 加 ′ @ ′ 前 缀 的标 识 符 表 示 。

示例

下 面 是 CREATE RULE 的 示 例 :

CREATE RULE Color_Rule A S

@color IN ( ′ Red ′ , ′ Blue ′ ,′ Yellow ′ )

G O

sp_bindrule ′ Color_Rule ′ , ′ M ytable.Column3 ′ G O

本 例 中 , 规 则 创 建 为 数 据 库 对 象 , 并 与 列 相 连 接 。 也 可 将 规 则 与 用 户 定 义的 数 据 类 型 相 连 接 。 用 sp_unbindrule 切 断 与 对 象 的 连 接 。

CREATE SCHEMA

CREATE SCHEMA 建 立 模 式 , 模 式 是 没 有 数 据 的 数 据 库 结 构 , 它 可 用 于 开 发 环境 或 测 试 环 境 。

语法

CREATE SCHEMA

[ AUTHORIZATION owner ]

[ schema_element [ schema_element2 [ ...schema_elementn ]]]

变量

AUTHORIZATION owner AUTHORIZATION owner 是 数 据 库 中 有

效 安 全 帐 户 的 注 册 ID 。

schema_element={table_definition

| view_definition | grant_statement}

示例

下 面 是 CREATE SCHEMA 语 法 的 示 例 :

table_definition = CREATE TABLE 语 句 , 它 在 此 模 式 中 建 立 表 格 。view_definition=CREATE VIEW 语句 , 它 在 此 模 式 中 建 立 视 图 , grant_statement=GRANT 语 句 , 它 在此 模 式 中 给 用 户 或 用 户 组 授 予 许 可 。

CREATE SCHEMA AUTHORIZATION MyAccount

GRANT SELECT on View1 TO public

CREATE VIEW View1 (Column1) AS SELECT Column1 from MyTable CREATE TABLE MyTable (Column1 int)

本 例 中 , 为 安 全 帐 户 所 拥 有 的 数 据 库 对 象 创 建 MyAcount 模 式 。

CREATE TABLE

CREATE TABLE 指 在 数 据 库 中 建 立 新 的 表 格 。

语法

CREATE TABLE table_name ({<column_definition >

| column_name AS computed_column_expression

| <table_constraint>

} [ , ... n ]

)

[ ON { filegroup / DEFAULT} ]

[ TEXTIMAGE_ON filegroup ]

<column_definition> ::= { column_name data_type }

[ NULL | NOT NULL ]

[ IDENTITY [ ( seed [ , increment ] )

[ NOT FOR REPLICATION ] ] ]

[ ROWGUIDCOL ]

[ <column_constraint> ::=

[ CONSTRAINT constraint _ name ]

{ { PRIMARY KEY \ UNIQUE }

[ CLUSTERED | NONCLUSTERED ]

[ W ITH [ FILLFACTOR =

[ ON fillegroup ]

| [ FOREIGN KEY ]

REFERENCESref_table

[ ( ref _ column

fillfactor ]

) ]

[ NOT FOR REPLICATION ]

| DEFAULT constant_expression

| CHECK [ NOT FOR REPLICATION ]

( logical_expression )

}

] [ ... n ]

<table_constraint> ::= [ CONSTRAINT constraint_name ]

{ [ { PRIMARY KEY |UNIQUE }

[ CLUSTERED |NONCLUSTERED ]

{ ( column [ ,... n ] ) }

[ W ITH [ FILLFACTOR= fillfactor ]

[ ON { filegroup / DEFAULT} ]

| FOREIGN KEY

[ ( column [ ,...n ] )]

REFERENCES ref_table [ (

[ NOT FOR REPLICATION ]

ref_column

[ ,...n ] )]

| CHECK [ NOT FOR REPLICATION ]

( search_conditions )

}

变量

table table 是 要 建 立 的 表 格 名 称 。

column_name column_name 是 要 建 立 的 列 名 , 时 间戳 数 据 类 型 可 以 省 略 列 名 。timestamp 将 成 为 SQL Server 所 使 用 的 列 名 。

AS computed_column_expression 已 计 算 的 列 是 虚 拟 列 , 它 是 个 新 选

项 , 现 在 , 已 计 算 的 列 可 以 存 储 和 检索 , 但 不 能 INSERT 或 UPDATE 计 算 列 。计 算 列 不 能 用 作 PRIMARY KEY , UNIQUE 、 FOREIGN KEY 或 CHECK 约 束

中 的 关 键 列 。

ON filegroup ON filegroup 决 定 为 约 束 建 立 的 表 格在 磁 盘 上 驻 留 的 位 置 。 如 果 不 用 ON filegroup , 表 格 将 放 在 缺 省 的 文 件组 中 。

data_type data_type 与 新 列 的 SQL Server 数 据类 型 有 关 , 如 果 使 用 唯 一 标 记 符 数 据

类 型 , 而 且 表 中 有 现 成 的 行 , 就 可 以用 DEFAULT 约 束 和 NEWID() 函 数 , 为现 有 行 中 的 新 列 生 成 唯 一 标 识 符 值 。

NULL | NOT NULL NULL | NOT NULL 决 定 列 是 否 可 以 保 存NULL 值 。

IDENTITY IDENTITY 是 用 来 在 新 列 中 放 置 递 增 整数 的 属 性 。 将 来 添 加 新 列 时 , 该 属 性也 为 真 。

seed seed 与 用 IDENTITY 属 性 添 加 一 列 时希 望 在 第 一 行 中 出 现 的 的 整 数 值 有关 , 它 表 示 新 IDENTITY 列 的 值 开 始的 位 置 。 如 果 不 用 此 关 键 词 , SQL Server 将 列 的 种 子 值 定 为 1 。

increment 如 果 用 IDENTITY 属 性 添 加 一 列 , Increment 是 指 在 添 加 新 行 时 , 新IDENTITY 列 中 的 值 的 增 量 。 如 果 不 使用 increment , SQL Server 对 所 添 加的 最 后 一 行 中 的 值 增 加 1 。

NOT FOR REPLICATION 如 果 使 用 复 制 , 并 用 IDENTITY 属 性添 加 一 列 , 就 可 以 用 NOT FOR REPLICATION 通知 SQL Server ,当 SQL Server 系 统 复 制 注 册 ( 例 如 sqlrepl)

将 数 据 插 入 表 格 中 时 , 不 施 加IDENTITY 条 件 。

ROWGUIDCOL ROWGUIDCOL 属 性 是 全 局 唯 一 标 识 符列 , 它 只 能 分 配 给 唯 一 标 识 符 列 , 而且 每 个 表 格 一 个 。

CONSTRAINT CONSTRAINT 选 项 是 如 何 建 立 PRIMARY KEY 、 UNIQUE 、 FOREIGN KEY 、 CHECK 或 DEFAULT 约 束 。 CONSTRAINTS 用 来

保 持 数 据 的 完 整 性 。 添 加 CONSTRAINT 可 以 建 立 索 引 。

constraint_name constraint_name 是 指 新 建 立 的CONSTRAINT 名 称 。 如 果 没 有 给CONSTRAINT 命 名 , SQL Server 将 为其 命 名 。

PRIMARY KEY PRIMARY KEY 是 一 种 约 束 ( 每 个 表 格 只有 一 个 ) , 它 在 列 中 建 立 唯 一 索 引 , 并 将 列 指 定 为 表 格 的 主 键 。 如 果 计 划在 引 用 此 表 的 其 它 表 格 中 包 含FOREIGN KEY , 就 需 要 一 个 PRIMARY KEY 。

UNIQUE 列 值 对 于 表 格 可 以 是 唯 一 的 , 但 不 指

定 为 主 键 。 UNIQUE 约 束 在 列 中 建 立 唯

一 的 索 引 。 CLUSTERED|NONCLUSTERED 要 建 立 一 个 PRIMARY KEY( 缺 省

CLUSTERED) 或 唯 一 UNIQUE( 缺 省NONCLUSTERED) 约 束 , CLUSTERED 或 者

NONCLUSTERED 决 定 要 添 加 的 索 引 类型 。

WITH FILLFACTOR=fillfactor WITH FILLFACTOR 描 述 每 个 索 引 页 有

多 少 数 据 。 可 选 值 为 1 ~ 100 , 缺 省 值为 0 , 以 百 分 数 表 示 。 填 充 因 子 越 低 , 可 用 空 间 就 越 多 。 这 样 就 在 页 面 上 留下 较 多 的 空 间 以 插 入 新 行 , 而 不 必 强迫 SQL Server 为 新 行 分 配 较 多 的 空

间 。

ON filegroup

ON filegroup 确 定 为 约 束 建 立 的 索 引

在 磁 盘 上 驻 留 的 位 置 。 如 果 不 使 用 ON

filegroup , 索 引 将 和 表 格 放 在 相 同

文 件 组 中 。

FOREIGN KEY

REFERENCES

FOREIGN KEY REFERENCES 建 立 约 束

并 通 过 保 证 列 中 的 每 一 项 存 在 于 引 用表 格 的 列 中 来 实 施 引 用 的 完 整 性 。

ref_table ref_table 是 指 FOREIGN KEY 约 束 是引 用 的 表 格 名 称 。

ref_column ref_column 是指 FOREIGN KEY 约 束 所引 用 的 列 。

NOT FOR REPLICATION 如 果 使 用 复 制 , 并 用 IDENTITY 属 性添 加 列 , 就 可 以 用 NOT FOR REPLICATION 通知 SQL Server ,当 SQL Server 系 统 复 制 注 册 ( 例 如 sqlrepl) 将 数 据 插 入 到 表 格 中 时 , 不 施 加IDENTITY 条 件 。

DEFAULT DEFAULT 是 一 种 约 束 , 它 决 定 如 果 为

INSERT 上 的 列 指 定 数 值 , 在 列 中 插 入哪 些 值 。 对 带 有 时 间 戳 的 数 据 类 型 、IDENTITY 属 性 或 另 一 个 DEFAULT 约 束的 列 不 能 使 用 该 约 束 , 因 为 一 列 只 能有 一 个 值 。

constant_expression constant_expression 和 DEFAULT 一起 使 用 , 作 为 列 的 缺 省 值 , 它 可 以 是常 数 , NULL 或 系 统 函 数 。

CHECK CHECK 是 一 种 约 束 , 它 限 制 可 以 插 入列 中 的 值 。

logical_expression logical_expression 可 以 引 用 同 一 行中 其 他 的 列 , 并 返 回 真 或 假 。

column [ , n ] column 代 表 约 束 的 列 的 清 单 。

示例

下 面 是 CREATE TABLE 语 句 的 示 例 :

CREATE TABLE Mytable (

M yTableID int identity,

M yDate datetime,

UsedByName AS USER_NAME()

)

本 例 中 , 建 立 了 表 格 , 并 将 USER_NAME 系 统 函 数 作 为 计 算 列 UsedByName 。

CREATE TRIGGER

CREATE TRIGGER 建 立 触 发 器 , 该 触 发 器 定 义 为 一 种 特 殊 的 存 储 过 程 , 且 该 存 储过 程 在 用 户 发 出 作 用 于 表 格 的 INSERT 、 UPDATE 或 DEFAULT 语 句 时 运 行 。 如 果 表格 上 有 CONSTRAINTS , 它 们 将 在 引 发 触 发 器 前 检 查 约 束 。 如 果 CONSTRAINT 的 有效 性 检 查 失 败 , 将 不 引 燃 触 发 器 。现在,对于任意的 INSERT 、UPDATE 或 DEFAULT 语 句 , 可 以 有 多 个 触 发 器 。

语法

CREATE TRIGGER trigger_name

ON table

[ W ITH ENCRYPTION ]

{

{FOR { [ ,] [ INSERT ] [ ,] [ UPDATE [ ,] [ DELETE ] }

[ W ITH APPEND ]

[ NOT FOR REPLICATION ] A S

sql_statement [ ,...n ]

}

|

{FOR { [ ,] [ INSERT ] [ ,] [ UPDATE ] }

[ W ITH APPEND ]

[ NOT FOR REPLICATION ] A S

IF UPDATE ( column )

[ {AND | OR} UPDATE (

column

) [ ,...n ]]

sql_statement [ ,... n

| IF (COLUMNS_UPDATED() {bitwise_operator} updated_bitmask)

{comparison_operator} column_bitmask [ ...n ]

}

}

变量

trigger_name trigger_name 是 指 使 用 标 识 符 规 则 的触 发 器 名 。 在 数 据 库 中 该 变 量 是 唯 一的 。

table 指 触 发 器 运 行 的 表 格 。

WITH ENCRYPTION WITH ENCRYPTION 加 密 触 发 器 的

syscomments 系 统 表 格 行 。

{ [ , ][ INSERT ][ , ][ UPDATE ][ , ]

[ DELETE ] } | { [ , ][ INSERT ][ , ]

[ UPDATE ] }

INSERT 、 UPDATE AND DELETE 是 引 发

或 运 行 触 发 器 的 数 据 修 改 语 句 。 可 以以 任 意 顺 序 将 它 们 组 合 在 一 起 使 用 , 并 用 逗 号 分 隔 开 它 们 。

WITH APPEND WITH APPEND 指 要 添 加 现 有 类 型 的 另

一 个 触 发 器 ( 兼 容 级 别 低 于 70 时 , 只向 后 兼 容 )

NOT FOR REPLICATION 如 果 复 制 修 改 表 格 , 且 使 用 着 NOT FOR REPLICATION , 将 不 运 行 触 发 器 。

AS AS 优 先 于 触 发 器 执 行 的 语 句 。

sql_statement Transact-SQL 语 句 建 立 触 发 器 , 但 不应 用 来 将 数 据 返 回 给 用 户 。 只 供 触 发器 调 用 进 行 删 除 或 插 入 的 特 殊 表 格 叫概 念 表 格 。 它 们 类 似 于 表 格 , 在 其 上放 置 触 发 器 并 保 存 变 化 的 行 的 新 旧 数

值 。 可 以 在 触 发 器 中 引 用 它 们 。

示例

下 面 是 CREATE TRIGGER 语 句 的 示 例 :

CREATE TRIGGER MyTrigger ON MyTable

FOR INSERT,UPDATE,DELETE A S

EXEC master..xp_sendmail ′ gaylecof′ , ′ MyTable has changed .′

G O

本 例 中 , 建 立 了 表 格 变 化 时 发 送 邮 件 的 触 发 器 。

CREATE VIEW

CREATE VIEW 语 句 建 立 虚 拟 的 表 格 , 此 表 格 表 示 数 据 的 逻 辑 视 图 , 而 不 直 接访 问 物 理 表 格 。CREATE VIEW 不 能 使 用 ORDER BY 子 句 ,COMPUTE 子 句 ,或 COMPUTE BY 子 句 , 或 关 键 词 INTO , 也 不 能 引 用 临 时 表 。

语法

CREATE VIEW view_nam e[ (column [ ,...n ] )]

W ITH ENCRYPTION ] A S

select_statement

[ W ITH CHECK OPTION ]

变量

view_name view_name 是 指 使 用 标 识 符 规 则 的 视图 名 称 。

column column 指 视 图 中 的 列 名 。

n n 指 列 可 以 重 复 。

WITH ENCRYPTION 加 密 视 图 的 syscomments 系 统 表 格行 。

AS 视 图 的 操 作 。

select_statement 定 义 视 图 的 Transact SQL-SELECT 语句 。

WITH CHECK OPTION WITH CHECK OPTION 保 证 修 改 视 图 数

据 以 后 , 可 通 过 视 图 看 见 数 据 。

示例

下 面 是 CREATE VIEW 语 句 的 示 例 :

CREATE VIEW MyView (Column1,Column2,Column3) W ITH ENCRYPTION

A S

SELECT a.Column1, a.Column2, b.Column3

FROM MyTable a,

YourTable b

WHERE a.Column1 = b.Column1 G O

CURRENT_TIMESTAMP

CURRENT_TIMESTAMP 可 以 用 作 函 数 , 或 者 在 CREATE TABLE 或 ALTER TABLE

语 句 中 与 DEFAULT 约 束 一 起 使 用 , 对 保 存 当 前 数 据 和 时 间 的 列 建 立 缺 省 值 。

语法

CURRENT_TIMESTAMP

示例

下 面 是 CURRENT_TIMESTAMP 函 数 的 示 例 :

DECLARE @myvariable datetime

SET @myvariable = CURRENT_TIMESTAMP

本 例 中 , 将 当 前 的 数 据 与 时 间 提 供 给 局 部 变 量 Myvariable 。

CURRENT_USER

CURRENT_USER 可 用 作 函 数 , 也 可 以 和 CREATE TABLE 或 ALTER TABLE 语 句 中的 DEFAULT 约 束 一 起 使 用 , 为 保 存 当 前 用 户 的 列 建 立 缺 省 值 。

语法

CURRENT_USER

示例

下 面 是 CURRENT_USER 函 数 的 示 例 :

DECLARE @myvarlable sysname

SET @myvariable = CURRENT_USER

本 例 中 , 将 当 前 游 标 提 供 给 局 部 变 量 myvariable 。

游 标 数 据 类 型

游 标 数 据 类 型 用 于 创 建 游 标 变 量 , 需 要 用 它 作 为 游 标 OUTPUT 变 量 , 它 不 能用 于 CREATE TABLE 语 句 。 只 能 用 SET @local_variable 语 句 和 CURSOR_STATUS 函 数 对 游 标 数 据 类 型 进 行 操 作 。

CURSOR_STATUS

CURSOR_STATUS 为 一 标 量 函 数 , 它 允 许 通 知 存 储 过 程 的 调 用 者 , 存 储 过 程 是否 为 给 定 的 参 数 返 回 游 标 和 结 果 集 。

如 果 返 回 值 为 1 , 游 标 的 结 果 集 至 少 有 一 行 用 于 感 应 游 标 、 不 感 应 游 标 和 动态 游 标 ; 返 回 集 有 0 , 1 或 多 行 。 打 开 游 标 , 如 果 返 回 值 为 0 , 游 标 的 返 回 集 为空 , 如 果 返 回 值 为 -1 , 关 闭 光 标 。 如 果 返 回 值 为 -2 , 就 没 有 给 已 声 明 的 游 标 变量 分 配 游 标 。 如 果 返 回 值 为 -3 , 指 定 名 称 的 游 标 不 存 在 或 者 还 没 有 给 它 分 配 游标 。

语法

CURSOR_STATUS (

{

{ ′ local ′ , cursor_name }

|{ ′ global′ , cursor_name }

|{ ′ variable ′ ,

}

)

cursor_variable }

变量

  • local ′ local 是 一 常 数 , 表 示 游 标 是 本 地 游标 。

cursor_name cursor_name 是 使 用 标 识 符 规 则 的 游标 名 称 。

  • global ′ global 是 一 常 数 , 表 示 游 标 是 全 局 游标 。

  • variable ′ variable 是 一 常 数 , 表 示 游 标 源 是 一局 部 变 量

cursor_variable cursor 是 用 CURSOR 数 据 类 型 定 义 的游 标 变 量 名 。

cursors

使 用 游 标 时 , 最 好 一 次 处 理 结 果 集 的 一 行 。 现 在 , 可 以 用 游 标 数 据 类 型 将 游 标赋 给 变 量 或 参 数 , 下 面 的 语 句 可 与 游 标 一 起 使 用 : DECLARE CURSOR , CLOSZ , DECLARE @local_variable ,DEALLOCATE , OPEN ,UPDATE ,SET ,DELETE ,FETCH ,

CREATE PROCEDURE 。 下 面 的 全 局 变 量 可 与 游 标 一 起 使 用 : @@cursor_rows , @@fetch_status , CURSOR_STATUS , 下 列 系 统 存 储 过 程 可 与 游 标 一 起 使 用 : sp_describe_cursor 、 sp_describe_cursor_columns 、sp_describe_cursor_tables 、 sp_cursor_list 。

DATABASEPROPERTY

当 需 要 提 供 数 据 库 和 属 性 名 称 时 , DATABASEPROPERTY 可 返 回 指 定 数 据 库 的属 性 值 , 该 值 为 1=True , 0=False , NULL( 如 果 输 入 出 错 ) 。

语法

DATABASEPROPERTY ( ′ database ′ , ′ property ′ )

变量

  • database ′ database 是 指 想 获 得 信 息 的 数 据 库 名 称 。

  • property ′ property 是 返 回 信 息 的 数 据 库 属 性 名 称 , 这 些

    属 性 包 括 : IsAnsiNullDefault = SQL-92 无 效 性 能IsAnsiNullsEnabled = 将 空 值 赋 给 未 知 数 , 进 行 比 较IsAnsiWarningsEnabled = 出 现 错 误 时 给 出 警 告 信 息IsAutoClose = 最 后 一 个 用 户 退 出 系 统 后 关 闭 数 据 库IsAutoShink = 自 动 压 缩 数 据 库 文 件

IsBulkCopy= 因 某 些 操 作 登 录 没 发 生IsCloseCursorsOnCommitEnabled = 当 提 交 事 务 时 关 闭 游 标IsDboOnly = 只 有 数 据 库 拥 有 者 能 访 问 数 据 库

IsDetached = 用 sp_detach_db 分 离 数 据 库IsEmergencyMode = 应 急 模 式 允 许 使 用 可 疑 的 数 据 库IsFulltextEnabled = 允 许 使 用 全 文 数 据 库

IsInLoad = 恢 复 数 据 库IsInRecorery = 正 在 恢 复 数 据 库

IsInStandBy = 只 读 数 据 库 , 附 带 恢 复 记 录IsLocalCursorsDefault =Default 表 示 声 明 游 标 为 LOCAL IsNotRecovered = 数 据 库 没 有 恢 复

IsNullConcat =NULL 并 置 数 提 供 NULL 结 果 集IsOffline = 脱 机 数 据 库

IsQuotedIdentifiersEnabled = 有 效 标 识 符 可 以 使 用 双 引号

IsReadOnly = 只 读 数 据 库IsRecursiveTriggersEnabled = 循 环 触 发 器IsShutDown = 数 据 库 的 启 动 问 题

IsSingleUser = 只 有 一 个 用 户 可 以 使 用 数 据 库IsSuspect = 可 疑 的 数 据 库

IsTrunclog = 检 查 点 截 断 数 据 库 的 事 务 处 理 记 录Version = 已 关 闭 的 数 据 库 的 版 本 号 或 NULL

示例

下 面 是 DATABASEPROPERTY 函 数 的 示 例 :

USE master

SELECT DATABASEPROPERTY (′ master′ ,′ IsTrunclog ′ )

本 例 中 , 返 回 值 为 master 系 统 数 据 库 中 的 IsTrunclog 属 性 设 置 , 返 回 值为 1 表 示 真 , 0 为 假 , NULL 表 示 没 找 到 值 。

数 据 类 型

数 据 类 型 决 定 列 、 存 储 过 程 参 数 和 局 部 变 量 的 数 据 特 征 , 分 为 系 统 提 供 的数 据 类 型 和 用 户 定 义 的 数 据 类 型 , 系 统 提 供 的 数 据 类 型 在 下 面 几 节 中 列 出 。

( 一 ) 二 进 制 数 据 (Binary Data)

二 进 制 数 据 的 数 据 类 型 有 :

binary binary 是 固 定 长 度 的 数 据 类 型 , 最 多可 以 有 8000 个 字 节 。

varbinary varbinary 是 可 变 长 度 的 数 据 类 型 , 最 多 可 以 有 8000 个 字 节 。

( 二 ) 字 符 数 据 (Character Data)

字 符 数 据 的 数 据 类 型 有 :

char char 指 固 定 长 度 的 数 据 类 型 ,最 多 可 以 有 8000 个 ANST 字 符 。

varchar varchar 是 可 变 长 度 的 数 据 类 型 , 最 多 可 以 有 8000 个ANSI 字 符 。

nchar nchar 指 固 定 长 度 的 数 据 类 型 , 最 多 可 以 有 4000 个Unicode( 统 一 长 度 ) 的 字 符 。 Unicode 字 符 表 示 每 字 符 2 个 字 节 。 UNICODE 包 括 所 有 国 际 通 用 字 符 。

nvarchar nvarchar 是 可 变 长 度 的 数 据 类 型 , 最 多 可 以 有 4000 个Unicode( 统 一 长 度 ) 的 字 符 。 Unicode 字 符 表 示 每 字 符 2 个 字 节 。 UNICODE 包 括 所 有 国 际 通 用 字 符 。

( 三 ) 日 期 和 时 间 数 据 (Date and Time Data)

日 期 和 时 间 数 据 的 类 型 :

datetime datetime 数 据 类 型 的 可 能 值 是 从 1753 年 1 月 1 日 开 始 , 到 9999 年 12 月 31

日 。

smalldatetime smalldatetime 数 据 类 型 没 有datetime 数 据 类 型 精 确 (datetime 精确 至 1 / 300 秒 , smalldatetime 精 确至 1 分 钟 ) , 它 的 可 能 值 从 1900 年 1 月 1 日 开 始 , 到 2079 年 6 月 6 日 。datetime 数 据 占 8 个 字 节 , smalldatetime 数 据 占 4 个 字 节 。

( 四 ) 精 确 数 字 数 据 (Exact Numeric Data)

精 确 值 数 据 类 型 有 :

decimal decimal 是 一 种 精 确 值 数 据 类 型 , 其可 能 值 从 -10 38-1 开 始 , 到 10 38-1 。

numeric 和 decimal 数 据 类 型 相 同 。

int int 是 只 保 存 整 数 的 数 据 类 型 , 此 整数 值 从 -2 31 -1(-2 , 147 , 483 , 648) 到2 31 -1(2 , 147 , 483 , 647) 。

smallint smallint 也 是 一 种 只 存 整 数 的 数 据类 型 ,此 整 数 值 从 -2 15(-32 ,768) 开

始 到 2 15 -1(32 , 667) 。

tinyint tinyint 是 一 种 只 存 整 数 的 数 据 类型 , 此 数 值 从 0 开 始 至 255 。

( 五 ) 近 似 值 数 字 数 据 类 型 (Appxoximate Numeric Data)

近 似 值 的 数 据 类 型 有 :

float

float 是 浮 点 数 数 据 类 型 。 缺 省 状 态

下 为 15 位 精 度 , 正 数 范 围 从 2.23E-

308 开 始 至 1.79E + 308 , 负 数 范 围 从

-2.23E-308 开 始 至 -1.79E + 308 。

real

此 数 据 类 型 可 以 存 储 类 似 于 float 的

正 负 浮 点 数 , 实 数 据 类 型 有 7 位 精 度 ,

正 值 范 围 是 1.18E-38 至 3.40E-38 ,

可 以 存 储 0 , 负 数 范 围 是 -1.18E-38

至 -3.40E + 38 。

( 六 )

货 币 数 据 (Monetary Data)

财 政 货 币 数 据 的 数 据 类 型 有 :

money money 是 表 示 财 政 货 币 的 数 据 类 型 ,

其 值 为 -922 ,337 ,203 ,685 ,477.5707 到 + 922 , 337 , 203 , 685 , 477.5807 ,

精 确 到 千 分 之 十 货 币 单 位 。

smallmoney smallmoney 数 据 类 型 可 存 储 的 货 币 值范 围 是 -214 , 748.3648 至 + 214 , 748.3647 , 精 确 到 为 千 分 之 十 货 币 单位 。 smallmoney 值 显 示 时 可 圆 整 至 2 位 小 数 。

( 七 ) 特 殊 数 据 (Special data)

特 殊 数 据 类 型 有 1 位 , 其 值 为 1 或 0 。 SQL Server 认 为 大 于 0 的 整 数 都 是 1 。

( 八 ) 游 标 (Cursor)

游 标 数 据 类 型 和 游 标 变 量 一 起 使 用 , 且 只 用 于 游 标 环 境 。

( 九 ) 系 统 名 称 (Sysname)

Sysname 是 SQL Server 数 据 类 型 , 它 由 SQL Server 定 义 为 nvarchar(128) 型 数 据 , 128 个 Unicode 字符 ,256 个 字 节 。 SQL Server 需 要 介 于 系 统 表 格 和 存储 过 程 之 间 的 共 用 数 据 类 型 , SQL Server 将 系 统 名 称 用 作 共 用 数 据 类 型 。

( 十 ) 时 间 戳 (timestamp)

时 间 戳 是 一 种 数 据 类 型 , 每 当 插 入 行 或 更 新 行 时 , SQL Server 都 会 更 新 时间 戳 。 每 个 表 格 只 限 一 个 时 间 戳 , 且 是 二 进 制 (8) 或 可 变 二 进 制 (8) 型 数 据 。

( 十 一 ) 唯 一 标 识 符 (uniqueidentifier)

唯 一 标 识 符 是 16 个 字 节 的 全 局 唯 一 全 局 标 识 符 , 也 称 GUID 。

( 十 二 ) 用 户 自 定 义 的 数 据 类 型 (user-defined)

user-defined 是 建 立 在 SQL Server 数 据 类 型 的 基 础 上 , 用 sp_addtype 系统 存 储 过 程 定 义 的 数 据 类 型 。

( 十 三 ) 文 本 和 图 像 数 据 (Text and Image Data)

文 字 和 图 像 数 据 类 型 有 :

text text 是 一 种 数 据 类 型 , 最 多 可 以 保 存2 31 -1 或 2 , 147 , 483 , 647 个 字 符 , 缺 省 长 度 为 16 , 该 缺 省 长 度 可 以 改变 。

ntext ntext 为 一 种 数 据 类 型 , 最 多 可 以 保存 2 30-1 或 1,073,741,823 个 字 符 ,

其 长 度 可 变 。

Image Image 是 一 种 数 据 类 型 , 最 多 可 以 保存 2 31-1 或 2 , 147 , 483 , 647

个 字 节 的 二 进 制 数 据 , 其 长 度 可 变 。

( 十 四 ) 统 一 代 码 数 据 (Unicode Data)

Nchar(n 前 缀 是

SQL-92 统 一 代 码 标 准 )

Nchar 是 统 一 代 码 数 据 , 最 多 可 以 保

存 4000 个 固 定 长 度 的 字 符 。

nvarchar

nvarchar 是 统 一 代 码 数 据 , 最 多 可 以

保 存 4000 个 可 变 长 度 的 字 符 。

Ntext

Ntext 是 统 一 代 码 数 据 , 最 多 可 以 保

存 1 , 073 , 741 , 823 个 可 变 长 度 的

字 符 。

DATALENGTH

DATALENGTH 是 系 统 函 数 , 它 返 回 任 意 数 据 类 型 表 格 式 的 长 度 。

语法

DATALENGTH( expression )

变 量 expression 可 以 是 常 数 、 列 名 、 函 数 与 子 查 询 程 序 , 算 术 运 算 符 , 按位 运 算 符 和 串 运 算 符 。

示例

下 面 是 DATALENGTH 系 统 函 数 的 示 例 :

SELECT DATALENGTH(Column1)

FROM MyTable G O

本 例 中 , 返 回 的 整 数 代 表 Column1 的 长 度 ( 以 字 节 为 单 位 ),将 DATALENGTH 用 于 可 变 字 符 、 可 变 二 进 制 数 、 文 本 、 图 像 、 nvarchar 和 ntext 数 据 类 型 , 可以 查 看 它 们 的 长 度 。 如 果 该 列 为 空 , 则 返 回 NULL 。 数 字 数 据 类 型 的 存 储 在 本 版本 中 有 所 不 同 , DATALENGTH 对 数 值 表 达 式 返 回 5 , 9 , 13 或 17 。

DATEADD

DATEADD 返 回 根 据 日 期 时 间 添 加 的 日 期 , 其 单 位 可 以 是 在 日 期 单 位 列 表 中 列出 的 任 一 单 位 。

语法

DATEADD(datepart, number, date)

日 期 函 数

下 表 适 用 于 提 取 datepart 参 数 的 所 有 日 期 函 数 。

Date part( 日 期 单 位 )

Abbreviation( 缩 写 )

Values( 值 )

Year

Yy

1753-9999

Quarter

Qq

1-4

Month

Mm

1-12

Day-of-year

Dy

1-366

Day

dd1

-31

Week

Wk

1-53

Weekday

Dw

1-7(Sun.-Sat.)

Hour

Hh

0-23

Minute

Mi

0-59

Second

Ss

0-59

Millisecond

Ms

0-999

变量

datepart datepart 是 用 于 计 算 的 日 期 单 位 。 参 阅 日 期 函 数 下面 的 表 格 。

number number 是 指 添 加 至 日 期 变 量 中 的 日 期 单 位 数 。

date date 是 GETDATE 函 数 、 格 式 化 为 日 期 的 字 符 串 、 或日 期 时 间 型 的 列 名 、 变 量 或 参 数 。

示例

下 面 是 DATEADD 函 数 的 示 例 :

SELECT DATEADD (day,7,DateColumn1) FROM MyTable

G O

本 例 中 , 将 7 天 添 加 至 DateColumn1 的 值 中 。

DATEDIFF

DATEDIFF 返 回 两 个 指 定 日 期 的 日 期 单 位 的 差 别 。

语法

DATEDIFF (datepart, date,date)

变量

datepart datepart 是 用 于 计 算 的 日 期 单 位 , 参 阅 日 期 函 数下 面 的 表 格 。

date date 是 GETDATE 函 数 ; 格 式 化 为 日 期 的 字 符 串 、或 日 期 时 间 型 的 列 名 、 变 量 或 参 数 。

示例

下 面 为 DATEDIFF 函 数 的 示 例 :

SELECT DATEDIFF(day,DateColumn1,getdate())

FROM Mytable

本 例 中 , 返 回 值 为 DateColumn1 中 的 值 和 当 前 日 期 相 差 的 天 数 。

DATENAME

DATENAME 返 回 日 期 单 位 的 名 称 。

语法

DATENAME( datepart, date )

变量

datepart datepart 是 指 用 于 计 算 的 日 期 单 位 , 参 阅 日 期 函 数下 面 的 表 格 。

Date date 日 期 指 GETDATE 函 数 , 格 式 化 为 日 期 的 字 符串 、 或 日 期 时 间 型 的 列 名 。

示例

下 面 是 DATENAME 函 数 的 示 例 :

SELECT DATENAME(dw,getdate())

本 例 中 , 如 果 今 天 是 星 期 一 , 就 返 回 单 词 “ Monday ” 的 字 符 数 据 。

DATEPART

DATEPART 返 回 的 整 数 表 示 日 期 中 的 日 期 单 位 。

语法

DATEPART( datepart,date )

变量

datepart datepart 是 指 用 于 计 算 的 日 期 单 位 , 参 阅 日 期 函 数下 面 的 表 格 。

date date 日 期 指 GETDATE 函 数 , 格 式 化 为 日 期 的 字 符串 、 或 日 期 时 间 型 的 列 名 。

示例

下 面 是 DATEPART 函 数 的 示 例 :

SELECT DATEPART(month getdate()) G O

本 例 中 , 返 回 值 为 一 年 12 个 月 中 的 月 份 。

DAY

DAY 显 示 所 提 供 的 日 期 的 整 数 , 即 天 数 部 分 。

语法

DAY( date )

变 量 date 是 samlldatetime 或 datetime 数 据 类 型 。

DB_ID

DB_ID 为 系 统 函 数 , 它 返 回 数 据 库 的 标 识 号 。

语法

DB_ID ([ ′ database_nam e′ ] )

变 量 database_name 是 用 户 希 望 得 到 的 数 据 库 标 识 号 的 数 据 库 名 称 , 缺 省值 为 当 前 使 用 的 数 据 库 。

示例

下 面 是 master 数 据 库 中 运 行 的 DB_ID 函 数 的 示 例 :

SELECT DB_1D (′ master′ )

本 例 中 , 返 回 的 1 是 master 系 统 数 据 库 的 数 据 库 标 识 号 。

DB_NAME

传 递 数 据 库 标 识 号 时 , DB_NAME 返 回 数 据 库 名 称 。

语法

DB_NAME ( [ database_id ] )

变 量 database_id 是 要 查 看 的 标 识 号 , 缺 省 值 为 当 前 使 用 的 数 据 库 。

示例:

下 面 是 DB_NAME 系 统 函 数 的 示 例 :

SELECT DB_NAME ( 1 )

本 例 中 , 返 回 数 据 库 标 识 号 为 1 的 数 据 库 。 数 据 库 名 称 是 master 。

DBCC CHECKALLOC

Database Consistency Checker 语 句 DBCC CHECKALLOC 检 查 数 据 库 中 所 有页 的 分 配 使 用 情 况 。

语法

DBCC CHECKALLOC

( ′ database_nam e′

[ , NOINDEX |

{ REPAIR_ALLOW_DATA_LOSS

| REPAIR_FAST

| REPAIR_REBUILD

}

)

[ W ITH {All_ERRORMSGS | NO_INFOMSGS} ]

变量

′ database_name ′ database_name 是 语 句 所 作 用 的 数 据 库 名 称 ,

在 当 前 数 据 库 中 执 行 此 命 令 时 不 需 要

database_name 。

NOINDEX NOINDEX 指 用 户 定 义 的 表 格 的 非 成 簇 索 引 不 包含 在 数 据 库 的 检 查 之 中 。

REPAIR_ALLOW_DATA_LOSS REPAIR_ALLOW_DATA_LOSS 修 理 REPAIR _REBUILD

所 修 复 的 内 容 ; 它 也 修 复 分 配 错 误 和 结 构 行 或页 面 错 误 , 并 删 除 可 能 导 致 丢 失 数 据 的 坏 文 本对 象 。

REPAIR_FAST REPAIR_FAST 进 行 少 量 而 快 速 的 修 复 操 作 , 例如 修 复 少 量 的 索 引 。 它 不 会 丢 失 数 据 。

REPAIR_REBUILD REPAIR_REBUILD 进 行 REPAIR_FAST 的 修 复 工

作 , 更 多 的 时 间 是 在 修 理 索 引 , 它 不 会 丢 失 数据 。

WITH NO_INFOMSGS | ALL_ERRORMSGS

WITH NO_INFOMSGS 指 报 告 不 包 括 信 息 性 消 息 和占 用 的 空 间 , 只 报 告 错 误 信 息 。 WITH ALL_ERRORMSGS 指 显 示 所 有 的 错 误 信 息 。

DBCC CHECKCATALOG

DBCC CHECKCATALOG 检 查 系 统 表 的 完 整 性 。

语法

DBCC CHECKCATALOG [ ( ′ database_nam e′ )]

[ W ITH NO_INFOMSG S]

变量

′ database_name ′ database_name 是 语 句 所 作 用 的 数 据 库 名 称 ,

在 当 前 数 据 库 中 执 行 此 命 令 时 不 需 要database_name 。

WITH NO_INFOMSGS WITH NO_INFOMSGS 表 示 报 告 不 包 括 信 息 性 消

息 和 占 用 的 空 间 , 只 报 告 错 误 信 息 。

DBCC CHECKDB

DBCC CHECKDB 检 查 数 据 库 中 所 有 内 容 的 完 整 性 。 如 果 执 行 了 DBCC CHECKDB , 就 不 需 要 执 行 DBCC CHECKALLOC 或 CHECKTABLE 。

语法

DBCC CHECKDB

(′ database_nam e′

[ ,NOINDEX|

{ REPAIR_ALLOW_DATA_LOSS

| REPAIR_FAST

| REPAIR_REBUILD

}

)

[ W ITH {ALL_ERRORMSG S| NO_INFOMSGS} ]

变量

′ database_name ′ database_name 是 语 句 所 作 用 的 数 据 库 名

称 , 在 当 前 数 据 库 中 执 行 此 命 令 时 不 需 要database_name 。

NOINDEX NOINDEX 指 用 户 定 义 的 表 格 的 非 成 簇 索 引 不包 含 在 数 据 库 的 检 查 之 中 。

REPAIR_ALLOW_DATA_LOSS REPAIR_ALLOW_DATA_LOSS 修 理 REPAIR_RE-

BUILD 所 修 复 的 内 容 ; 它 也 修 复 分 配 错 误 和结 构 行 或 页 面 错 误 , 并 删 除 可 能 导 致 丢 失 数据 的 坏 文 本 对 象 。

REPAIR_FAST REPAIR_FAST 进 行 少 量 而 快 速 的 修 复 操 作 , 例 如 修 复 少 量 的 索 引 。 它 不 会 丢 失 数 据 。

REPAIR_REBUILD REPAIR_REBUILD 进 行 REPAIR_FAST 的 修 复

工 作 , 更 多 的 时 间 是 在 修 理 索 引 , 它 不 会 丢失 数 据 。

WITH NO_INFOMSGS | ALL_ERRORMSGS

WITH NO_INFOMSGS 指 报 告 不 包 括 信 息 性 消息 和 占 用 的 空 间 , 只 报 告 错 误 信 息 。 WITH ALL_ERRORMSGS 指 显 示 所 有 的 错 误 信 息 。

DBCC CHECKFILEGROUP

检 查 文 件 组 中 所 有 表 格 的 分 配 情 况 。

语法

DBCC CHECKFILEGROUP

[ ( [{′ filegroup_nam e′ | filegroup_id }][ ,NOINDEX ] )]

[ W ITH NO_INFOMSG S| ALL_ERRORMSG S ]

变量

′ filegroup_name ′ filegroup_name 指 DBCC 语 句 作 用 的 文 件 组 名

称 。

filegroup_id filegroup_id 是 sysfilegroups 系 统 表 中 的 文件 组 的 ID 。

NOINDEX NOINDEX 指 用 户 定 义 的 非 成 簇 索 引 不 包 括 在 数据 库 的 检 查 之 中 。

WITH NO_INFOMSGS | ALL_ERRORMSGS

WITH NO_INFOMSGS 指 报 告 不 包 括 信 息 性 消 息 和占 用 的 空 间 , 只 报 告 错 误 信 息 。 WITH ALL_ERRORMSGS 显 示 所 有 的 错 误 信 息 。

DBCC CHECKIDENT

DBCC CHECKIDENT 检 查 表 格 的 当 前 等 同 值 , 并 校 正 等 同 值 。

语法

DBCC CHECKIDENT ( ′ table_name ′

[ ,{ NORESEED | { RESEED [ ,

new_reseed_value

]}}])

变量

′ table_name ′ table_name 是指 DBCC 语 句 作 用 的 表 格 名 称 。NORESEED NORESEED 通 知 SQL Server 不 校 正 等 同 值 。

RESEED 如 果 没 有 提 供 new_reseed_value , RESEED 通 知 SQL Server 将 等 同 值 校 正 为 等 同 列 中 的 最 大 值 。

new_reseed_value new_reseed_value 指 等 同 列 中 新 的 起 始 数 值 。

DBCC CHECKTABLE

DBCC CHECKTABLE 检 查 并 有 选 择 地 修 补 表 格 中 所 有 页 面 的 完 整 性 。

语法

DBCC CHECKTABLE

(′ table_name ′

[ ,NOINDEX | index_id )|

{ REPAIR_ALLOW_DATA_LOSS

| REPAIR_FAST

| REPAIR_REBUILD

)

[ W ITH NO _ INFOMSG S ]

变量

  • table_name ′ table_name 指 DBCC 语 句 作 用 的 表 格 名 称 。

NOINDEX NOINDEX 指 用 户 定 义 的 表 格 的 非 成 簇 索 引 不 包含 在 数 据 库 的 检 查 之 中 。

index_id index_id 指 DBCC 语 句 作 用 的 索 引 的 ID 。REPAIR_ALLOW_DATA_LOSS REPAIR_ALLOW_DATA_LOSS 修 理

REPAIR_REBUILD 所 修 复 的 内 容 ; 它 也 修 复 分配 错 误 和 结 构 行 或 页 面 错 误 , 并 删 除 可 能 导 致丢 失 数 据 的 坏 文 本 对 象 。

REPAIR_FAST REPAIR_FAST 进 行 少 量 而 快 速 的 修 复 操 作 , 例如 修 复 少 量 的 索 引 。 它 不 会 丢 失 数 据 。

REPAIR_REBUILD REPAIR_REBUILD 进 行 REPAIR_FAST 的 修 复 工

WITH NO_INFOMSGS | ALL_ERRORMSGS

作 , 更 多 的 时 间 是 在 修 理 索 引 , 它 不 会 丢 失 数据。

WITH NO_INFOMSGS 意 味 着 报 表 不 含 通 知 消 息 , 使 用 空 格 。 只 报 告 错 误 消 息 。 WITH ALL_ERRORMSGS 显 示 所 有 错 误 消 息 。

WITH NO_INFOMSGS WITH NO_INFOMSGS 指 报 告 不 包 括 信 息 性 消 息

和 占 用 的 空 间 , 只 报 告 错 误 信 息 。

DBCC DBREPAIR

DBCC DBREPAIR 只 向 后 兼 容 , 现 在 使 用 DROP DATABASE 。

语法

DBCC DBREPAIR (

database_name

,DROPDB [ ,NOINIT ])

变量

database_name database_name 是 要 删 除 的 数 据 库 名 。DROPDB DROPDB 指 撤 消 数 据 库 。

NOINIT NOINIT 指 不 改 变 数 据 库 的 分 配 页 。

DBCC DBREINDEX

DBCC DBREINDEX 重 建 表 格 的 索 引 , 并 可 在 不 必 撤 消 再 重 建 索 引 的 情 况 下 , 保 存 相 关 的 约 束 , 以 减 少 撤 消 和 重 建 约 束 的 辅 助 操 作 。

语法

DBCC DBREINDEX ( [

[ ,fillfactor]]] )

′ database.owner.table_nam e′ [ ,index_name

[ W ITH NO_INFOMSG S]

变量

  • database.owner.table_name ′ database.owner.table_name 是 重 建 索

的 表 格 的 全 限 定 名 称 。

index_name index_name 是 要 重 建 的 索 引 名 称 , 使 用两 个 单 引 号 可 以 通 知 SQL Server 重 建 表格 上 的 全 部 索 引 , 如 果 需 要 指 定 填 充 因子 , 就 只 需 使 用 两 个 单 引 号 ; 否 则 可 以省 略 最 后 2 个 变 量 。

fillfactor fillfactor 表 示 每 个 索 引 叶 页 面 上 要 存储 数 据 的 空 间 百 分 比 , 只 有 建 立 了 索 引

才 能 使 用 它 。 如 果 为 0 , 则 使 用 初 始 填 充因 子 。

WITH NO_INFOMSGS WITH NO_INFOMSGS 表 示 报 告 不 包 括 信 息性 消 息 和 占 用 的 空 间 , 只 报 告 错 误 信 息 。

DBCC dllname(FREE)

DBCC dllname(FREE) 将 扩 展 存 储 过 程 中 的 动 态 连 接 库 (DLL) 从 内 存 中 提 取 出

来 。

语法

DBCC

dllname

(FREE)

变 量 dllname 是 要 从 内 存 中 删 除 的 dll 名 称 。

DBCC HELP

DBCC HELP 显 示 提 供 的 DBCC 语 句 的 语 法 信 息 。

语法

DBCC HELP (′ dbcc_statemen t′ | @dbcc_statement_var| ′ ? ′ )

变量

dbcc_statement| @dbcc_statement_var

?

DBCC 语 句 为 DBCC 语 句 或 DBCC 后 面 部 分 的 名称 ( 例 如 , CHECKTABLE)

? 显 示 带 帮 助 信 息 的 DBCC 语 句 。

DBCC INPUTBUFFER

DBCC INPUTBUFFER 显 示 从 客 户 机 发 送 至 SQL Server 的 最 后 一 个 Transact-

SQL 语 句 。

语法

DBCC INPUTBUFFER(spid)

变 量 spid 是 用 于 用 户 连 接 的 系 统 进 程 ID 。 ( 通 过 执 行 系 统 存 储 过 程 sp_who 可 以 选 择 spid)

DBCC MEMUSAGE

DBCC MEMUSAGE 显 示 8K 页 中 关 于 内 存 使 用 情 况 的 缓 冲 器 和 程 序 高 速 缓 存 的信 息 。

语法

DBCC MEMUSAGE ( [ ′ BUFFER ′ ] [ ,] [ ′ PROCEDURE ′ ] )

变量

  • BUFFER ′ BUFFER 指 显 示 缓 冲 器 高 速 缓 存 信 息 。

  • PROCEDURE ′ PROCEDURE 指 显 示 程 序 高 速 缓 存 信 息 。

DBCC NEWALLOC

DBCC NEWALLOC 检 查 数 据 库 的 每 个 表 格 中 数 据 与 索 引 页 面 的 分 配 ; 然 而 , 与DBCC CHECKALLOC 相 同 , DBCC NEWALLOC 只 是 为 了 向 后 兼 容 。 可 以 用 DBCC CHECKALLOC 代 替 它 。

语法

DBCC NEWALLOC [ (

′ database_nam e′

[ ,NOINDEX ] )]

[ W ITH NO_INFOMSG S]

变量

′ database_name ′ database_name 是 语 句 所 作 用 的 数 据 库 名 称 ,

在 当 前 数 据 库 中 执 行 此 命 令 时 不 需 要database_name 。

NOINDEX NOINDEX 指 用 户 定 义 的 表 格 的 非 成 簇 索 引 不包 含 在 数 据 库 的 检 查 之 中 。

WITH NO_INFOMSGS WITH NO_INFOMSGS 指 报 告 不 包 括 信 息 性 消 息

和 占 用 的 空 间 , 只 报 告 错 误 信 息 。

DBCC OPENTRAN

DBCC OPENTRAN 显 示 数 据 库 中 最 旧 的 活 动 信 息 以 及 分 布 式 和 非 分 布 式 复 制 事务 处 理 信 息 。 打 开 的 事 务 处 理 可 以 由 spid 标 识 并 可 终 止 。

语法

DBCC OPENTRAN [ (′ database_nam e′ | database_id)]

[ W ITH TABLERESULTS [ ,NO_INFOMSGS ]]

变量

′ database_name ′ database_name 是 DBCC 语 句 作 用 的 数 据 库 名 称 。database_id database_id 是 数 据 库 标 识 号 。

WITH TABLERESULTS WITH TABLERESULTS 将 结 果 以 能 放 进 表 格 的 格 式

存 放 。

WITH NO_INFOMSGS WITH NO_INFOMSGS 指 报 告 不 包 括 信 息 性 消 息 和 占

用 的 空 间 , 只 报 告 错 误 信 息 。

DBCC OUTPUTBUFFER

DBCC OUTPUTBUFFER 显示 spid 中 输 出 缓 冲 区 的 内 容 。

语法

DBCC OUTPUTBUFFER( spid )

变 量 spid 是 用 于 用 户 连 接 的 系 统 过 程 ID 。

DBCC PERFMON

DBCC PERFMON 显 示 三 种 SQL Server 性 能 信 息 , 即 IOSTATS , LRUSTATS 和NETSTATS 。

语法

DBCC PERFMON

DBCC PINTABLE

DBCC PINTABLE 为 表 格 定 位 ,即 表 格 页 面 在 内 存 中 保 存 和 修 改 ,当 SQL Server 需 要 空 间 读 取 新 页 面 上 的 数 据 时 , 不 刷 新 表 格 。 对 于 常 用 的 小 表 格 , 最 好 限 制使 用 DBCC PINTABLE 。

语法

DBCC PINTABLE(database_id,table_id)

变量

database_id database_id 是 定 位 表 格 的 数 据 库 标 识 号 。

table_id table_id 是 要 定 位 的 表 格 的 标 识 符 。

DBCC PROCCACHE

DBCC PROCCACHE 可 由 Microsoft SQL Server Performance Monitor 用 来 监控 程 序 高 速 缓 存 。

语法

DBCC PROCCACHE

DBCC ROWLOCK

在 Microsoft SQL Server 6.5 中, DBCC ROWLOCK 激 活 表 格 中 的 Insert Row Locking(IRL) , 并 且 支 持 它 只 为 向 后 兼 容 。 在 版 本 7.0 中 , 使 用 DBCC ROWLOCK 不 进 行 任 何 操 作 。 Microsoft SQL Server 7.0 有 动 态 行 级 锁 定 。

DBCC SHOWCONTIG

DBCC SHOWCONTIG 显 示 表 格 中 数 据 和 索 引 的 存 储 碎 片 , 不 使 用 SORTED_DATA 选 项 就 撤 消 并 重 建 成 簇 索 引 可 以 减 少 存 储 碎 片 。

语法

DBCC SHOWCONTIG( table_id [ ,index_id ] )

变量

table_id table_id 指 DBCC 语 句 作 用 的 表 格 的 OBJECT_ID , 如 果

没 有 提 供 table_id , DBCC 语 句 将 作 用 于 所 有 的 表 格 。index_id index_id 是 DBCC 语 句 作 用 的 索 引 indid , 如 果 不 提 供

index_id , DBCC 语 句 将 作 用 于 表 格 中 所 有 的 索 引 。

DBCC SHOW_STATISTICS

DBCC SHOW_STATISTICS 显 示 表 格 中 索 引 或 列 的 分 布 式 页 面 统 计 信 息 。 分 布密 度 越 高 , 选 择 性 就 越 低 ( 因 而 索 引 的 作 用 就 越 小 ) 。 如 果 想 知 道 统 计 信 息 最 后一 次 更 新 的 时 间 , 可 使 用 系 统 函 数 STATS_DATE 。

语法

DBCC SHOW_STATISTICS( table,target )

变量

table table 是 要 查 看 统 计 信 息 的 表 格 名 称 。

target target 是 索 引 名 称 或 列 名 称 。

DBCC SHRINKDATABASE

DBCC SHRINKDATABASE 压 缩 数 据 库 中 的 数 据 文 件 。

语法

DBCC SHRINKDATABASE

( database_nam e[ ,target_percen t]

[ ,{ NOTRUNCATE | TRUNCATEONLY }]

)

变量

database_name database_name 指 要 压 缩 的 数 据 库 名 称 。target_percent target_percent 指 压 缩 后 要 保 留 在 数 据 库 文 件 中

的 自 由 空 间 的 百 分 比 。

NOTRUNCATE NOTRUNCATE 表 示 自 由 文 件 空 间 应 保 留 在 数 据 文 件中 , 缺 省 是 将 空 间 释 放 到 操 作 系 统 中 。TRUNCATEONLYTRUNCATEONLY 指 将 数 据 文 件 中 没 有

使 用 的 空 间 释 放 到 操 作 系 统 中 。 不 必 将 行 移 到 未分 配 的 页 中 , 并 忽 略 Target_percent 。

DBCC SHRINKFILE

DBCC SHRINKFILE 压 缩 数 据 库 的 数 据 文 件 。

语法

DBCC SHRINKFILE

({ file_name | file_id }[ ,target_size ]

[ ,{ EMPTYFILE | NOTRUNCATE | TRUNCATEONLY }]

)

变量

file_name file_name 是 要 压 缩 的 数 据 库 文 件 的 逻 辑 名 称 。

file_id file_id 是 指 sysfiles 系 统 表 中 要 压 缩 的 数 据 库 文件 的 FILE_ID 。

target_size target_size 是 指 压 缩 后 数 据 文 件 的 大 小 , 以 兆 字

节 为 单 位 。 如 果 不 给 出 target_size , 将 尽 量 压 缩文 件 。

EMPTYFILE EMPTYFILE 将 数 据 从 一 个 文 件 移 至 同 一 文 件 组 中 的另 一 个 文 件 中 , 然 后 , 就 可 用 ALTER DATABASE 语句 将 文 件 删 除 。

NOTRUNCATE NOTRUNCATE 表 示 自 由 的 文 件 空 间 应 保 留 在 数 据 库 文

件 中 , 缺 省 是 将 空 间 释 放 到 操 作 系 统 中 。TRUNCATEONTY TRUNCATEONTY 指 将 数 据 库 文 件 中 未 使 用 的 空 间 都 释

放 到 操 作 系 统 中 。 不 将 行 移 至 未 分 配 的 页 面 上 , 并忽 略 target_size 。

DBCC TEXTALL

DBCC TEXTALL 在 带 有 文 本 、 ntext 或 图 像 列 的 表 格 中 执 行 TEXTALLOC 。Microsoft Server 7.0 包 括 此 函 数 , 只 是 为 了 向 后 兼 容 。 可 以 用 DBCC CHECKDB

代 替 DBCC TEXTALL 。

语法

DBCC TEXTALL ([

′ FAST ′ ]

)

DBCC SQLPERF

′ database_nam e′| database_id

] [ ,′ Full′ |

DBCC SQLPERF 显 示 所 有 数 据 库 中 使 用 事 务 处 理 记 录 空 间 的 统 计 信 息 。

语法

DBCC SQLPERF(LOGSPACE)

DBCC TEXTALL

DBCC TEXTALL 在 数 据 库 中 带 有 文 本 、 ntext 或 图 像 列 的 表 格 中 运 行 DBCC TEXTALLOC 。 此 函 数 包 含 在 Microsoft Server 7.0 中 , 只 是 为 了 向 后 兼 容 。 可以 用 DBCC CHECKTABLE 代 替 DBCC TEXTALL 。

语法

DBCC TEXTALL

DBCC TEXTALLOC

DBCC TEXTALLOC 检 查 有 文 本 、 next 或 图 像 列 的 表 。 在 Microsoft SQL Server

  1. 中 包 含 它 是 为 了 向 后 兼 容 。 利 用 DBCC CHECKTABLE 代 替 它

语法

DBCC TEXTALLOC ({ FAST ′] )

DBCC TRACEOFF

table_name |

table_id

}[ ,′ FULL ′ | ′

DBCC TRACEOFF 从 作 用 的 SQL Server 中 删 去 跟 踪 标 记 。

语法

DBCC TRACEOFF ( trace# [ , trace# ] )

变量

trace# trace# 是 追 踪 标 志 号 。

DBCC TRACEON

DBCC TRACEON 可 打 开 作 用 于 SQL Server 的 跟 踪 标 记 。

语法

DBCC TRACEON ( trace# [ , trace# ] )

变量

trace# trace# 是 追 踪 标 志 号 。

DBCC TRACESTATUS

DBCC TRACESTATUS 显 示 跟 踪 标 记 的 状 态 。 如 果 打 开 跟 踪 标 记 , SQL Server 就 返 回 1 , 关 闭 追 踪 标 记 , 就 返 回 0 。 使 用 值 为 -1 的 trace# 查 看 参 阅 作 用 于 服务 器 的 所 有 跟 踪 标 记 。

语法

DBCC TRACESTATUS ( trace# [ , trace# ] )

变量

trace#

trace# 是 追 踪 标 志 号 。

DBCC UNPINTABLE

DBCC UNPINTABLE 可 从 缓 冲 区 高 速 缓 存 中 取 消 表 格 页 。

语法

DBCC UNPINTABLE ( database_id , table_id )

变量

database_id database_id 是 包 含 要 取 消 的 表 格 的 数 据 库 标 识 号 。table_id table_id 是 要 取 消 的 表 格 的 OBJECT_ID 。

DBCC UPDATEUSAGE

DBCC UPDATEUSAGE 修 改 sysindexes 系 统 表 并 删 除 任 何 可 能 导 致 在sp_spaceused 系 统 存 储 程 序 中 出 现 不 准 确 报 表 的 旧 统 计 资 料 。

语法

DBCC UPDATEUSAGE ({

[ ,index_id ]] )

′ database_nam e′

| 0 }[ ,

′ table_nam e′

[ W ITH [ NO_INFOMSGS ] [[ ,] COUNT_ROW S ]

变量

  • database_name ′ |0 database_name 是 DBCC 语 句 作 用 的 数 据 库

    , 如

果 此 变 量 为 0 , DBCC 语 句 就 作 用 于 当 前 数 据 库 。

  • table_name ′ table_name 是 DBCC 语 句 作 用 的 表 格 。

index_id index_id 是 DBCC 语 句 作 用 的 索 引 indid , 缺 省为 表 格 中 的 所 有 索 引 。

WITH NO_INFOMSGS WITH NO_INFOMSGS 指 报 表 不 包 括 信 息 性 消 息 和

占 用 的 空 间 , 只 报 告 错 误 信 息 。

WITH COUNT_ROWS WITH COUNT_ROWS 用 表 格 中 的 当 前 行 数 更 新

sysindexes 系 统 表 中 的 行 列 , 如 果 表 格 较 大 , 需 要 的 时 间 将 较 长 。

示例

下 面 是 DBCC UPDATEUSAGE 语 句 的 示 例 。

DBCC UPDATEUSAGE(0)

G O

本 例 中 , 对 当 前 数 据 库 中 所 有 表 格 与 所 有 索 引 , sysindexes 表 都 进 行 了 更

新 。

DBCC USEROPTIONS

DBCC USEROPTIONS 显 示 用 于 当 前 连 接 的 活 动 SET 选 项 。

语法

DBCC USEROPTIONS

DEALLOCATE

DEALLOCATE 是 一 个 语 句 , 用 于 通 过 名 称 或 变 量 名 删 除 对 游 标 的 引 用 。 删 除最 后 一 次 对 游 标 的 引 用 后 , 数 据 结 构 和 锁 定 就 恢 复 自 由 。

语法

DEALLOCATE {{[ GLOBA L ] cursor_nam e} | cursor_variable_nam e}

变量

cursor_name 已 声 明 了 cursor_name , 它 是 一 个 局 部 变 量 , 除 非 指 定 为 GLOBAL , 或 者 不 存 在 使 用 该 名 称 的局 部 游 标 。

cursor_variable_name cursor_variable_name 是 游 标 变 量 名 。

十 进 制 数 据 类 型

十 进 制 数 据 类 型 是 精 确 数 值 , 精 确 到 数 的 最 小 单 位 , 另 一 种 精 确 数 值 数 据类 型 为 数 值 。 两 者 的 值 域 都 是 从 10 38 -1 到 -10 38 -1 。

decimal[ (

p [ ,s ]

)] and numeric [ (

p [ ,s] )]

变量

precision precision ( p ) 指 小 数 点 两 边 存 储 的 小 数 位 数 的最 大 值 。

scale scale 指 小 数 点 右 边 小 数 位 数 的 最 大 值 , 其 值 为从 0 到 任 意 精 度 变 量 的 值 。

DECLARE @ local_variable

变 量 可 用 DECLARE 语 句 在 批 注 、存 储 过 程 或 触 发 器 中 声 明 。可 用 SET 或 SELECT 语 句 给 变 量 赋 值 , 所 有 声 明 的 局 部 变 量 都 初 始 化 为 NULL 。

语法

DECLARE

{ @ local_variable data_type }

| { cursor_variable_name CURSO R}

}[ , ...n ]

变量

@local_variable @ 符 号 放 在 局 部 变 量 名 的 开 头 是 SQL Server 识 别

局 部 变 量 的 方 式 。 Transact SQL 语 句 中 的 变 量 不能 用 作 数 据 库 对 象 , 只 能 用 作 常 量 。 如 果 不 存 在使 用 该 名 称 的 局 部 变 量 , 在 程 序 、 触 发 器 或 批 注中 变 量 就 是 局 部 变 量 。

data_type data_type 是 系 统 或 用 户 定 义 的 数 据 类 型 , 但 不 是图 像 、 文 字 或 ntext 数 据 类 型 。

cursor_variable_name cursor_variable_name 是 游 标 变 量 的 名 称 , 其 规

范 与 局 部 变 量 相 同 , 但 不 以 @ 开 始 。

CURSOR CURSOR 表 示 变 量 为 局 部 游 标 变 量 。

N N 指 前 面 的 句 法 可 以 重 复 。

SET|SELECT SET|SELECT 将 表 达 式 中 的 值 赋 给 变 量 。

Expression 表 达 式 可 以 是 列 名 、 常 量 、 函 数 、 变 量 、 子 查 询程 序 , 多 个 常 量 和 函 数 , 算 术 运 算 符 、 按 位 运 算符 和 字 符 串 运 算 符 。

DECLARE CURSOR

DECLARE CURSOR 声 明 Transaet-SQL 游 标 的 属 性 。

语法

DECLARE

cursor_name

[ INSENSITIV E] [ SCROLL ] CURSOR

FOR select_statement

[ FOR {READ ONLY | UPDATE [ OF

column_list

] } ]

DECLARE

cursor_name

CURSOR

[ LOCAL | GLOBAL ]

[ FORWARD_ONLY | SCROLL ]

[ STATIC |KEYSET | DYNAMIC ]

[ READ_ONLY | SCROLL_LOCKS | OPTIMISTIC ]

FOR select_statement

[ FOR { READ ON LY | UPDATE [ OF column_list ] } ]

变量

cursor_name 用 标 识 符 规 则 声 明 的 游 标 名 称 。

INSENSITIVE INSENSITIVE 声 明 一 游 标 , 该 游 标 复 制 数 据 , 当 提

取 语 句 从 游 标 中 读 取 行 时 , 不 显 示 对 基 行 的 修 改 。游 标 不 能 更 新 。

SCROLL SCROLL 表 示 可 以 用 第 一 个 、 最 后 一 个 、 上 一 个 、 下一 个 、 相 关 和 绝 对 提 取 命 令 滚 动 游 标 。

select_statement select_statement 是 个 SELECT 语 句 , 它 决 定 游 标

的 结 果 集 。 不 允 许 使 用 COMPUTE , COMPUTE BY , FOR BROWSE 和 INTO 。

READ_ONLY READ_ONLY 指 不 允 许 更 新 的 只 读 游 标 。

UPDATE

[ OFcolumn_list ]

UPDATE [ OFcolumn_list ] 决 定 游 标 可 更 新 的 列 , 如 果 没 有 清 单 , 所 有 的 列 都 可 以 更 新 。

LOCAL LOCAL 表 示 游 标 的 作 用 域 对 于 它 在 其 中 声 明 的 批注 、 存 储 过 程 或 触 发 器 而 言 是 局 部 的 。

GLOBAL GLOBAL 表 示 游 标 的 作 用 域 对 于 连 接 是 全 局 的 。FORWARD ONLY FORWARD ONLY 指 游 标 能 向 前 滚 , 从 第 一 行 滚 动 到 最

后 一 行 。

STATIC STATIC 声 明 一 游 标 , 该 游 标 复 制 数 据 , 当 提 取 语 句从 游 标 中 读 取 行 时 , 不 显 示 对 基 行 的 修 改 。 游 标 不能 更 新 。

KEYSET KEYSET 指 打 开 游 标 时 , 设 置 行 的 成 员 和 顺 序 。 当 拥有 者 滚 动 游 标 时 , 可 以 看 到 表 格 的 变 化 。 看 不 到 其他 用 户 进 行 的 插 入 ; 可 是 , 如 果 删 去 一 行 , 全 局 变量 @@fetch_status 为 - 2 。 更 新 就 相 当 于 删 除 和 插入 。

DYNAMIC 当 滚 动 游 标 时 , DYNAMIC 游 标 可 以 了 解 其 结 果 集 中对 行 所 作 的 所 有 数 据 改 动 。 每 次 读 取 时 不 使 用 绝 对和 相 对 的 读 取 选 项 , 也 可 以 修 改 行 。

SCROLL_LOCKS SCROLL_LOCKS 指 通 过 游 标 进 行 的 更 新 和 删 除 肯 定 成功 。 SQL Server 锁 定 行 。

OPTIMISTIC OPTIMISTIC 表 示 如 果 行 读 入 游 标 后 进 行 过 更 新 , 通

过 游 标 进 行 的 修 改 就 不 会 成 功 。

DEGREES

DEGREES 为 所 提 供 的 角 度 的 弧 度 值 给 出 了 一 个 数 值 表 达 式 ( 以 度 数 表 示 )。

语法

DEGREES(numeric_expression)

变 量 numeric_expression 是 一 表 达 式 , 它 可 以 使 用 小 数 、 浮 点 数 、 整 型 数 、微 短 整 数 、 货 币 、 数 值 、 实 数 、 短 整 型 数 或 小 货 币 数 据 类 型 。

DELETE

DELETE 语 句 从 表 格 中 删 去 行 。

语法

DELETE [ FROM {

[ <from_clause>:: = FROM

{<table_or_view.

| ( select_statement

table_name | view_name }

) [ A S ] alias

| <table_or_view> CROSS JOIN <table_or_view>

| <table_or_view>

[ {INNER | {LEFT | RIGHT | FULL} [ OUTER ] } ]

[ <join_hint> ] JOIN

<table_or_view> ON search_conditions

} [ ,...n ]

[ WHERE { search_conditions }|

{CURRENT OF { { [ GLOBAL ]

}} ]

[ OPTION (<query_hint> [ ,...n ] )]

<table_or_view>::=

cursor_name} | cursor_variable_name

e ′ ; ′ user_id ′ ; ′

password ′ |

′ provider_string ′ },{ [ catalog.][ schema .] object_name | ′ query′ })

| OpenQuery( linked_server, ′ query ′ )}

<table_hint>::=

([ INDEX = { index_name | index_id}[ ,...n ] ] [ FASTFIRSTROW ]

[ HOLDLOCK [ NOLOCK ] [ PAGLOCK ] [ READCOMMITTED ]

[ READPAST ] [ READUNCOMMITTED ] [ REPEATABLEREAD ]

[ ROWLOCK ] [ SERIALIZABLE ] [ TABLOCK ] [ TABLOCKX ]

[ UPDLOCK ] )

<join_hint>::=

{LOOP | HASH | MERGE}

<query_hint>::=

{{HASH | ORDER} GROUP

| { MERGE | HASH | CONCAT} UNION

| FAST n

| FORCE ORDER

| ROBUST PLAN

}

变量

FROM FROM 指 从 中 删 去 行 的 表 格 或 视 图 。table_name|view_name table_name|view_name 是 从 中 删 去 行 的 表 格 或

视 图

Alias Alias 是 表 格 或 视 图 的 别 名 。

CROSS JOIN CROSS JOIN 是 两 表 格 的 交 叉 积 。

<join_lint> <join_lint> 通 知 查 询 优 化 程 序 在 查 询 的 FROM 子 句 中 , 每 个 连 接 都 要 使 用 一 个 join_hint 。

LOOP | HASH | MERGE LOOP | HASH | MERGE 决 定 查 询 中 的 连 接 使 用 循

环 、 散 列 或 合 并 。

JOIN JOIN 表 明 在 DELETE 操 作 中 使 用 了 SQL-92 联接 。

ON search_conditions ON search_conditions 是 连 接 的 条 件 。N N 指 前 面 的 项 可 以 重 复 。

WHERE WHERE 决 定 筛 选 出 要 删 去 的 行 的 条 件 。Search_conditions Search_conditions 是 要 删 去 的 行 的 约 束 条

件 。

CURRENT OF CURRENT OF 指 从 游 标 的 当 前 位 置 上 DELETE 。

GLOBAL GLOBAL 表 示 游 标 是 全 局 游 标 。

cursor_name cursor_name 是 要 提 取 的 打 开 的 游 标 名 称 。cursor_variable_name cursor_variable_name 是 游 标 变 量 的 名 称 。OpenRowset OpenRowset 有 要 访 问 数 据 源 中 的 远 程 数 据 的 所

有 联 接 信 息 。

OpenQuery OpenQuery 执 行 通 过 查 询 。

<table_hint> <table_hint> 是 表 格 扫 描 , 由 优 化 程 序 或 锁 定方 式 采 用 的 索 引 。

INDEX=index_name | index_id OPTION(<query_hint>,

[ , n ] )

要 使 用 的 INDEX 名 称 。

OPTION 表 示 伴 随 优 化 程 序 提 示 。

{ HASH | ORDER } GROUP { HASH | ORDER } GROUP 指 查 询 中 GROUP BY 或

COMPUTE 子 句 指 定 的 集 合 要 使 用 散 列 或 排 序 。

{ MERGE | HASH | CONCAT } UNION

{ MERGE | HASH | CONCAT } UNION 指 UNION 操 作

需 通 过 合 并 、 散 聚 或 联 接 UNION 集 来 执 行 。

FAST FAST 指 查 询 程 序 可 以 快 速 检 索 前 n 行 , 并 返 回整 个 结 果 集 。

N N 指 要 检 索 的 行 号 。

FORCE ORDER FORCE ORDER 指 查 询 优 化 期 间 查 询 语 法 的 联 结顺 序 相 同 。

ROBUST PLAN ROBUST PLAN 表 示 查 询 计 划 争 取 行 的 最 大 可 能容 量 。

DENY

DENY 是 一 个 语 句 , 它 不 仅 用 于 否 定 安 全 帐 户 的 许 可 , 还 阻 止 从 其 他 组 或 角色 成 员 中 继 承 许 可 。在 冲 突 的 情 况 下 ,最 严 格 的 许 可 应 用 该 语 句 ,也 可 和 public 角 色 和 guest 用 户 一 起 使 用 DENY 。从 安 全 帐 户 中 删 除 否 定 许 可 ,必 须 使 用 REVOKE 语 句 。

语法

DENY { ALL | statement [ , n ]} TO security_accoun t[ , n ]

变量

ALL ALL 指 否 定 所 有 的 许 可 。

statement statement 指 许 可 被 否 定 的 语 句 , DENY 可 以 否

定 用 户 的 下 列 语 句 : CREATE DATABASE , CREATE DEFAULT , CREATE PROCEDURE , CREATE RULE , CREATE TABLE , CREATE VIEW, BACKUP DATABASE , BACKUP TRANSACTION 和 BACKUP TABLE 。

TO TO 指 下 个 词 为 安 全 帐 户 。

security_account 安 全 帐 户 可 以 是 SQL Server 用 户 、 SQL Server

角 色 、 Windows NT 用 户 或 Windows NT 组 。

PRIVILEGES 与 SQL-92 兼 容 的 可 选 关 键 词 。

permission permission 指 表 格 或 视 图 的 否 定 语 句 许 可 。 许可 列 表 如 下 :SELECT ,INSERT ,DELETE 和 UPDATE ,

还 有 表 格 的 REFERENCES 。 用 于 列 的 许 可 列 表 有 : SELECT 和 UPDATE , 用 于 存 储 过 程 的 许 可 是EXECUTE 。

n n 指 前 面 的 项 可 以 重 复 。

column column 指 许 可 被 否 定 的 列 名 。

Table Table 指 许 可 被 否 定 的 表 格 。

view view 指 许 可 被 否 定 的 视 图 。

procedure procedure 指 许 可 被 否 定 的 存 储 过 程 。extended_procedure extended_procedure 指 许 可 被 否 定 的 扩 展 存 储

过 程 名 称 。

CASCADE CASCADE 表 示 否 定 安 全 帐 户 的 许 可 , 以 及 由 该 安全 帐 户 授 予 的 其 他 安 全 帐 户 的 许 可 。 如 果 不 使

用 CASCADE , 但 授 予 用 户 WITH GRANT OPTION 许可 , 就 可 能 发 生 错 误 。

示例

下 面 是 DENY 语 句 的 示 例 :

DENY INSERT , UPDATE , DELETE

ON MyTable 。

TO SecAcct1,SecAcct2, SecAccts 。

本 例 中 , 否 定 MyTable 中 安 全 帐 户 的 许 可 。

DIFFERENCE

DIFFERENCE 通 过 SOUNDEX 函 数 显 示 两 个 字 符 表 达 式 间 的 差 别 。

语法

D IFFERENCE(character_expression, character_expression)

变量

character_expression 字 符 表 达 式 可 以 是 字 符 或 可 变 字 符 数 据 类 型 ,

也 可 以 常 量 、 变 量 或 列 。

示例

下 面 是 DIFFERENCE 函 数 的 示 例 :

D IFFERENCE ( ′ marry′ ,′ mary ′ )

本 例 中 , 差 别 不 可 能 是 4 , 而 可 能 是 0 。

DROP DATABASE

DROP DATABASE 实 际 删 去 数 据 库 。

语法

DROP DATABASE database_name[ , n ]

变量

database_name database_name 指 要 删 除 的 数 据 库 。

n n 指 前 面 的 项 可 以 重 复 。

示例

下 面 是 DROP DATABASE 语 句 的 示 例 。

DROP DATABASE pubs,mydb

在 本 例 中 , pubs 和 mydb 数 据 库 被 删 除 。

DROP DEFAULT

DROP DEFAULT 是 一 个 语 句 , 它 删 除 用 户 建 立 的 DEFAULT 对 象 , 但 不 删 除DEFAULY CONSTRAINT 。 要 删 除 DEFAULT CONSTRAINT , 必 须 使 用 ALTER TABLE 。

语法

DROP DEFAULT default[ , n ]

变量

default default 指 要 删 除 的 缺 省 值 。

n n 指 前 面 的 项 可 以 重 复 。

示例

下 面 是 DROP DEFAULT 语 句 的 示 例 :

DROP DEFAULT usrdefdflt

本 例 中 , 删 去 了 用 户 定 义 的 缺 省 值 。

DROP INDEX

DROP INDEX 是 一 个 语 句 , 它 删 除 INDEX , 但 不 删 除 PRIMARY KEY 或 UNIQUE 约 束 建 立 的 索 引 。

语法

DROP INDEX{ ′ table.index′ } [ , n ]

变量

table table 指 索 引 列 的 位 置 。

index index 指 要 删 除 的 索 引 。

n n 指 前 面 的 项 可 以 重 复 。

示例

下 面 是 DROP INDEX 语 句 的 示 例 。

DROP INDEX ′ M yTable.idx1 ′

本 例 中 , 删 除 MyTable 中 的 索 引 idx1 。

DROP PROCEDURE

DROP PROCEDURE 是 一 个 语 句 , 它 删 除 数 据 库 中 的 存 储 过 程 或 存 储 过 程 组 。

语法

DROP PROCEDURE procedure [ , ...n ]

变量

procedure procedure 是 要 删 除 的 存 储 过 程 。

n n 指 前 面 的 项 可 以 重 复 。

示例

下 面 是 DROP PROCEDURE 语 句 的 示 例 :

DROP PROCEDURE MyProcedure

本 例 中 , 删 去 了 一 个 存 储 过 程 。

DROP RULE

DROP RULE 是 一 个 语 句 , 它 删 去 作 为 数 据 库 对 象 的 用 户 定 义 的 规 则 。

语法

DROP RULE

变量

rule [ , n ]

rule rule 是 要 删 去 的 用 户 定 义 的 规 则 名 。

n n 指 前 面 的 项 可 以 重 复 。

示例

下 面 是 DROP RULE 语 句 的 示 例 。

DROP RULE MyRule

本 例 中 , 删 除 了 一 个 规 则 。

DROP STATISTICS

DROP STATISTICS 可 删 去 列 的 统 计 数 字 。

语法

DROP STATISTICS table.colum n[ ,...n]

变量

table table 指 表 格 的 名 称 。

column column 指 列 名 。

n n 指 前 面 的 项 可 以 重 复 。

DROP TABLE

DROP TABLE 删 去 表 格 及 其 索 引 、 触 发 器 、 约 束 和 许 可 , 但 使 用 该 表 格 的 视图 必 须 用 DROP VIEW 来 删 除 。

语法

DROP TABLE table_name

变 量 table_name 指 要 删 去 的 表 格 。

DROP TRIGGER

DROP TRIGGER 可 删 除 作 为 数 据 库 对 象 的 触 发 器 。

语法

DROP TRIGGER trigger_nam e[ , n ]

变 量 trigger_name 指 从 数 据 库 中 删 去 的 触 发 器 的 名 称 。

DROP VIEW

DROP VIEW 删 去 视 图 , 因 为 当 删 除 表 格 时 , 视 图 不 会 自 动 撤 消 , 所 以 才 使 用DROP VIEW 。

语法

DROP VIEW view_name [ , n ]

变 量 view_name 是 要 作 为 数 据 库 对 象 删 去 的 视 图 。

D U M P

DUMP 只 是 为 了 向 后 兼 容 , 可 以 用 BACKUP 来 代 替 DUMP 。

ELSE(IF ⋯ ELSE)

ELSE(IF ELSE) 是 条 件 语 句 集 。 如 果 条 件 返 回 真 , 则 执 行 语 句 ; 如 果 IF 条件 为 假 , 则 执 行 ELSE 语 句 。

语法

IF Boolean_expression

{sql_statement | statement_block}

[ ELSE

{sql_statement | statement_block}]

变量

Boolean_expression Boolean_expression 返 回 真 或 假 。

{ sql_statement | statement_block }

Transact-SQL 语 句 或 语 句 。

示例

下 面 是 IF(IF ELSE) 条 件 语 句 集 的 示 例 :

IF (SELECT count(Columnl) FROM MyTable

WHERE Columnl = l ) > 0

BEGIN

SELECT Column2 FROM M yTable END

ELSE BEGIN

SELECT Column3

FROM M yTable END

本 例 中 , 如 果 在 MyTable 中 进 行 的 查 询 选 出 的 行 数 大 于 0 , 就 选 择 Cloumn2 ; 否 则 , 选 择 Column3 。

END ( BEGIN...END)

BEGIN END 将 一 系 列 Transact-SQL 语 句 括 起 来 , 像 在 IF ELSE 逻 辑 中 一

样 , 使 这 些 语 句 作 为 程 序 块 来 执 行 。

语法

BEGIN

{sql_statemen t| statement_block} END

变 量 sql_statement 或 statement_block 是 Transact-SQL 语 句 或 一 组 语 句 。

示例

下 面 是 BEGIN END 语 句 的 示 例 :

IF (SELECT count(Column1) FROM MyTable

WHERE Column1 = 1) > 0 BEGIN

SELECT Column2 FROM MyTable2 END

ELSE BEGIN

SELECT Column3 FROM MyTable

END

本 例 中 , 如 果 在 MyTable 中 进 行 的 查 询 选 出 的 行 数 大 于 0 , 就 选 择 Cloum2 ; 否 则 , 选 择 Column3 。

EXECUTE

EXECUTE 执 行 存 储 过 程 或 扩 展 存 储 过 程 , 也 可 以 执 行 Transact-SQL 批 处 理中 的 字 符 串 。

语法

[[ EXEC [ UTE ]]

{

[ @ return_status = ]

{ procedure_name [ ;number] | @procedure_name_var

}

[[ @parameter= ] {value | @variable n ]

[ W ITH RECOMPILE ]

[ OUTPUT ] | [ DEFAULT ]] [ ,...

执 行 字 符 串 的 语 法

EXEC [ UTE ] ({ @ string_variable | ′ tsql_string ′ | expression} [ + ...n ] )

变量

@return_status @return_status 可 保 存 存 储 过 程 的 返 回 状 态 , 而

且 必 须 声 明 该 变 量 。

procedure_name procedure_name 指 要 执 行 的 存 储 过 程 。

number number 将 存 储 过 程 组 合 在 一 起 , 以 便 于 一 次 删 除它 们 。

@procedure_name_var @procedure_name_var 是 保 存 存 储 过 程 名 称 的 本 地

变 量 。

@parameter @parameter 指 存 储 过 程 的 参 数 。

Value Value 是 放 在 参 数 变 量 中 的 值 。

@variable @variable 是 保 存 参 数 的 局 部 变 量 。

OUTPUT OUTPUT 指 存 储 过 程 将 返 回 参 数 。

DEFAULT DEFAULT 指 参 数 的 缺 省 值 。

n N 表 示 前 面 的 项 可 以 重 复 。

WITH RECOMPILE WITH RECOMPILE 使 查 询 处 理 器 为 存 储 过 程 开 发 新

查 询 计 划 。

@string_variable @string_variable 是 本 地 串 变 量 的 名 称 , 它 保 存

联 接 在 一 起 的 Transact-SQL 语 句 。

′ tsql_string ′ ′ tsql_string ′ 是 括 在 引 号 中 的 Transact-SQL

语 句 或 几 个 语 句 串 。

Expression 表 达 式 可 以 是 常 量 、 列 名 、 函 数 、 子 查 询 程 序 或

算 术 运 算 符 、 按 位 运 算 符 和 字 符 串 运 算 符 。

[ NOT ] EXISTS

EXISTS 或 NOT EXISTS 通 过 返 回 真 或 假 检 测 子 查 询 程 序 返 回 的 行 是 否 存 在 。

语法

[ N O T ] EXISTS ( subquery )

变量

NOT NOT 为 布 尔 表 达 式 的 否 定 指 示 符

Subquery subquery 是 SELECT 语 句 。此 语 句 中 不 能 使 用 ORDER BY 、 COMPUTE 或 INTO 。

示例

下 面 是 NOT EXISTS 检 测 的 示 例 。

SELECT DISTINCT name

FROM MyTable WHERE NOT EXISTS

(SELECT *

FROM MyTable2

WHERE MyTable_ID = MyTable. M yTable_ID)

本 例 中 , 如 果 第 二 个 表 格 中 存 在 ID , 就 返 回 表 的 准 确 名 称 。

EXP

EXP 返 回 浮 点 表 达 式 的 指 数 值 。

语法

EX P ( float_expresison )

变 量 float_expresison 是 浮 点 型 数 据 。

FETCH

FETCH 返 回 Transact-SQL 游 标 中 的 一 行 。

语法

FETCH

[[ NEXT | PRIOR | FIRST | LAST

| ABSOLUTE { n | @nvar } | RELATIVE { n | @nvar} ]

FROM ] { { [ GLOBAL ] cursor_name } | cursor_variable_name

}

[ INTO @variable_nam e[ ,...n ]]

变量

NEXT NEXT 检 索 当 前 行 下 面 的 一 行 , 它 是 FETCH 的 缺省 选 项 。

PRIOR PRIOR 检 索 当 前 行 的 前 一 行 。

FIRST FIRST 检 索 游 标 中 的 第 一 行 。

LAST LAST 检 索 游 标 中 的 最 后 一 行 。

ABSOLUTE{n | @nvar} 如 果 n 或 @nvar 为 正 , ABSOLUTE 使 这 一 行 成 为

当 前 行 中 游 标 前 面 的 第 n 行 , 并 对 其 进 行 检 索 。如 果 n 或 @nvar 为 负 , 将 检 索 游 标 末 端 前 的 第 n 行 。

RELATIVE{n | @nvar} 如 果 n 或 @nvar 为 正 , RELATIVE 检 索 当 前 行 后

的 第 n 行 , 如 果 n 或 @nvar 为 负 , RELATIVE 返回 当 前 行 前 的 第 n 行 。

GLOBAL GLOBAL 指 全 局 游 标 。

cursor_name cursor_name 是 要 从 中 提 取 数 据 的 游 标 名 称 。

cursor_variable_name cursor_variable_name 是 游 标 变 量 的 名 称 。INTO@variable-name [ n ] INTO 将 数 据 放 在 局 部 变 量 中 。

FILE_ID

FILE_ID 返 回 当 前 数 据 库 中 逻 辑 文 件 名 称 的 文 件 标 识 号 。

语法

FILE_ID( ′ File_nam e′ )

变 量 file_name 是 sysfiles 系 统 表 中 文 件 的 逻 辑 名 称 。

FILE_NAME

FILE_NAME 返 回 当 前 数 据 库 中 某 个 文 件 标 识 号 代 表 的 文 件 名 称 。

语法

FILE_NAME( file_id )

变 量 file_id 是 sysfiles 系 统 表 中 的 文 件 标 识 符 列 。

FILEGROUP_ID

FILEGROUP_ID 返 回 当 前 数 据 库 中 某 文 件 组 名 称 的 文 件 组 标 识 号 。

语法

FILEGROUP_ID( ′ filegroup_name′ )

变 量 filegroup_name 是 文 件 组 名 称 , 且 与 sysfilegroups 系 统 表 中 的 文 件组 名 称 列 相 符 。

FILEGROUP_NAME

FILEGROUP_NAME 返 回 当 前 数 据 库 中 某 个 文 件 组 标 识 号 对 应 的 文 件 组 名 。

语法

FILEGROUP_NAME( filegroup_id )

变 量 filegroup_id 是 sysfilegroups 系 统 表 中 的 组 标 识 符 列 。

FILEGROUPPROPERTY

当 将 文 件 组 和 属 性 名 称 作 为 变 量 提 供 时 , FILEGROUPPROPERTY 返 回 文 件 组 的属 性 值 , 1= 真 , 0= 假 , NULL= 属 性 值 没 有 找 到 , 属 性 名 称 可 以 是 IsReadOnly , IsDefault 和 IsUserDefinedFG 。

语法

FILEGROUPPROPERTY( ′ filegroup_nam e′ , ′ property ′ )

变量

  • filegroup_name ′ filegroup_name 是 文 件 组 的 名 称 。

  • property ′ property 是 文 件 组 属 性 的 名 称 , IsReadOnly ,

    IsDefault , 和 IsUserDefinedFG 。

FILEPROPERTY

FILEPROPERTY 返 回 文 件 的 属 性 值 , 1= 真 , 0= 假 , NULL= 属 性 值 没 有 找 到 , 属性 名 可 以 是 IsLogFile , SpaceUsed , IsReadOnly 和 IsPrimaryFile 。

语法

FILEPROPERTY(

′ file_name ′

, ′ property ′ )

变量

  • file_name ′ file_name 是 文 件 的 名 称 。

  • property ′ property 是 文 件 属 性 的 名 称 :IslogFile , SpaceUsed

    , IsReadOnly 和 IsPrimaryFile 。

浮 点 数 和 实 数

参 阅 DataTypes 。

FLOOR

FLOOR 返 回 小 于 或 等 于 数 字 表 达 式 变 量 的 整 数 值 。

语法

FLOOR(numeric_expression)

变 量 numeric_expression 可 以 是 小 数 、 浮 点 数 、 整 型 数 、 货 币 值 、 实 数 、短 整 型 数 、 小 货 币 数 或 微 短 整 型 表 达 式 。

示例

下 面 是 FLOOR 函 数 的 示 例 :

SELECT FLOOR(2.3);FLOOR(-2.3) G O

本 例 中 , FLOOR(2.3) 返 回 值 为 2 , FLOOR(-2.3) 返 回 值 为 -3 。

FORMATMESSAGE

FORMATMESSAGE 格 式 化 sysmessages 系 统 表 的 系 统 信 息 中 的 信 息 , 并 返 回 已格 式 化 的 信 息 。

语法

FORMATMESSAGE(msg_number , param_value ,[ , n ] )

变量

msg_number msg_number 是 信 息 的 标 识 符 , 此 变 量 作 为 一 行 保 存

在 master 系 统 数 据 库 的 sysmessages 系 统 表 格 中 。param_value param_value 是 表 示 代 替 信 息 中 的 变 量 的 正 值 ( 最 大

为 20) 。

FREETEXT

FREETEXT 搜 索 字 符 全 文 启 动 列 中 意 思 相 符 的 列 , 在 匹 配 搜 索 前 , 先 把 ′ freetext-string′ 分 成 加 权 搜 索 项 。

语法

FREETEXT({colum n| *},′ freetext_string ′ )

变量

column column 指 启 动 全 文 搜 索 的 字 符 列 的 名 称 。

* * 指 搜 索 所 有 的 全 文 启 动 列 , 查 找 意 义 上 与freetext_string 变 量 匹 配 的 列 。

freetext_string freetext_string 表 示 要 在 列 中 搜 索 的 意 义 接 近

的 字 符 。

示例

下 面 为 使 用 FREETEXT 的 示 例 :

SELECT MyColumn FROM MyTable

WHERE FREETEXT (MyFullTextEnabledColumn, ′ planets in the universe ′ )

G O

本 例 中 , 在 MyFullTextEnabledColumn 中 搜 寻 意 思 与 变 量 ′ planets in the universe ′ 相 近 的 项 , 此 搜 索 不 如 使 用 另 一 种 全 文 搜 索 工 具 CONTAINS 语 法 精确 。

FREETEXTTABLE

FREETEXTTABLE 将 结 果 集 提 供 为 表 格 行 , 在 该 表 格 中 , 字 符 列 值 在 意 义 上 与

′ freetext_string ′ 变 量 中 字 符 一 致 的 每 一 行 都 附 带 有 RANK 。 该 语 法 允 许 在使 用 FREETEXT 的 SELECT 查 询 的 FROM 子 句 中 使 用 FREETEXTTABLE 。

语法

FREETEXTTABLE( table , {colum n| *} ,′ freetext_string ′ )

变量

table table 是 全 文 启 用 表 格 的 名 称 。

Column column 是 搜 寻 的 全 文 启 用 列 的 名 称 。

* * 表 示 搜 索 所 有 的 全 文 启 用 列 , 查 找 与freetext_string 匹 配 的 列 。

freetext_string freetext_string 表 示 要 在 列 中 搜 索 的 意 义 一

致 的 字 符 。

FROM

FROM 子 句 放 在 表 格 、视 图 、派 生 表 ,以 及 在 DELETE 、INSERT 、SELECT 和 UPDATE 语 句 中 使 用 的 连 接 表 格 的 前 面 。

语法

FROM

{<table_or_view> | ( select_statement ) [ A S ] alias | <table_or_view>

[ {CROSS | INNER | {FULL | LEFT | RIGHT }[ OUTER ][ <join_hint> ]

JOIN

<table_or_view> ON search_conditions ]

| CONTAINSTABLE ( table,{ column | *},

′ <contains_search_condition> ′ )

| FREETEXTTABLE

( table,{column | * },′ freetext_string ′ )} [ ,...n ]

<table_or_view>::=

{

table

[[ A S ]

alias

] [ W ITH(<table_hint>

[ ...

m

] )]

|

view

[[ AS ]

alias

| OPENROWSER( ′ provider_nam e′ ,

{ ′ datasource ′ ;′ user_id ′ ;′ password ′ | ′ provider_string ′ },

{ [ catalog. ][ schema .] object_name | ′ query′ })

| OPENQUERY( linked_server, ′ query ′ )}

<table_hint>::= ([ INDEX =

{

index_name

| index_id ]

} [ ,... n ]

[ FASTFIRSTROW ][ HOLDLOCK ][ NOLOCK ][ PAGLOCK ]

[ READCOMMITTED ][ READPAST ][ READUNCOMMITTED ]

[ REPEATABLEREAD ][ ROWLOCK ][ SERIALIZABLE ][ TABLOCK ]

[ TABLOCKX ][ UPDLOCK ]

)

<join_hint>::=

{ HASH

| LOOP

| MERGE

}

变量

<table_or_view> <table_or_view> 指 FROM 子 句 中 引 用 的 表 格 或 视

图 。

alias 可 以 给 每 个 表 格 或 视 图 命 名 一 个 别 名 , 即 表 格 或视 图 的 简 写 名 称 。 两 个 表 格 中 很 可 能 有 2 个 同 名的 列 , 这 种 情 形 下 用 别 名 以 全 限 定 的 方 式 引 用 表格 中 的 列 就 较 方 便 。

<table_hint> table_hint 决 定 所 使 用 的 索 引 , 表 格 扫 描 或 锁 定

策 略 。 对 新 优 化 程 序 的 提 示 请 参 阅 第 6 章 。

n n 表 示 前 面 的 项 可 以 重 复 。

OPENROWSET OPENROWSET 定 义 从 数 据 源 中 访 问 远 程 数 据 的 联 接信 息 。 请 参 阅 本 章 后 面 的 “ OPENROWSET ”。

OPENQUERY OPENQUERY 执 行 通 过 查 询 程 序 。 请 参 阅 本 章 后 面 的“ OPENQUERY ”。

select_statement 此 语 句 负 责 从 数 据 库 中 返 回 行 。CROSS CROSS 表 示 两 表 格 的 交 叉 积 。

FULL [ OUTER ] 如 果 在 SELECT 语 句 中 提 供 了 FULL [ OUTER ], 即 使

两 个 表 格 没 有 任 何 匹 配 , 也 要 从 两 表 格 中 接 收 行 , 不 匹 配 行 的 列 以 NULL 来 显 示 。

INNER INNER 联 接 是 缺 省 值 , 它 表 示 只 返 回 匹 配 的 行 。LEFT [ OUTER ] LEFT [ OUTER ] 联 接 表 示 返 回 匹 配 的 行 , 对 于 不 匹

配 的 行 , 左 边 表 格 中 的 行 包 括 在 结 果 集 中 , 另 一个 表 格 中 的 行 设 置 为 NULL 。

RIGHT [ OUTER ] RIGHT [ OUTER ] 联 接 表 示 返 回 匹 配 的 行 , 对 于 不

匹 配 的 行 , 右 边 表 格 中 的 行 包 括 在 结 果 集 中 , 另一 个 表 格 中 的 行 设 置 为 NULL 。

JOIN JOIN 表 示 将 进 行 联 接 操 作 。

<join_hint> 为 查 询 优 化 程 序 提 供 join_hint , 说 明 在 FROM 子

句 中 如 何 利 用 每 个 联 接 中 的 联 接 提 示 进 行 联 系 操作 。

search_conditions search_conditions 用 WHERE 子 句 的 Transact-SQL

语 法 列 出 对 返 回 的 行 的 限 制 。

n n 表 示 前 面 的 项 可 以 重 复 。

CONTAINSTABLE 当 搜 索 字 符 全 文 启 用 列 , 查 找 某 个 单 词 或 短 语 的

精 确 匹 配 或 相 近 匹 配 , 几 个 单 词 与 其 他 单 词 的 相近 匹 配 , 以 及 加 权 匹 配 时 , CONTAINSTABLE 将 返 回一 个 表 格 。

FREETEXTTABLE FREETEXTTABLE 返 回 在 意 义 上 与 字 符 全 文 启 用 列 相

匹 配 的 表 格 。

示例

下 面 是 ANSI FULL OUTER JOIN 的 示 例 :

SELECT Column1, Column2

FROM MyTable a FULL OUTER JOIN MyTable2 b ON a.My_Id = b.My_Id

WHERE MyTable.My_OtherId IN (987, 346, 985)

本 例 中 , 形 成 了 全 外 部 连 接 。

FULLTEXTCATALOGPROPERTY

FULLTEXTCATALOGPROPERTY 显 示 与 全 文 目 录 属 性 有 关 的 信 息 。

语法

FULLTEXTCATALOGPROPERTY (′ catalog_nam e′ , ′ property ′ )

变量

  • catalog_name ′ catalog_name 是 全 文 目 录 的 名 称 。

  • property ′ 全 文 目 录 的 属 性 有 :PopulateStatus 0=Idle ( 空

闲 ), 1=Population in progress( 在 进 程 中 装 载 ) , 2=Paused( 暂 停 ) , 3=Throttled( 调 节 ) , 4=Recovering ( 恢 复 ), 5=Shutdown ( 关 闭 ), 6=Incremental population in progress( 在 进 程中 递 增 总 值 ) 7= 更 新 索 引 。

ItemCount 全 文 目 录 项 的 计 数 。

IndexSize 全 文 索 引 的 容 量 , 以 MB 为 单 位 。UniqueKeyCount 全 文 索 引 中 专 用 键 的 计 数 。logSize 最 后 一 次 装 载 的 全 文 索 引 的 容 量 , 以 MB 表 示 。

PopulateCompletionAge 计 算 完 成 最 后 一 次 装 载 的时 间 时 , 可 减 去 完 成 的 日 期 和 01 / 01 / 1990 00 : 00 : 00 。

FULLTEXTSERVICEPROPERTY

FULLTEXTSERVICEPROPERTY 显 示 与 全 文 服 务 属 性 有 关 的 信 息 。

语法

FULLTEXTSERVICEPROPERTY (′ property ′ )

变量

′ property ′ 全 文 服 务 的 属 性 有 :Resourceusage , 1= 背 景 , 5=

专 用 。 ConnectTimeOut , 乘 4 得 到 Microsoft Search Service 的 秒 数 , 启 动 全 文 索 引 的 装 载 。

IsFulltextInstalled , 1= 安 装 Microsoft Search Service , 0= 没 有 安 装 Microsoft Search Service

GETANSINULL

GETANSINULL 是 一 个 函 数 , 如 果 数 据 库 使 用 无 效 性 的 ANSI 缺 省 值 , 则 该 函数 返 回 1 。如 果 无 效 性 不 是 ANSI 缺 省 值 ,就 返 回 0 ,在 CREATE TABLE 或 ALTER TABLE 语 句 中 指 定 NULL 就 可 以 忽 略 它 。 设 置 缺 省 操 作 还 可 以 使 用 sp_dboption ′ ANSI NULL DEFAULT ′ , {ture | false} , SET ANSI_NULL_DFLT_ON {ON | OFF} 或 者 SET ANSI_NULL_DEFLT_OFF {ON | OFF} 。

语法

GETANSINULL ([ ′ database ′ ] )

变 量 database 是 数 据 库 名 称 。

GETDATE

GETDATE 是 一 函 数 , 它 返 回 系 统 日 期 和 时 间 。

语法

GETDATE()

GO

GO 是 执 行 批 量 Transact-SQL 语 句 的 命 令 。

语法

G O

GOTO

GOTO 是 将 程 序 控 制 流 传 送 给 标 签 的 命 令 。

语法

GOTO label

变 量 label 是 在 Transact-SQL 中 GOTO 语 句 传 送 程 序 控 制 的 点 。

GRANT

参 阅 第 5 章 。

GROUP BY

参 阅 本 章 后 面 的 “ SELECT ”。

GROUPING

在 CUBE 或 ROLLUP 子 句 插 入 行 时 , GROUPING 为 包 含 值 1 的 输 出 建 立 附 加 列 , 如 果 不 是 由 CUBE 或 ROLLUP 语 句 插 入 行 , 而 是 CUBE 或 ROLLUP 和 GROUP BY 子 句一 起 使 用 , 则 附 加 列 将 包 含 0 。

语法

GROUPING(column_name)

变 量 column_name 表 示 检 查 CUBE 或 ROLLUP 提 示 符 的 GROUP 子 句 中 的 附 加

列 。

HAVING

HAVING 是 与 SELECT...GROUP BY 语 句 一 起 使 用 的 分 组 搜 索 条 件 ( 通 常 使 用集 合 函 数 )。 它 与 WHERE 语 句 很 相 似 。

语法

H AVING < search_condition >

变 量 search_condition 是 必 须 满 足 的 分 组 条 件 。

HOST_ID

HOST_ID 函 数 返 回 工 作 站 的 标 识 号 。

语法

HOST_ID ( )

HOST_NAME

HOST_NAME 函 数 返 回 工 作 站 的 名 称 。

语法

HOST_NAM E ( )

IDENT_INCR

IDENT_INCR 是 一 个 函 数 。 当 用 等 同 列 创 建 表 格 或 视 图 时 , 此 函 数 返 回 所 指定 的 表 格 或 视 图 的 相 等 的 增 量 值 。

语法

IDENT_INCR ( ′ table_or_view ′ )

变 量 table_or_view 是 要 查 看 其 相 等 增 量 值 的 表 格 或 视 图 。

IDENT_SEED

IDENT_SEED 是 一 个 函 数 。 当 用 等 同 列 创 建 表 格 或 视 图 时 , 此 函 数 返 回 所 指定 的 表 格 或 视 图 的 初 值 ( 即 seed )。

语法

IDENT_SEED ( ′ table_or_view ′ )

变 量 table_or_view 是 要 查 看 其 相 等 初 值 的 表 格 或 视 图 。

IDENTITY

等 同 列 提 供 某 列 中 唯 一 的 、 自 动 生 成 的 值 。

语法

IDENTITY ( data_type [ , seed , incremen t])

示例

下 面 是 等 同 列 的 示 例 :

CREATE TABLE MyTable (My_Id int IDENTITY(1,1), MyDescr varchar(30))

本 例 中 , 将 My_Id 列 创 建 为 等 同 列 。

IF...ELSE

参 见 本 章 后 面 的 ELSE 。

IN

IN 子 句 查 看 某 值 是 否 在 其 它 值 的 列 表 中 。

语法

Expression IN

(subquery | expression [ ,...n ] )

变量

expression expression 指 任 意 合 法 的 SQL 表 达 式 。

Subquery subquery 的 结 果 集 必 须 具 有 一 列 , 表 达 式 的 数 据 类型 必 须 一 致 。

示例

下 面 是 IN 语 句 的 示 例 :

SELECT MyColumn,MyId FROM MyTable

WHERE MyId IN (SELECT MyId

FROM MyOtherTable

WHERE MyOtherColumn LIKE (%this%))

在 本 例 中 , 当 在 MyOther 表 中 查 找 到 MyId 时 , 就 返 回 MyColumn 和 MyId 。

INDEXPROPERTY

INDEXPROPERTY 对 于 在 表 中 的 索 引 返 回 索 引 的 属 性 值 。 索 引 的 属 性 有 : IndexDepth , IsClustered , IsUnique , IndexFillFactor , IsPadIndex , IsFullTextKey , 其 中 1= 真 ( true ), 0= 假 ( false ), NULL= 没 找 到 属 性 值 。

语法

INDEXPROPERTY ( table_ID , index ′ , property ′ )

变量

table_ID table_ID 是 表 的 OBJECT_ID 。

  • index ′ index 是 索 引 名 。

  • property ′ property 是 索 引 的 属 性 名 。

INDEX_COL

INDEX_COL 是 一 个 函 数 , 它 将 返 回 已 索 引 的 列 名 。

语法

INDEX_CO L ( ′ table ′ , index_id , key_id ) 下 列 变 量 的 意 义 为 :

′ table ′ table 是 表 的 名 字 。

index_id index_id 是 索 引 的 indid 。

key_id key_id 是 键 索 引 的 主 要 列 数 ( 1 到 16 )。

INSERT

INSERT 语 句 可 在 表 或 视 图 中 插 入 一 行 或 几 行 。

语法

INSERT [ INTO ] {<table_or_view>}

{

{

[ ( column_list )] VALUES (

{ DEFAULT

| constant_expression

} [ ,... n ]

)

| select_statement

| execute_statement

}

|DEFAULT VALUES

}

<table_or_view > ::=

{

|

|OPENROWSET (′

{

provider_name ′ ,

′ datasource ′ ;′ user_id ′ ;′ password ′

| ′ provider_string ′

},

{

[ catalog. ][ schema.] object_name

| ′ query ′

})

| OPENQUERY( linked_server, ′ query ′ )

}

<table_hint>::= ([ INDEX =

{

index_name

| index_id ]

} [ ,... n ]

[ HOLDLOCK ] [ PAGLOCK ] [ READCOMMITTED ]

[ READUNCOMMITTED ] [ REPEATABLEREAD ]

[ ROWLOCK ] [ SERIALIZABLE ] [ TABLOCK ] [ TABLOCKX ]

)

变量

INTO INTO 是 表 或 视 图 前 面 的 关 键 字 。

Column_list Column_list 是 列 的 清 单 。

VALUES VALUES 是 在 列 的 清 单 中 按 一 一 对 应 赋 给 各 列 的数 值 。

DEFAULT DEFAULT 表 示 要 放 在 列 中 的 列 的 缺 省 值 。 该 变量 不 能 与 等 同 列 一 起 使 用 。

constant_expression constant_expression 可 以 是 表 达 式 , 常 数 ,

或 变 量 。

n n 表 示 前 面 的 值 可 以 重 复 。

select_statement SELECT 语 句 用 于 查 询 要 放 在 表 中 的 数 据 。execute_statement exectute_statement 是 任 意 合 法 的 EXECUTE 语

句 。 这 些 语 句 返 回 的 结 果 集 与 要 插 入 的 结 果 集的 列 相 匹 配 。

DEFAULT VALUES DEFULT VALUES 表 示 新 行 将 包 含 每 一 列 的 缺 省

值 。

<table_or_view> table_or_view 是 表 或 视 图 的 标 题 名 。table table 是 要 放 入 数 据 的 表 名 。

alias alias 是 赋 给 表 或 视 图 的 缩 写 名 。

view view 是 视 图 名 。

OPENROWSET OPENROWSET 包 含 了 使 用 数 据 源 中 的 远 程 数 据 的连 接 定 义 。

OPENQUERY OPENQUERY 运 行 通 过 查 询 。 请 参 阅 本 章 后 面 的“ OPENQUERY ”。

<table_hint> table_hint 通 知 SQL Server 查 询 优 化 程 序 如何 执 行 查 询 。 请 参 阅 第 6 章 的 “ 新 优 化 程 序 提示 ” 。

INDEX=index_name

|index_id

示例

如 果 给 出 了 索 引 优 化 程 序 提 示 , 该 索 引 可 用 来处 理 查 询 。

下 面 是 INSERT 语 句 的 示 例 :

INSERT MyTable

(Column1, Column2, Column3) VALUES

(1, DEFAULT, ′ Value for column 3 ′ )

本 例 中 ,值 1 是 column2 的 缺 省 值 ,column3 的 值 可 作 为 一 行 插 入 到 MyTable

中 。

int,smallint 和 tinyint

请 参 阅 数 据 类 型 。

IS_MEMBER

如 果 当 前 用 户 不 是 组 或 角 色 的 成 员 , IS_MEMBER 函 数 就 返 回 0 , 如 果 当 前 用户 是 组 或 角 色 的 成 员 ,IS_MEMBER 函 数 就 返 回 1 ,如 果 不 存 在 组 或 角 色 ,IS_MEMBER 函 数 就 返 回 NULL 。

语法

IS_MEMBER ( { ′ group′ | ′ role ′ } )

变量

  • group ′ group 是 Windows NT 组 的 名 称 , 由 domain \ group 引 用

  • role ′ role 是 SQL Server 角 色 的 名 称 , 而 不 是 服 务器 角 色

    的 名 称 。 对 于 服 务 器 角 色 , 使 用IS_SRVROLEMEMBER 。

IS_SRVROLEMEMBER

如 果 当 前 用 户 不 是 服 务 器 角 色 的 成 员 , IS_ SRVROLEMEMBER 函 数 就 返 回 0 , 如 果 当 前 用 户 是 服 务 器 角 色 的 成 员 , IS_ SRVROLEMEMBER 函 数 就 返 回 1 , 如 果 不存 在 服 务 器 角 色 , IS_ SRVROLEMEMBER 函 数 就 返 回 NULL 。

语法

IS_SRVROLEMEMBER ( ′ role ′ [ ,′ login ′ ])

变量

  • role ′ role 是 服 务 器 角 色 sysadmin , dbcreator , diskadmin ,

    processadmin , serveradmin , setupadmin , securityadmin 的 名 称 。

  • login ′ login 是 要 检 查 的 注 册 名 。 如 果 没 有 提 供 该 变 量

    , 就 使 用 当 前 用 户 的 注 册 帐 户 。

ISDATE

ISDATE 函 数 检 查 变 量 或 varchar 列 , 当 表 达 式 包 含 合 法 的 日 期 时 , 它 返 回1 , 当 表 达 式 不 包 含 日 期 时 , 它 返 回 0 。

语法

ISDATE ( expression )

变 量 expression 是 变 量 或 varchar 列。

IS [ NOT ] NULL

IS [ NOT ] NULL 检 查 表 达 式 是 否 为 NULL 。

语法

expression IS [ N O T ] NULL

变量

expression expression 是 任 一 表 达 式 。

NOT NOT 是 布 尔 表 达 式 的 负 运 算 符 。

ISNULL

ISNULL 函 数 可 用 NULL 替 代 非 空 数 据 。

语法

ISNULL ( expression , substitution_value)

变量

expression expression 是 要 检 查 空 值 的 内 容 。substitution_value 如 果 表 达 式 为 NULL , 就 返 回

substitution_value 。

ISNUMERIC

如 果 表 达 式 是 整 数 、 浮 点 数 、 货 币 或 小 数 , ISNUMERIC 函 数 就 返 回 1 , 如 果表 达 式 不 是 一 个 数 值 , ISNUMERIC 函 数 就 返 回 0 。

语法

ISNUMERIC ( expression )

变 量 必 须 是 一 个 字 符 串 。

KILL

KILL 命 令 结 束 一 个 过 程 。

语法

K ILL {

spid

} [ W ITH {ABORT | COMMIT }]

变 量 spid 是 要 终 止 的 过 程 ID 。

LEFT

LEFT 函 数 返 回 字 符 表 达 式 从 左 边 开 始 的 给 定 的 字 节 数 。 如 果 该 整 数 是 一 个 负 数 , 就 返 回 NULL 。

语法

LEFT ( character_experession , integer_expression )

变量

character_experession character_experession 可 以 是 变 量 、 常 数

或 表 中 的 列 。

integer_expression integer_expression 可 以 是 变 量 、 常 数 或

表 中 的 列 , 表 示 要 返 回 的 字 符 数 。

LEN

LEN 函 数 提 供 了 字 符 串 表 达 式 中 字 符 的 长 度 。

语法

LEN (string_ expression)

变 量 string_expression 可 以 是 变 量 、 常 数 或 列 , 也 可 以 是 返 回 字 符 数 据类 型 的 表 达 式 ( 类 似 于 合 并 字 符 串 函 数 , 它 返 回 一 个 字 符 串 )。

LIKE

LIKE 子 句 和 字 符 串 一 起 使 用 , 以 确 定 与 通 配 符 相 匹 配 的 模 式 。

语法

match_expression [ NOT ] LIKE pattern

变量

match_expression match_expression 是 任 何 合 法 的 字 符 SQL 表

达 式 。

Pattern pattern 是 要 在 变 量 match_expression 中 查找 的 内 容 。 在 模 式 中 可 以 使 用 通 配 符 。

% 表 示 查 找 任 意 长 度 的 内 容 。

_ 表 示 查 找 任 一 字 符 。

[ ] 包 含 字 符 的 范 围 或 列 表 。

[ ^ ] 要 排 除 的 字 符 。

示例

下 面 是 LIKE 子 句 的 示 例 :

SELECT *

FROM Mytable

WHERE Column1 LIKE "%MS%"

本 例 中 , 返 回 MyTable 表 的 Column1 列 中 在 任 意 位 置 上 有 连 续 字 符 MS 的 所有 行 。

LOAD

LOAD 只 为 了 向 后 兼 容 。 可 用 RESTORE 命 令 代 替 它 。 参 阅 本 章 后 面 的“ RESTORE ”。

LOG

当 给 出 浮 点 表 达 式 时 , LOG 函 数 返 回 浮 点 表 达 式 的 自 然 对 数 。

语法

LOG ( float_expression )

变 量 float_expression 是 浮 点 表 达 式 。

LOG10

当 给 出 浮 点 表 达 式 时 , LOG10 函 数 返 回 浮 点 表 达 式 的 底 数 为 10 的 对 数 。

语法

LOG10 ( float_expression )

变 量 float_expression 是 浮 点 表 达 式 。

LOWER

LOWER 函 数 将 大 写 字 符 转 换 为 小 写 字 符 。

语法

LOWER ( character_expression ) 变 量 是 字 符 表 达 式 。

LTRIM

LTRIM 删 除 字 符 表 达 式 中 的 前 导 空 格 。

语法

LTRIM ( character_expression ) 变 量 是 字 符 表 达 式 。

M A X

MAX 返 回 表 达 式 中 的 最 大 值 , 但 它 不 能 与 位 列 一 起 使 用 。

语法

M A X ([ ALL | DISTINCT ] expression )

变量

ALL ALL 是 缺 省 值 。

DISTINCT DISTINCT 表 示 唯 一 值 。 在 这 里 使 用 该 变 量 是 与ANSI 兼 容 的 , 但 没 有 意 义 。

Expression expression 可 以 是 常 数 、 列 或 函 数 , 也 可 以 包含 算 术 运 算 符 、 按 位 运 算 符 和 字 符 串 运 算 符 。

示例

下 面 是 MAX 函 数 的 示 例 :

SELECT MAX(Column1)

FROM MyTable

本 例 中 , 返 回 表 MyTable 的 Column1 列 的 最 大 值 。

M IN

MIN 返 回 表 达 式 中 的 最 小 值 , 但 它 不 能 与 位 列 一 起 使 用 。

语法

MIN ( [ ALL | DISTINCT ] expression )

变量

ALL ALL 是 缺 省 值 。

DISTINCT DISTINCT 表 示 唯 一 值 。在 这 里 使 用 该 变 量 是 与 ANSI

兼 容 的 , 但 没 有 意 义 。

Expression expression 可 以 是 常 数 、 列 或 函 数 , 也 可 以 包 含算 术 运 算 符 、 按 位 运 算 符 和 字 符 串 运 算 符 。

示例

下 面 是 MIN 函 数 的 示 例 :

SELECT MIN(Column1)

FROM MyTable

本 例 中 , 返 回 表 MyTable 的 Column1 列 的 最 小 值 。

money 和 samllmoney

请 参 阅 本 章 前 面 的 “ Data Types ”。

MONTH

请 参 阅 本 章 前 面 的 “ 日 期 函 数 ”。 MONTH ( date ) 与 DATEPART(mm , date) 相

同 。

NCHAR

NCHAR 返 回 整 数 0-65535 的 标 准 Unicode 字 符 。

语法

N C H A R ( integer_expression ) 变 量 是 整 数 0-65535 。

nchar 和 nvarchar

请 参 阅 本 章 前 面 的 “ Data Types ”。

NEWID

NEWID 函 数 返 回 uniqueidentifier 值 。

语法

NEWID ( )

NOT

NOT 是 布 尔 表 达 式 的 负 运 算 符 。

语法

[ N O T ] boolean_expression

变 量 是 合 法 的 SQL 布 尔 表 达 式 。

ntex t, text 和 image

请 参 阅 本 章 前 面 的 “ Data Types ”。

NULLIF

如 果 一 对 表 达 式 相 等 , NULLIF 函 数 就 返 回 NULL 。 如 果 它 们 不 相 等 , NULLIF 函 数 就 返 回 第 一 个 表 达 式 的 值 。

语法

NULLIF ( expression , expression )

变 量 expression 可 以 是 常 数 、 列 或 函 数 , 也 可 以 包 含 算 术 运 算 符 、 按 位 运算 符 、 和 字 符 串 运 算 符 。

numeric

请 参 阅 本 章 前 面 的 “ Data Types ”。

OBJECT_ID

当 给 当 前 数 据 库 中 的 对 象 名 时 , OBJECT_ID 将 返 回 对 象 标 识 号 。

语法

OBJECT_ID (′ objec t′ ) 变 量 object_id 是 对 象 名 。

OBJECT_NAME

当 给 处 当 前 数 据 库 中 的 对 象 名 时 , OBJECT_NAME 函 数 返 回 对 象 名 。

语法

OBJECT_NAM E( object_id )

变 量 object_id 是 对 象 的 标 识 号 。

OBJECTPROPERTY

OBJECTPROPERTY 函 数 生 成 数 据 库 对 象 的 大 量 信 息 , 它 返 回 下 述 属 性 值 : CnstIsClustKey,CnstIsColumn, CnstIsDisabled, CnstIsNonclustKey,

CnstIsNotRepl, ExecIsAnsiNullsOn , ExecIsDeleteTrigger ,

ExecIsInsertTrigger , ExecIsQuotedIdentOn , ExecIsStartup ,

ExecIsTriggerDisabled , ExecIsUpdateTrigger , IsCheckCnst , IsConstraint , IsDefault , IsDefaultCnst , IsExecuted , IsExtendedProc , IsForeignKey ,

IsMSShipped , IsPrimaryKey , IsProcedure , IsReplProc , IsRule , IsSystemTable ,IsTable ,IsTrigger , IsUniqueCnst ,IsUserTable ,IsView , OwnerId , TableDeleteTrigger , TableDeleteTriggerCount , TableFullTextKeyColumn , TableFullTextCatalogId , TableHasActiveFulltextIndex , TablehasCheckCnst , TableHasClustIndex , TableHasDefaultCnst , TableHasDeleteTrigger , TableHasForeignKey , TableHasForeignRef , TableHasIdentity , TableHasIndex , TableHasInsertTrigger , TableHasNonclustIndex , TableHasPrimaryKey , TableHasRowGuidCol , TableHasTextImage , TableHasTimestamp , TableHasUniqueCnst , TableHasUpdateTrigger , TableInsertTrigger ,

TableInsertTriggerCount , TableIsPinned , TableUpdateTrigger , TableUpdateTriggerCount , TriggerDeleteOrder , TriggerInsertOrder , TriggerUpdateOrder.

语法

OBJECTPROPERTY ( id, ′ property ′ )

变量

id 是 对 象 的 ID 。

′ property ′ 是 有 id 的 对 象 的 返 回 信 息 。 Property 可 以 是 上 述

值 中 的 任 一 个 。

OPEN

OPEN 语 句 与 Transact-SQL 服 务 器 游 标 一 起 使 用 , 以 打 开 该 服 务 器 游 标 。

语法

OPEN {{ [ GLOBAL ] cursor_name} | cursor_variable_name}

变量

GLOBAL GLOBAL 表 示 如 果 局 部 游 标 与 全 局 游 标 同 名 , 就使 用 全 局 游 标 。

cursor_name cursor_name 是 游 标 名 称 。 如 果 局 部 游 标 与 全局 游 标 同 名 , 就 使 用 全 局 游 标 。 如 果 指 定 了 可选 关 键 字 GLOBAL , 就 使 用 局 部 游 标 。

cursor_variable_name cursor_variable_name 是 游 标 变 量 的 名 称 。

OPENQUERY

OPENQUERY 函 数 用 于 查 询 的 FROM 子 句 中 , 以 替 代 表 名 , 它 也 可 以 是 INSERT 、UPDATE 或 DELETE 语 句 的 目 标 表 ( 如 果 能 使 用 OLE DB 提 供 商 )。 OPENQUERY 在 定义 为 连 接 服 务 器 的 OLE DB 数 据 源 上 运 行 通 过 查 询 。 该 连 接 服 务 器 已 由 存 储 过 程sp_addlinkedserver 创 建 。

语法

OPENQUERY ( linked_server, ′ query′ )

变量

linked_server linked_server 是 连 接 的 服 务 器 名 。

′ query ′ ′ query ′ 是 在 连 接 的 服 务 器 上 执 行 的 查 询 。

示例

下 面 是 OPENQUERY 函 数 的 示 例 :

SELECT *

FROM OPENQUERY(Orcl_Linked_Srv1, ′ SELECT Column1 FROM dbo.DBA_Table ′ )

本 例 中 , 选 择 出 Oracle 服 务 器 中 的 数 据 。

OPENROWSET

OPENROWSET 函 数 用 于 查 询 的 FROM 子 句 中 ,以 替 代 表 名 ,它 也 可 以 是 INSERT 、UPDATE 或 DELETE 语 句 的 目 标 表 ( 如 果 能 使 用 OLE DB 提 供 商 )。 OPENROWSET 传送 连 接 信 息 , 以 便 访 问 OLE DB 数 据 源 上 的 远 程 数 据 。 可 以 用 它 替 代 OPENQUERY 。也 可 以 用 它 替 代 访 问 连 接 服 务 器 中 的 表 格 ,作 为 用 OLE DB 访 问 远 程 数 据 的 ad hoc 方 式 。

语法

OPENROWSET ( ′ provider_nam e′

{

′ datasource′ ;′ user_id ′ ;′ password ′

| ′ provider_string ′

},

{

[ catalog .][ schema .] object

| ′ query′

})

变量

′ provider_name ′ provider 是 注 册 表 中 OLE DB 提 供 商 的 友 好

名 称 。

′ datasource ′ ′ datasource ′ 是 OLE DB 数 据 源 的 字 母 串 。提 供 商 用 该 串 定 位 数 据 库 或 文 件 。

′ user_id ′ ′ user_id ′ 是 发 送 给 OLE DB 提 供 商 的 用 户名。

  • password ′ password 是 为 用 户 准 备 的 , 并 传 送 给 OLE DB 提 供

    商 。

  • provider_string ′ provider_string 是 专 门 用 于 提 供 商 的 , 它

在 DBPROP_INIT_PROVIDERSTRING 属 性 中 给

出 , 以 初 始 化 OLE DB 提 供 商 。

Catalog catalog 是 对 象 所 在 的 目 录 或 数 据 库 名 。

Schema schema 是 模 式 名 或 对 象 的 拥 有 者 。

Object object 是 对 象 名 。

′ query ′ query 是 提 供 商 执 行 的 通 过 查 询 。 在 提 供 商

没 有 通 过 表 名 显 示 列 表 数 据 , 而 只 通 过 命 令语 言 显 示 该 数 据 时 , 使 用 通 过 查 询 是 很 有 用的。

示例

下 面 是 OPENROWSET 函 数 的 示 例 :

SELECT t1.*

FROM OPENROWSET ( ′ MSDASQ L ′ ,

′ DRIVER={SQL Server};SERVER=server1;UID=sa;PWD=server1pwd ′ , db1.dbo.MyTable) AS t1

ORDER BY t1.Column1, t1.Column2 G O

本 例 中 , ODBC 和 SQL Server 驱 动 程 序 的 OLE DB 提 供 商 发 送 了 运 行 远 程 服务 器 的 查 询 。

OR

OR 检 查 两 个 条 件 , 如 果 其 中 一 个 条 件 为 TRUE , 就 返 回 TRUE , 先 运 算 AND , 但 括 号 的 位 置 可 控 制 运 算 的 顺 序 。

语法

boolean_expression OR boolean_expression

变 量 boolean_expression 是 任 一 合 法 的 SQL 表 达 式 , 其 值 为 TRUE , FALSE 或 UNKNOWN 。

ORDER BY

ORDER BY 确 定 SELECT 语 句 中 的 排 列 顺 序 。

PARSENAME

PARSENAME 返 回 一 个 对 象 的 对 象 名 , 拥 有 者 的 名 称 , 数 据 库 名 和 服 务 器 名 。但 不 通 知 用 户 该 对 象 是 否 存 在 。

语法

PARSENAM E(′ object_nam e′ ,object_piece})

变量

′ object_name ′ object_name 是 对 象 名 , 可 以 限 定 它 。object_piece object_piece 是 要 返 回 的 对 象 部 分 。 该 变 量 的

合 法 值 为 :

1= 对 象 名 , 2= 拥 有 者 的 名 称 , 3= 数 据 库 名 , 4= 服 务 器 名 。

示例

下 面 是 PARSENAME 的 函 数 示 例 :

SELECT PARSENAME (′ mydb..MyTable ′ , 2) AS ′ Owner Name ′

本 例 中 , 解 析 出 数 据 库 mydb 的 表 MyTable 的 拥 有 者 名 称 , 并 返 回 NULL 。

PATINDEX

PATINDEX 函 数 返 回 表 达 式 中 遇 到 的 第 一 个 模 式 的 起 始 位 置 , 如 果 表 达 式 中不 存 在 模 式 , 就 返 回 0 。

语法

PATINDEX ( ′ %pattern% ′ ,expression )

变量

pattern pattern 是 可 以 包 含 通 配 符 的 字 符 串 。

Expression expression 是 一 个 字 符 串 , 通 常 它 是 要 搜 索 的列 名 。

示例

下 面 是 PATINDEX 函 数 的 示 例 :

SELECT PATINDEX (′ %MS% ′ ,Column1)

FROM MyTable WHERE My_id=062554

PERMISSIONS

PERMISSIONS 函 数 返 回 的 32 位 位 图 可 显 示 当 前 对 话 中 用 户 的 语 句 、 对 象 、列 许 可 。 存 储 过 程 sp_helpprotect 也 可 以 用 来 替 代 PERMISSIONS 函 数 。

低 16 位 是 当 前 对 话 中 用 户 的 安 全 帐 户 许 可 。 例 如 , 返 回 值 为 12 ( 没 有 变 量objectid )表 示 当 前 用 户 拥 有 执 行 CREATE PROCEDUR E( 小 数 位 4 )和 CREATE VIEW

( 小 数 位 8 ) 语 句 的 许 可 。

高 16 位 是 当 前 对 话 中 的 用 户 可 以 授 予 其 他 用 户 的 许 可 。 高 16 位 与 低 16 位的 内 涵 完 全 相 同 , 但 要 乘 以 65536 。

返 回 的 语 句 许 可 位 图 值 是 小 数 、 位 和 许 可 ; 1=0x1=CREATE DATABASE;2=0x2=CREATE TABLE,4=0x4=CREATE PROCEDURE,8=0x8=CREATE VIEW,16=0x10=CREATE RULE,32=0x20=CREATE DEFAULT,64=0x40=BACKUP DATABASE,128=0x80=BACKUP LOG,256=0x100=BACKUP TABLE.

当 提 供 了 objectid 时 , 返 回 的 对 象 许 可 位 图 值 是 小 数 、 位 和 许 可 ; 1=0x1=SELECT ALL , 2=0x2=UPDATEALL , 4=0x4=REFERENCES ALL,8=0x8=INSERT,16=0x10=DELETE,32=0x20=EXECUTE( 存 储 程序 ),4096=0x1000=SELECT ANY,8192=0x2000=UPDATE

ANY,16384=0x4000=REFERENCES ANY.

当 提 供 了 objectid 和 列 时 , 返 回 的 列 对 象 许 可 位 图 值 是 小 数 、 位 和 许 可 ; 1=0x1=SELECT,2=0x2=UPDATE,4=0x4=REFERENCES.

如 果 不 存 在 objectid 和 列 , 就 返 回 NULL 。

语法

PERMISSIONS ([ objectid [ , ′ colum n′ ]] )

变量

objectid 为 当 前 数 据 库 中 对 象 的 OBJECT_ID 。 如 果 没 有 提供 Objectid 语 句 , 许 可 权 返 回 给 当 前 用 户 。

′ column ′ 可 选 的 要 返 回 许 可 权 的 列 名 。

示例

下 面 是 PERMISSIONS 函 数 的 示 例 :

IF PERMISSIONS()&1=1

CREATE TABLE DBA_Table (Column1 INT, Column2 VARCHAR) ELSE

GOTO ErrorRtn

PI

PI 函 数 返 回 pi 的 值 3.14159265358979 。

语法

P I( )

示例

下 面 是 PI 函 数 的 示 例 :

SELECT P I( )

本 例 中 , 返 回 pi 的 值 3.14159265358979 。

POWER

函 数 返 回 给 定 数 值 表 达 式 的 幂 。

语法

POWER ( numeric_expression, y )

变量

numeric_expression numeric_expression 的 数 据 类 型 可 以 是 小 数 、 浮

点 、 整 型 、 货 币 、 数 值 、 实 型 、 短 整 型 、 短 货 币或 微 整 型 。

y 表 达 式 的 幂 指 数 。

PRINT

PRINT 语 句 将 用 户 定 义 的 信 息 返 回 到 客 户 机 , 该 信 息 最 多 可 以 有 1024 个 字

符 。

语法

PRINT{ ′ any ASCII text ′ |@local_variable | @ @ g lobal_variable | string_expr}

变量

′ any ASCII text ′ any ASCII text 是 一 字 符 串 。@local_variable @local_variable 是 局 部 变 量 。@@global_variable @@global_variable 是 返 回 字 符 串 的 全 局 变 量 。string_expr string_expr 是 返 回 字 符 串 的 表 达 式 。

QUOTENAME

QUOTENAME 函 数 返 回 Unicode 字 符 串 , 此 Unicode 字 符 串 将 字 符 串 变 量 转 换成 有 效 的 引 用 标 识 符 。

语法

QUOTENAME ( ′ character_string ′ [ ,′ quote_character′] )

变量

  • character_string ′ character_string 是 一 Unicode 字 符 串 。

  • quote_character ′ quote_character 是 用 作 分 隔 符 的 字 符 串 。

变 量 的 可 能 值 为 单 引 号 , 左 括 号 , 右 括 号 或 双引 号 。

RADIANS

RADIANS 为 一 函 数 , 在 提 供 以 度 表 示 的 数 字 表 达 式 时 , RADIANS 返 回 其 弧 度

值 。

语法

RADIANS(numeric_expression)

变 量 numeric_expression 可 以 是 小 数 、 浮 点 数 、 整 型 数 、 货 币 、 数 字 、 实数 、 短 整 型 数 、 短 整 型 数 , 小 货 币 或 微 短 整 型 数 等 。

RAISERROR

RAISERROR 是 一 个 函 数 , 它 返 回 用 户 定 义 的 错 误 信 息 , 并 设 置 系 统 标 志 以 指明 出 现 的 错 误 。 此 信 息 可 能 是 来 自 sysmessages 系 统 表 的 错 误 , 也 可 能 是 带 有用 户 定 义 的 严 重 级 别 和 状 态 的 函 数 内 部 的 错 误 。 如 果 错 误 在 运 行 期 间 出 现 , 信息 就 发 送 到 客 户 机 上 。

如 果 使 用 了 sysmessages 系 统 表 , 并 使 用 变 量 msg_str 的 格 式 选 项 定 义 信息 , 那 么 变 量 就 传 送 给 msg_id 。 系 统 存 储 过 程 sp_addmessage 和sp_dropmessage , 用 于 建 立 或 删 除 用 户 定 义 的 错 误 信 息 。

@@ERROR 存 储 最 近 产 生 的 错 误 号 , 缺 省 状 态 下 设 置 为 0 , 严 重 级 别 为 1

到 10 。

语法

RAISERROR ({

[ , argument

[ ,... n ]] )

msg_id | msg_str

} {, severity, state }

[ W ITH option ]

变量

msg_id msg_id 是 用 户 定 义 的 保 存 在 sysmessages 表 中 的错 误 信 息 。 应 使 用 户 定 义 的 错 误 信 息 的 错 误 号大 于 50,000 。Ad hoc 信 息 引 发 错 误 50,000 。msg_id 的 最 大 值 为 2,147,483,647 。

msg_str msg_str 是 最 多 可 达 8000 个 字 符 的 ad hoc 信 息 , 标 准 信 息 ID 为 14,000 。 字 符 % 表 示 这 是 ad hoc 信 息 , 格 式 化 为 :

%[[ flag ][ width ][ precision ][ {h | l} ]]type flag= 对 不 用 单 引 号 的 信 息 , 定 义 其 间 距 和 调 整 的代 码 。

  • - ′ = 域 内 的 左 边 调 整 。

+ = 表 示 带 有 正 或 负 号 的 值 。0= 零 填 充 字 符 数 据 类 型 。

#= 非 十 进 制 数 的 词 根 前 缀 。

  • ′ = 空 格 插 入 正 值 , 使 用 + 标 志 时 可 以 忽 略 。Width= 整

    数 和 最 小 宽 度 , * 表 示 由 精 度 定 义 宽 度 。Precission= 字 符 的 最 大 数 或 小 数 的 最 小 位 数 , * 表 示 由 变 量 定 义 精 度 。

{h | 1}type= 修 改 量 (h 表 示 短 整 型 数 , 或 1 表 示 长整 型 数 ) 用 数 字 类 型 定 义 数 字 变 量 的 容 量 。

类 型 有 :

Di= 带 符 号 的 整 数

:u= 无 符 号 的 整 数

severity

:o= 无 符 号 的 八 进 制 数

:x 或 X= 无 符 号 的 十 六 进 制 数

:P= 指 针

severity 是 此 信 息 的 用 户 定 义 的 严 重 等 级 。1-18: 所 有 用 户

19-25 : 系 统 管 理 员 且 必 须 用 WITHLOG

20-25 : 中 断 客 户 机 连 接 的 致 命 错 误 , 且 在

SQL

Server 错 误 记 录 中 和 NT 事 件 记 录 中 注 册 。

state state 是 表 示 错 误 状 态 的 从 1 到 127 的 任 意 整 数 。

argument argument 表 示 在 msg_str 中 变 量 的 替 代 参 数 , 最大 值 为 20 , 参 数 可 以 局 部 变 量 或 数 据 类 型 为 整 数1 , 整 数 2 、 整 数 4 、 字 符 、 可 变 字 符 、 二 进 制 或可 变 二 进 制 的 常 数 。

Option option 表 示 错 误 的 定 制 选 项 。

LOG : 在 服 务 器 错 误 记 录 和 事 件 记 录 中 记 录 错 误 , 只 能 由 系 统 管 理 员 来 使 用 。

NOWAIT : 信 息 立 即 送 至 客 户 机 。

SETERROR : 不 管 严 重 等 级 是 多 少 , @@error 都 是 ad hoc 信 息 的 msg_id 或 50000 。

示例

下 面 是 两 个 RAISERROR 函 数 的 示 例 :

RAISERROR ( ′ Customerid 4 expects the district of 44.′ ,16,-1) RAISERROR ( ′ The district for customer_id:%d should be between %d and %d .′ ,

16,-1,@ @ customer_id, @ @ m in_dist,@@max_dist)

第 一 个 例 子 中 , 建 立 了 简 单 的 信 息 。 第 二 RAISERROR 动 态 建 立 信 息 。

RAND

RAND 返 回 0 ~ 1 之 间 的 随 机 浮 点 值 。

语法

RAND ([ seed ] )

变 量 seed 决 定 起 始 值 , 它 可 以 为 整 型 数 、 短 整 型 数 、 微 短 整 型 数 据 类 型 。

READTEXT

READTEXT 返 回 文 本 或 图 像 列 中 的 文 本 、 ntext 或 图 像 值 , 它 从 规 定 的 偏 置开 始 , 返 回 规 定 字 节 数 。 可 以 用 TEXTPTR 函 数 获 取 表 格 的 有 效 text_ptr 值 。 参阅 本 章 后 面 的 “ TEXTPTR ” 和 “ SETTEXTSIZE ”。

语法

READTEXT{table.column text_ptr offset size} [ HOLDLOCK ]

变量

table.column 表 格 和 列 的 名 称 。

text_ptr text_ptr 是 二 进 制 (16) 的 有 效 文 本 指 针 。

Offset offset 在 放 入 文 本 或 图 像 数 据 前 要 忽 略 的 字 符 数( 字节 )。 Ntext 数 据 类 型 必 须 以 字 符 方 式 给 出 ( 每 个 数据 两 个 字 节 ), 文 本 或 图 像 数 据 类 型 必 须 以 字 节 的 方式 给 出 。

Size size 是 要 读 取 的 数 据 的 字 节 数 ,其 中 0 表 示 数 据 为 4K 字 节 。

HOLDLOCK 事 务 处 理 结 束 前 锁 定 文 字 值 , 这 些 文 字 值 可 以 读 取 ,

但 不 能 改 变 。

示例

下 面 是 READTEXT 函 数 的 示 例 :

DECLARE @ varbinary(16)

SELECT @pntr = TEXTPTR(MyTable)

READTEXT MyTable.Column1 @pntr 2 55

本 例 读 取 出 MyTable 中 Column1 的 第 3 到 第 57 个 字 符 。

实 型

参 阅 本 章 前 面 的 “ Data Type ”。

RECONFIGURE

RECONFIGURE 更 新 当 前 配 置 , 对 于 某 些 配 置 选 项 , RECONFIGURE 更 新 由sp_configure 修 改 的 当 前 运 行 值 。 对 于 某 些 配 置 选 项 , Microsoft SQL Server 必 须 中 止 再 启 动 , 才 能 更 新 它 们 的 当 前 运 行 值 。

语法

RECONFIGURE [ W ITH OVERRID E]

变量

RECONFIGURE RECONFIGURE 更 新 当 前 配 置 , 对 于 某 些 配 置 选 项 ,

RECONFIGURE 更 新 由 sp_configure 修 改 的 当 前 运行 值 。 它 还 检 查 无 效 值 和 坏 值 。

WITH OVERRIDE WITH OVERRIDE 禁 止 对 允 许 的 更 新 , 恢 复 间 隔 或

时 间 段 配 置 选 项 的 检 查 , 并 用 sp_configure 提供 的 值 重 新 配 置 。

示例

下 面 是 RECONFIGURE WITH OVERRIDE 语 句 的 示 例 :

EXEC sp_configure ′ allow updates′ ,1 RECONFIGURE WITH OVERRIDE

G O

本 例 中 , 重 新 配 置 服 务 器 , 以 允 许 更 新 系 统 表 。 即 使 该 值 为 真 , SQL Server 也 不 通 知 用 户 不 推 荐 该 值 。

REPLACE

REPLACE 用 串 表 达 式 3 取 代 串 表 达 式 1 中 的 串 表 达 式 2 。

语法

REPLACE ( ′ string_expression 1 ′ , ′ string_expression 2 ′ ,

′ string_expression 3 ′ )

变量

′ string_expression 1 ′ ′ string_expression 1 ′ 是 在 其 中 搜 索

string_expression2 的 串 表 达 式 。 可 以 使 用字 符 或 二 进 制 数 据 。

  • string_expression 2 ′ string_expression2 是 在

string_expression1 中 查 找 的 串 表 达 式 , 也是用 string_expression 3 取 代 的 串 表 达 式 。

  • string_expression 3 ′ string_expression 3 是 取 代

string_expression 2 的 新 串 表 达 式 。

示例

下 面 是 REPLACE 的 示 例 :

SELECT REPLACE (′ M yDog ′ , ′ Dog ′ , ′ Cat′ ) 本 例 中 , 用 Cat 取 代 了 MyDog 中 的 Dog , 结 果 为 MyCat 。

REPLICATE

REPLICATE 将 字 符 表 达 式 复 制 用 户 定 义 的 次 数 。

语法

REPLICATE(character_expression , integer_expression)

变量

character_expression character_expression 是 字 符 或 二 进 制 常

数 , 变 量 或 列 。

integer_expression integer_expression 是 一 个 正 整 数 , 表 示

复 制 字 符 表 达 式 的 次 数 。

RESTORE

RESTORE 语 句 恢 复 数 据 库 、 记 录 或 数 据 库 文 件 , 可 以 进 行 以 下 类 型 的 恢 复 : 备 用 服 务 器 的 恢 复 、 整 个 数 据 库 的 恢 复 , 差 异 数 据 库 的 恢 复 ( 差 异 备 份 是 用RESTORE DATABASE 语 句 恢 复 的 ) 、 事 务 处 理 记 录 的 恢 复 、 个 别 文 件 或 文 件 组 的恢 复 。 文 件 或 文 件 组 可 以 从 文 件 或 文 件 组 备 份 中 恢 复 , 或 者 从 整 个 数 据 库 备 份中 恢 复 。 恢 复 文 件 或 文 件 组 时 , 必 须 使 用 事 务 处 理 记 录 。

只 有 RESTORE DATABASE 影 响 返 回 数 据 库 备 份 设 置 的 自 动 关 闭 、 自 动 压 缩 、自 动 剪 切 、 只 有 dbo 使 用 、 只 读 、 单 用 户 、 选 择 / 成 批 复 制 或 检 测 已 拆 分 下 的页 面 等 设 置 。

语法

恢 复 整 个 数 据 库 的 语 法 :

RESTORE DATABASE { database_name | @database_name_var }

[ FROM <backup_device> [ ,... n ]]

[ W ITH

[ DBO_ONLY ]

[[ ,] FILE = file_number ]

[[ ,] MEDIANAME = { media_name | @media_name_variable } ]

[[ , ] M O V E ′ logical_file_name ′ TO

′ ]

[ ,...p ]

′ operating_system_file_name

[[ ,] { NORECOVERY | RECOVERY | STANDBY =

}]

[[ ,] {NOUNLOAD | UNLOAD} ]

[[ ,] REPLACE ]

[[ ,] RESTART ]

[[ ,] STATS [ = percentage ]]

恢 复 特 定 文 件 或 文 件 组 的 语 法 :

undo_file_name

RESTORE DATABASE {

database_name

| @database_name_var }

<file_or_filegroup> [ ,... m ]

[ FROM <backup_device> [ ,... n ]]

[ W ITH

[ DBO_ONLY ]

[[ ,] FILE = file_number ]

[[ ,] MEDIANAME = {

media_name |

@media_name_variable } ]

[[ ,] (NORECOVERY |RECOVERY | STANDBY =

[[ ,] {NOUNLOAD | UNLOAD} ]

[[ ,] REPLACE ]

[[ ,] RESTART ]

[[ ,] STATS [ = percentage ]]

恢 复 事 务 处 理 记 录 的 语 法 :

undo_file_name } ]

RESTORE LOG {

database_name

| @database_name_var }

[ FROM<backup_device> [ ,... n ]]

[ W ITH

[ DBO_ONLY ]

[[ ,] FILE = file_number ]

[[ ,] MEDIANAME = {

media_name

| @media_name_variable} ]

[[ ,] M O V E ′ logical_file_nam e′ TO ′ operating_system_file_nam e′ ]

[ ,... p ]

[[ ,] {NORECOVERY | RECOVERY | STANDBY =

[[ ,] {NOUNLOAD | UNLOAD} ]

[[ ,] RESTART ]

[[ ,] STATS [ = percentage ]]

[[ ,] STO PAT = { data_time | @date_time_var } ]

undo_file_name} ]

<backup_device> :: =

{

{ ′ backup_device_nam e′ | @backup_device_name_var}

| {DISK | TAPE | PIPE} =

{ ′ temp_backup_device ′ | @ temp_backup_device_var}

}

<file_or_filegroup> :: =

{

FILE = { logical_file_name | @ logical_file_name_var}

|

FILEGROUP = { logical_filegroup_name | @ logical_filegroup_name_var }

}

变量

DATABASE 如 果 使 用 DATABASE , 就 通 知 Microsoft SQL Server 恢 复 完 整 的 数 据 库 。 也 可 以 和 一 系 列 文 件 或 文 件 组一 起 使 用 DATABASE , 限 制 将 数 据 库 恢 复 到 指 定 的 文件 或 文 件 组 。 现 在 , Microsoft SQL Server 恢 复 备份 文 件 时 , 只 备 份 足 以 创 建 带 有 完 整 事 务 处 理 的 数据 库 的 记 录 。

{database_name |

@database_name_var}

database_name 是 与 恢 复 程 序 有 关 的 数 据 库 的 名 称 。

可 以 用 变 量 或 常 数 串 的 形 式 传 输 数 据 库 名 称 。

FROM FROM 限 定 从 哪 个 备 份 设 备 处 恢 复 。 忽 略 FROM 子 句可 用 于 恢 复 用 NORECOVERY 选 项 恢 复 的 非 可 疑 数 据库 , 或 者 用 于 转 换 至 备 用 服 务 器 , 如 果 省 去 FROM 子句 ,必 须 给 出 NORECOVERY ,RECOVERY ,或 者 STANDBY 。

<backup_device> backup_device 是 sp-addumpdevice 建 立 的 备 份 设

备 的 逻 辑 名 称 。

{DISK | TAPE | PIPE}= ′

temp_backup_device

′ |

@temp_backup_device_ var

允 许 从 指 定 的 磁 盘 、 磁 带 或 管 道 设 备 中 恢 复 备 份 。DISK= ′ c: \ mssql7 \ backup \ myback.dat ′ 或

TAPE= ′ \ \ . \ TAPE0 ′ 。 管 道 类 型 的 设 备 可 用 通 过第 三 方 厂 商 使 用 的 客 户 应 用 程 序 来 命 名 管 道 。

n n 表 示 前 面 的 项 可 以 重 复 。

DBO_ONLY DBO_ONLY 表 示 只 有 Database Owner 可 以 访 问 恢 复

的 数 据 库 。

FILE=file_number file_number 是 要 恢 复 为 显 示 在 介 质 上 的 备 份 集 的

数 目 。

MEDIANAME={media_nam e |

@media_name_variable

}

MOVE ′

logical_file_name ′ TO ′

operating_system_fil e_name ′

MEDIANAME 为 整 个 备 份 集 的 介 质 名 称 。 它 必 须 与 备份 卷 中 的 介 质 名 称 相 符 。 在 BACKUP 和 RESTORE 操 作中 使 用 介 质 名 称 是 一 种 可 靠 的 检 查 。

MOVE 决 定 将 logical_file_name 移 至operating_system_file_name 中 , 缺 省 值 为 将logical_file_name 恢 复 至 其 开 始 位 置 。 可 以 用 此变 量 将 数 据 库 重 新 定 位 到 另 一 个 服 务 器 上 。

p p 表 示 可 以 列 出 多 个 MOVE 语 句 。

NORECOVERY 不 重 新 运 行 未 提 交 的 事 务 处 理 。 必 须 将 NORECOVERY

或 RECOVERY 指 定 为 缺 省 值 。 恢 复 数 据 库 和 事 务 处 理记 录 时 , 除 最 后 一 个 RESTORE 以 外 都 使 用NORECOVERY 。 当 所 有 的 事 务 处 理 记 录 都 没 有 应 用 时 , NORECOVERY 使 数 据 库 不 能 使 用 。 如 果 使 用 STANDBY , 在 只 读 模 式 中 能 使 用 数 据 库 。 RECOVERY 为 缺 省 值 。

RECOVERY 重 新 运 行 未 提 交 的 事 务 处 理 , 使 数 据 库 可 用 。 当 另一 个 事 务 处 理 记 录 应 用 于 数 据 库 时 , 不 应 指 定RECOVERY 。

STANDBY=undo_file_na me

这 是 存 储 数 据 以 撤 消 恢 复 影 响 的 文 件 名 。 与NORECOVERY 不 同 , 可 以 查 看 事 务 处 理 记 录 恢 复 之 间的 数 据 库 。 如 果 文 件 不 在 操 作 系 统 上 , 就 建 立 文 件 。如 果 文 件 存 在 , 就 覆 盖 文 件 。

NOUNLOAD NOUNLOAD 表 示 恢 复 以 后 , 磁 带 不 会 自 动 从 磁 带 驱 动器 上 卸 载 。 该 设 置 一 直 保 持 此 状 态 , 直 到 恢 复 指 令中 发 出 UNLOAD 改 变 该 设 置 为 止 。

UNLOAD 此 变 量 决 定 恢 复 完 成 以 后 , 磁 带 将 自 动 倒 带 并 卸 载 。这 是 对 磁 带 驱 动 器 的 缺 省 操 作 , 设 置 一 直 保 持 此 状态 , 直 到 恢 复 指 令 中 发 出 NOUNLOAD 改 变 该 设 置 为止 。

REPLACE REPLACE 表 示 SQL Server 将 删 除 数 据 库 , 并 根 据 备份 集 规 范 重 新 建 立 数 据 库 。 如 果 不 使 用 REPLACE 选项 , 下 列 情 况 下 不 恢 复 数 据 库 :

数 据 库 已 经 存 在 于 服 务 器 中 — — 没 有 REPLACE , 不会 进 行 恢 复 。

数 据 库 名 称 与 备 份 集 中 的 数 据 库 名 称 不 相 同 — — 没有 REPLACE , 不 会 进 行 恢 复 。

数 据 库 中 的 文 件 集 合 与 备 份 集 中 包 含 的 数 据 库 文 件集 不 一 致 — — 没 有 REPLACE , 不 会 进 行 恢 复 。

恢 复 过 程 中 Microsoft SQL Server 不 分 辨 文 件 容 量的 差 别 , 进 行 恢 复 时 , 也 不 检 查 文 件 容 量 的 差 别 。

RESTART RESTART 是 中 断 时 允 许 重 新 开 始 恢 复 。 要 重 新 开 始恢 复 , 重 复 RESTORE 指 令 并 指 定 RESTART 选 项 。 但是 要 注 意 , 该 选 项 只 能 用 于 从 磁 带 介 质 中 恢 复 , 以及 通 过 多 个 介 质 卷 写 入 的 恢 复 。

STATS [ =percentage ] 如 果 指 定 STATS , 将 显 示 完 成 的 百 分 比 统 计 数 字 。

如 果 不 提 供 STATS , 缺 省 值 为 10% 。

<file_or_filegroup> 当 数 据 库 的 容 量 太 大 , 从 性 能 上 讲 不 适 于 全 集 数 据

库 备 份 时 , 可 使 用 此 变 量 。 此 变 量 可 以 是 一 个 文 件或 多 个 文 件 , 也 可 以 是 一 个 文 件 组 或 者 多 个 文 件 组 。

FILE={logical_file_n ame |

@logical_file_name_v ar} FILEGROUP={logical_f ilegroup_name | @logical_filegroup_n ame_var}

FILE 定 义 要 包 含 在 数 据 库 恢 复 的 文 件 。

FILEGROUP 定 义 要 包 括 在 数 据 库 恢 复 中 的 文 件 组 。最 后 一 个 文 件 或 文 件 组 的 恢 复 操 作 将 文 件 向 前 滚 动到 数 据 库 的 其 余 文 件 处 时 , 必 须 立 即 将 记 录 应 用 到数 据 库 文 件 上 。 如 果 备 份 以 后 文 件 没 有 修 改 , 不 必使 用 记 录 , 如 果 最 后 一 次 备 份 这 些 文 件 后 , 在 文 件组 上 建 立 了 索 引 , 就 可 能 需 要 多 个 文 件 组 。

  1. m 表 示 一 个 RESTORE 语 句 中 可 以 使 用 多 个 文 件 和 文

件 组 。

LOG 只 恢 复 事 务 处 理 记 录 的 备 份 。 要 使 用 多 个 事 务 处 理

STOPAT=date_time | @data_time_var

记 录 , 除 最 后 一 个 记 录 的 恢 复 以 外 , 都 必 须 使 用NORECOVERY 变 量 。

STOPAT 控 制 停 止 恢 复 的 准 确 日 期 和 时 间 , 只 有 在STOPAT 日 期 和 时 间 以 前 提 交 的 事 务 处 理 能 恢 复 到 数据 库 中 。

示例

下 面 是 用 文 件 、 文 件 组 和 事 务 处 理 记 录 恢 复 数 据 库 的 示 例 :

RESTORE DATABASE MyDB

FILE = ′ M yDB_data_1 ′ , FILE = ′ M yDB_data_2 ′ ,

FILEGROUP = ′ My_filegroup ′ FROM MyDB_1

W ITH NORECOVERY G O

RESTORE LOG MyDB FROM MyDBLog1

G O

本 例 中 , 通 过 恢 复 MyDB 数 据 库 的 文 件 、 文 件 组 和 记 录 恢 复 了 数 据 库 。

示例

下 面 是 恢 复 整 个 数 据 库 和 差 异 备 份 的 示 例 :

RESTORE DATABASE MyDB FROM MyDB_1

W ITH NORECOVERY G O

RESTORE DATABASE MyDB FROM MyDB_1

W ITH FILE = 2 G O

本 例 中 , 恢 复 了 整 个 数 据 库 和 差 异 数 据 库 。 差 异 数 据 库 作 为 文 件 2 放 在 备份 文 件 中 。

示例

下 面 是 恢 复 整 个 数 据 库 和 事 务 处 理 记 录 的 示 例 :

RESTORE DATABASE MyNwind

FROM MyNwind_1

W ITH NORECOVERY ,

M O V E ′ M yDB ′ TO ′ C :\ mssql7 \ data \ M yNewDB.mdf ′ , M O V E ′ M yDBLog1 ′ TO ′ C :\ mssql7 \ data \ M yNewDB.ldf ′ RESTORE LOG MyDB

FROM MyDBLog1 W ITH RECOVERY

本 例 中 , 恢 复 了 数 据 库 与 事 务 处 理 记 录 。 MOVE 语 句 将 要 恢 复 的 数 据 和 记 录文 件 移 动 到 指 定 的 位 置 。

示例

下 面 是 用 STOPAT 恢 复 到 指 定 时 刻 的 示 例 :

RESTORE DATABASE MyDB FROM MyDB_1,MyDB_2

W ITH NORECOVERY G O

RESTORE LOG MyDB

FORM MyDBLog1

W ITH NORECOVERY G O

RESTORE LOG MyDB FROM MyDBLog2

W ITH RECOVERY,STOPAT = ′ Sept 15,1998 12:00 AM ′

G O

本 例 中 , 数 据 库 恢 复 到 1998 年 9 月 15 日 的 上 午 12 : 00 。

示例

下 面 是 恢 复 整 个 数 据 库 备 份 的 示 例 :

RESTORE DATABASE MyDB FROM MyDB_1

本 例 中 , 恢 复 了 整 个 数 据 库 。

RESTORE FILELISTONLY

RESTORE FILELISTONLY 返 回 备 份 集 中 一 系 列 的 数 据 库 和 记 录 文 件 。

语法

RESTORE FILELISTONLY

FROM<backup_device>

[ W ITH

{FILE = file_number>

[[ ,] {NOUNLOAD | UNLOAD} ]

<backup_device>::=

{

{ ′ backup_device_nam e′ | @ backup_device_name_var }

| {DISK | TAPE | PIPE}=

{ ′ temp_backup_device ′ | @ temp_backup_device_var }

}

式 中 各 个 变 量 参 阅 RESTORE 语 句 。

RESTORE HEADERONLY

RESTORE HEADERONLY 返 回 备 份 设 备 中 所 有 备 份 集 的 备 份 标 题 信 息 。

语法

RESTORE HEADERONLY

FROM <backup_device>

[ W ITH {NOUNLOAD | UNLOAD} ]

<backup_device>::=

{

{ ′ backup_device_nam e′ | @backup_device_name_var }

|{ DISK | TAPE | PIPE } =

{ ′ temp_backup_device ′ | @ temp_backup_device_var }

}

式 中 各 变 量 参 阅 RESTORE 语 句 。

RESTORE LABELONLY

RESTORE LABELONLY 返 回 备 份 设 备 中 备 份 介 质 的 信 息 :

语法

RESTORE LABELONLY

FROM <backup_device>

<backup_device>::=

{

{ ′ backup_device_nam e′ | @backup_device_name_var }

|{ DISK | TAPE | PIPE } =

{ ′ temp_backup_device ′ | @ temp_backup_device_var }

}

式 中 各 变 量 参 阅 RESTORE 语 句 。

RESTORE VERIFYONLY

RESTORE VERIFYONLY 检 验 备 份 集 是 否 完 整 , 并 检 验 是 否 所 有 的 卷 都 能 读 取 。它 不 恢 复 备 份 或 检 验 数 据 。

语法

RESTORE VERIFYONLY

FROM <backup_device> [ ,... n ]

[ W ITH

[ FILE = file_number ]

[[ ,] {NOUNLOAD | UNLOAD} ]

[[ ,] LOADHISTORY ]

<backup_device>::=

{

{ ′ backup_device_nam e′ | @backup_device_name_var }

| {DISK | TAPE | PIPE} =

{ ′ temp_backup_device ′ | @ temp_backup_device_var }

}

式 中 各 变 量 参 阅 RESTORE 语 句 。

RETURN

RETURN 语 句 从 查 询 或 过 程 中 退 出 , 而 不 执 行 RETURN 语 句 后 面 的 语 句 。 用 户定 义 的 返 回 状 态 值 不 应 与 SQL Server 保 留 的 值 ( 0 ~ -99 ) 有 冲 突 。

如 果 没 有 提 供 返 回 值 , 就 使 用 SQL Server 值 。 SQL Server 现 在 使 用 值 0 ~

-14 。 这 些 值 与 其 使 用 说 明 如 下 所 示 :

0= 成 功 地 执 行 完 程 序 , -1= 对 象 失 踪 ( 不 见 ) , -2= 数 据 类 型 有 错 误 , -3= 过 程被 选 择 未 死 锁 牺 牲 品 , -4= 许 可 有 错 误 , -5= 语 法 有 错 误 , -6= 其 他 用 户 错 误 , -7= 资 源 错 误 , -8= 非 致 命 内 部 错 误 , -9= 达 到 系 统 极 限 , -10= 致 命 内 部 矛 盾 , -11= 致 命 内 部 矛 盾 , -12= 表 格 或 索 引 崩 溃 , -13= 数 据 库 崩 溃 , -14= 硬 件 有 错 误

语法

RETURN [ (integer_expression) ]

变 量 integer_expression 是 返 回 至 调 用 存 储 过 程 或 者 应 用 程 序 的 整 数 值 。

示例

下 面 是 使 用 RETURN 的 示 例 :

CREATE PROC MyProc A S

DECLARE @rtn int SELECT *

FROM SYOBJECTS

If @@error = 0 BEGIN

SELECT @rtn = 0 END

ELSE BEGIN

SELECT @rtn = 1 RETURN @rtn @END

G O

本 例 中 , 通 过 执 行 存 储 过 程 MyProc , 并 检 查 成 功 或 失 败 的 返 回 代 码 , 就 可以 进 一 步 操 作 。

DECLARE @rtn int EXEC @rtn = MyProc IF @rtn = 0

PRINT ′ Successful execution of MyProc stored procedure ′

ELSE

PRINT ′ Failed execution of MyProc stored procedure ′ G O

REVERSE

REVERSE 返 回 字 符 表 达 式 的 倒 序 。 如 果 传 输 ′ pam ′ , 将 接 收 到 ′ map ′ 。

语法

REVERSE(character_expression)

变 量 character_expression 是 包 括 字 母 和 数 字 的 字 符 或 二 进 制 表 达 式 、 常数 、 变 量 或 列 。

REVOKE

参 阅 第 5 章 。

RIGHT

RIGHT 返 回 字 符 串 中 从 右 数 给 定 字 符 数 的 字 符 串 。

语法

RIGHT(character_expression , integer_expression)

变量

character_expression character_expression 是 字 符 或 二 进 制 包 括

字 母 和 数 字 的 表 达 式 、 常 数 、 变 量 或 者 列 。integer_expression integer_expression 是 正 整 数 。

ROLLBACK TRANSACTION

ROLLBACK TRANSACTION 删 除 开 始 进 行 事 务 处 理 以 来 的 更 改 的 所 有 数 据 , 调用 它 可 将 事 务 处 理 返 回 到 保 存 点 或 事 务 处 理 的 起 始 点 。

语法

ROLLBACK [ TRAN [ SACTION ] [ transaction_name | @tran_name_variable |

savepoint_name | @savepoint_variable ] ]

变量

transaction_name transaction_name 是 BEGIN TRANSACTION 给 事

务 处 理 起 的 名 称 。

@tran_name_variable @tran_name_variable 是 用 户 定 义 的 变 量 名

称 , 它 保 存 数 据 类 型 为 CHAR , VARCHAR , NCHAR , 或 者 NVARCHAR 的 事 务 处 理 名 。

savepoint_name savepoint_name 是 SAVE TRANSACTION 语 句 给

出 的 savepoint_name 。

@savepoint_variable @savepoint_variable 是 用 户 定 义 的 变 量 名

称 , 它 保 存 数 据 类 型 为 CHAR , VARCHAR , NCHAR , 或 者 NVARCHAR 的 保 存 点 的 名 称 。

ROLLBACK WORK

除 ROLLBACK TRANSACTION 可 以 接 收 事 务 处 理 名 称 以 外 , ROLLBACK WORK 与ROLLBACK TRANSACTION 相 同 。

语法

ROLLBACK [ WORK ]

ROUND

ROUND 返 回 给 出 的 数 学 表 达 式 , 并 四 舍 五 入 至 指 定 的 长 度 或 精 度 。

语法

ROUND(numeric_expression , length [ ,function ] )

变量

numeric_expression numeric_expression 可 以 是 小 数 表 达 式 、 浮 点 数

表 达 式 、 整 型 数 表 达 式 、 货 币 表 达 式 、 数 字 表 达式 、 实 数 表 达 式 、 短 整 型 数 表 达 式 、 小 货 币 表 达式 或 微 短 整 型 数 表 达 式 。

length length 是 四 舍 五 入 的 精 度 。 它 可 以 是 微 短 整 型数 、 短 整 型 数 或 整 型 数 。 当 长 度 为 负 时 , 数 字 表达 式 在 小 数 点 左 边 进 行 四 舍 五 入 。

function function 是 微 短 整 型 数 、 短 整 型 数 或 整 型 数 , 是要 执 行 的 操 作 。 如 果 其 值 为 0 , 将 数 字 表 达 式 四舍 五 入 。 如 果 其 值 不 为 0 , 将 数 字 表 达 式 舍 位 。

RTRIM

RTRIM 删 去 尾 部 的 空 格 。

语法

RTRIM(character_expression)

变 量 character_expression 是 字 符 或 二 进 制 包 含 字 母 和 数 字 的 表 达 式 , 常量 、 变 量 或 列 。

SAVE TRANSACTION

SAVE TRANSACTION 在 事 务 处 理 中 建 立 保 存 点 。

语法

SAVE TRAN [ SACTION ] {savepoint_nam e| @ savepoint_variable}

变量

savepoint_name

@savepoint_variable

存 储 点 的 名 称 。

用 户 定 义 变 量 的 名 称 , 它 存 储 数 据 类 型 为

CHAR ,

VARCHAR NCHAR 或 NVARCHAR 的 存 储 点 名 。

SELECT

SELECT 语 句 返 回 数 据 库 表 中 的 行 。

语法

SELECT

[ ALL | DISTINCT ]

TOP n

[ PERCEN T ] [ W ITH TIE S]

{ <result_data>:: =

{ *

| [ column_heading = ] column_name

| column_name [[ AS ] column_heading ]

| column_name AS expression

| expression [ A S ] column_heading ]

| GROUPING ( column_name )

| IDENTITYCOL

| ROWGUIDCOL

| local_or_globa1_variable

| new_column_name = IDENTITY( data_type,seed,increment )

| fulltext_table. RANK

} [ ,... n ]

| <variable_assignment>:: = { @local_variable = expression}[ ,...n ]

}

[ INTO new_table_name ]

[ FROM

{

<table_or_view>

| ( select_statement ) [ A S ] alias

| <table_or_view>

[ {CROSS | INNER }

|

{ FULL

| LEFT

| RIGHT

} [ OUTER ] [ <join_hint> ] JOIN <table_or_view> ON search_conditions

| CONTAINSTABLE

( table,{ column | *} ,′ < contains_search_condition> ′

)

| FREETEXTTABLE

( table,{colunn |*},′ freetext_string ′

)

} [ ,...n ]

[ WHERE

{ [ <search_conditions>::=

[ N O T ] <predicate> [ {AND | OR} [ NOT ] <predicate> ]

][ ,... n ]

[ | CONTAINS

( { column | *} ,′ <contains_search_condition> ′

)

| FREETEXT (

{ column | * }, ′ freetext_string ′

)

][ ,... n ]

| fulltext_table.fulltext_key_column = alias. [ KEY ]

}

[ {

GROUP BY [ ALL ] { column_name } [ ,... n ]]

[ W ITH {CUBE | ROLLUP} ]

} ]

[ HAVING search_conditions ]

[ ORDER BY

{

{

{ table.| view.}column_name

| select_list_number

| expression

} [ ASC | DESC ]

} [ ,... n ]

[ COMPUTE row_aggregate({expression | column_name} [ ,...n ] )

[ BY { expression | column_name )[ ,...n ]]

[ FOR BROWSE ]

[ OPTION (<query_hint> [ ,...

n

] )]

<table_or_view>::=

{

table

[[ AS ]

alias

[ W ITH(<table_hint> [ ...

m

] )]

|

view

[[ AS ]

alias

| OPENROWSET(

{

′ provider_nam e′ ,

′ datasource ′ ;′ user_id ′ ;′ password ′

| ′ provider_string ′

[ catalog. ][ schema.] object_name

| ′ query ′

} )

| OPENQUERY( linked_server, ′ query ′ )

}

<table_hint>::= ([ INDEX=

{

index_name

| index_id

} [ ,... n ]

[ FASTFIRSTROW ]

[ HOLDLOCK ][ NOLOCK ][ PAGLOCK ][ READCOMMITTED ]

[ READPAST ][ READUNCOMMITTED ][ REPEATABLEREAD ]

[ ROWLOCK ][ SERIALIZABLE ][ TABLOCK ][ TABLOCKX ]

[ UPDLOCK ] )

<join_hint>::=

{ HASH

| LOOP

| MERGE

}

<query_hint>::=

{ {HASH | ORDER} GROUP

| { MERGE | HASH | CONCAT}UNION

| FAST n

| FORCE ORDER

| ROBUST PLAN

}

变量

SELECT ALL ALL 允 许 在 结 果 集 中 包 含 相 同 的 行 。

DISTINCT DISTINCT 只 检 索 结 果 集 中 的 独 有 的 行 。

TOP n TOP 表 示 只 返 回 前 n 行 。

RERCENT PERCENT 返 回 前 n % 行 。

WITH TIES WITH TIES 只 和 ORDER BY 子 句 一 起 使 用 ,也 可 与 TOP 和 PERCENT 一 起 使 用 。 如 果 ORDER BY 列 中 具 有 相同 的 值 的 行 彼 此 相 联 系 , 有 时 WITH TIES 返 回 的 行数 多 于 n( 用 户 定 义 的 值 ) 。

<result_data> result_data 是 希 望 SQL Server 返 回 的 值 。 它 可 以

是 一 列 ( 或 几 列 ) 、 表 达 式 、 变 量 的 赋 值 或 者 星 号(*) , * 表 示 表 格 中 所 有 的 列 。

Column_heading 如 果 希 望 建 立 一 个 自 己 想 要 的 列 标 题 , 可 以 用

Column_heading 替 代 SQL Server 提 供 的 列 标 题 。可 以 使 用 下 述 语 法 :

column_name AS column_heading column_heading= column_name column_name column_heading

GROUPING GROUPING 跟 GROUP BY 和 CUBE 或 ROLLUP 一 起 使 用 ,

适 用 于 返 回 集 中 的 列 名 , 也 就 是 GROUP BY 列 。GROUPING 输 出 一 附 加 列 , 如 果 列 值 为 1 , 表 示 CUBE 或 ROLLUP 添 加 累 加 行 , 如 果 列 值 为 NULL 或 0 值 , 表 示 返 回 集 中 的 列 值 无 效 。

IDENTITYCOL IDENTITYCOL 表 示 表 格 中 标 识 列 的 名 称 。ROWGUIDCOL ROWGUIDCOL 表 示 唯 一 标 识 符 列 是 一 行 全 局 唯 一 标 识

符 列 。

local_or_global_vari able

local_or_global_variable 指 定 局 部 或 全 局 变 量 的名 称 。

new_column_name new_column_name 定 义 数 据 类 型 为 NOT NULL 微 短 整

数 、 短 整 型 数 、 整 型 数 、 小 数 或 数 字 的 新 列 。

IDENTITY IDENTITY 与 SELECT INTO 一 起 使 用 , 表 示 该 列 将 使用 IDENTITY 属 性 。

data_type data_type 指 标 识 列 的 数 据 类 型 , 它 可 以 为 整 型 数 、短 整 型 数 、 微 短 整 型 数 、 小 数 或 数 字 。

seed seed 和 IDENTITY 一 起 使 用 , 是 表 格 中 第 一 行 的 值 。

缺 省 值 为 1 。

increment increment 是 将 下 一 行 添 加 到 表 格 时 根 值 的 增 量值 。 然 后 , 它 从 添 加 的 最 后 一 行 开 始 递 增 , 一 直 到插 入 表 格 中 的 下 一 行 。

  1. n 表 示 前 面 的 项 可 以 重 复 。

fulltext_table fulltext_table 是 为 全 文 查 询 标 志 的 表 格 。RANK RANK 和 全 文 查 询 一 起 使 用 , 显 示 每 行 的 序 列 值 。

<variable_assignment

>

@local_variable=expr ession

variable_assignment 是 局 部 变 量 的 赋 值 。

@local_variable=expression 是 局 部 变 量 的 赋 值 。如 果 可 能 , 最 好 使 用 SET 语 句 , 因 为 , 如 果 SELECT 语 句 返 回 多 个 值 , 就 将 变 量 设 置 为 所 返 回 的 最 后 一行 。 如 果 不 返 回 行 , 变 量 将 保 持 SELECT 语 句 执 行前 的 值 。 如 果 子 查 询 程 序 进 行 赋 值 , 又 没 有 返 回 行 , 值 就 设 置 为 NULL 。

INTO new_table_name INTO new_table_name 用 返 回 集 中 的 列 建 立 表 格 。

<table_or_view> <table_or_view> 是 表 格 或 视 图 的 名 称 。

alias alias 是 列 或 视 图 的 别 名 。 派 生 表 需 要 使 用 别 名 。它 通 常 比 实 际 名 称 要 短 , 这 样 , 在 SELECT 语 句 中使 用 的 两 个 表 格 有 相 同 的 列 名 时 , 更 容 易 区 分 含 义不 明 的 相 同 列 名 。

<table_hint> table_hint 指 示 SQL Server 使 用 优 化 方 法 。 表

INDEX={index_name | index_id}

格 提 示 应 放 在 圆 括 号 内 。虽 然 提 供 表 格 提 示 ,但 SQL Server 通 常 能 自 己 找 出 最 佳 优 化 方 式 。 有 效 的 表格 提 示 包 括 : PAGLOCK , NOLOCK , ROWLOCK , TABLOCK , TAB -LOCKX , HOLDLOCK , NOLOCK , READCOMMITED ,REPEATABLEREAD ,SERIALIZABLE , NOLOCK 和 READPAST 。

INDEX= 表 格 使 用 的 索 引 名 称 。 出 现 成 簇 索 引 表 示

INDEX=0 使 用 成 簇 索 引 ;INDEX=1 进 行 成 簇 索 引 扫描 。没 有 成 簇 索 引 时 使 用 INDEX=0 将 进 行 表 格 扫 描 , 使 用 INDEX=1 会 出 错 。

n n 表 示 前 面 的 项 可 以 重 复 。

FASTFIRSTROW FASTFIRSTROW 与 使 用 FAST 1 相 同 , 表 示 优 化 程 序

将 尽 快 返 回 第 一 行 , 并 继 续 生 成 查 询 程 序 中 的 其 他行 。

HOLDLOCK HOLDLOCK 和 SERIALIZABLE 相 同 , 和 FOR BROWSE 子

句 相 互 排 斥 。 它 包 含 事 务 处 理 期 间 的 共 享 锁 定 , 而不 是 释 放 完 成 页 面 的 存 取 。

NOLOCK NOLOCK 进 行 无 效 的 读 取 , 且 不 进 行 共 享 或 单 独 的 锁定 。 它 可 以 读 取 未 提 交 的 事 务 处 理 , 即 NOLOCK 可以 读 取 不 一 致 的 数 据 , 并 可 能 引 起 错 误 605 , 606 , 624 , 或 625; 这 表 示 应 再 试 着 执 行 一 次 语 句 。

PAGLOCK PAGLOCK 发 出 共 享 页 面 的 锁 定 , 而 不 是 共 享 表 格 的

锁 定 。

READCOMMITTED READCOMMITTED 通 过 保 存 共 享 锁 定 来 读 取 数 据 , 且

读 取 数 据 时 , 不 允 许 无 效 读 取 , 而 允 许 修 改 数 据 , 此 时 READCOMMITTED 提 供 较 高 的 兼 容 性 , 这 可 导 致非 重 复 性 读 取 。

READPAST READPAST 用 行 级 锁 定 跳 行 。READUNCOMMITTED READUNCOMMITTED 和 NOLOCK 相 同 。

REPEATABLEREAD REPEATABLEREAD 用 于 在 查 询 中 所 有 的 数 据 上 设 置 锁

定 , 但 仍 允 许 其 他 用 户 插 入 行 , 仍 能 生 成 幻 象 行 , 并 允 许 缺 省 状 态 下 较 少 的 并 发 性 。

ROWLOCK ROWLOCK 产 生 共 享 行 锁 定 , 而 不 是 共 享 页 面 或 共 享表 格 锁 定 。

SERIALIZABLE SERIALIZABLE 与 HOLDLOCK 相 同 。

TABLOCK TABLOCK 在 表 格 上 产 生 共 享 表 格 锁 定 , 直 到 语 句 结束 。

TABLOCKX TABLOCKX 产 生 专 用 表 格 锁 定 , 直 到 语 句 或 事 务 处 理结 束 。

UPDLOCK UPDLOCK 产 生 更 新 锁 定 , 直 到 事 务 处 理 或 语 句 结 束 。

<join_hint> join_hint 在 联 结 的 执 行 策 略 方 面 指 导 SQL

Server 。

{LOOP | HASH | MERGE} {LOOP | HASH | MERGE} 允 许 通 过 查 询 优 化 程 序 控 制

所 使 用 的 联 结 策 略 , 并 根 据 指 定 的 内 容 执 行 嵌 套 的

循 环 连 接 、 散 列 连 接 或 合 并 连 接 。

OpenRowset OpenRowset 定 义 从 数 据 源 中 查 询 远 程 数 据 的 联 接 信

息 。

OpenQuery OpenQuery 用 来 执 行 通 过 查 询 。

select_statement select_statement 是 从 数 据 库 中 返 回 行 的 查 询 程

序 。

CROSS JOIN CROSS JOIN 是 返 回 行 的 两 个 表 格 的 交 叉 积 , 就 象 没

有 WHERE 语 句 一 样 。

INNER INNER 连 接 是 缺 省 设 置 , 它 返 回 匹 配 的 行 。

LEFT [ OUTER ] 即 使 RIGHT 表 格 中 没 有 对 应 的 行 , LEFT [ OUTER ]

连 接 , 返 回 左 边 表 格 中 的 所 有 行 ; 但 是 RIGHT 表 格中 的 列 为 NULL 。

RIGHT [ OUTER ] 即 使 LEFT 表 格 中 没 有 对 应 的 行 , RIGHT [ OUTER ]

连 接 , 返 回 右 边 表 格 中 的 所 有 行 ; 但 是 LEFT 表 格 中的 列 为 NULL 。

FULL [ OUTER ] FULL [ OUTER ] 联 接 用 于 返 回 左 边 或 右 边 表 格 中 不

符 合 连 接 条 件 的 行 , 另 一 表 格 中 返 回 为 NULL 的 行 , 以 及 符 合 联 接 标 准 的 其 它 匹 配 行 。

CONTAINSTABLE CONSTAINSTABLE 返 回 精 确 匹 配 或 不 太 精 确 匹 配 的 字

符 列 的 结 果 表 。

FREETEXTTABLE FREETEXTTABLE 返 回 意 义 匹 配 而 不 是 单 词 匹 配 的 字

符 列 结 果 表 。

<search_conditions> search_conditions 是 查 询 中 限 制 的 条 件 。CONTAINS CONTAINS 搜 索 精 确 或 者 不 太 精 确 匹 配 的 字 符 列 。

FREETEXT FREETEXT 为 搜 索 意 义 匹 配 的 字 符 列 。fulltext_table fulltext_table 是 为 全 文 查 询 标 志 的 表 格 名 或 别

名 。

fulltext_key_column fulltext_key_column 是 为 全 文 查 询 标 志 的

fulltext_table 中 的 全 文 关 键 列 。

[ KEY ] [ KEY ] 表 示 选 择 满 足

<contains_search_condition> 的 行 作 为 选 定 范围 。

GROUP BY GROUP BY 将 行 分 成 组 , 这 些 组 在 GROUP BY 列 中 有相 同 的 值 , SELECT 语 句 还 可 以 为 每 一 组 的 列 总 汇 包含 集 合 函 数 。

ALL ALL 表 示 即 使 不 符 合 WHERE 子 句 中 的 搜 索 条 件 , 也返 回 所 有 的 组 和 结 果 集 。 对 于 不 符 合 搜 索 条 件 的组 , 在 总 汇 列 中 返 回 NULL 。 ALL 必 须 跟 在 GROUP BY 子 句 后 。

CUBE CUBE 不 仅 返 回 GROUP BY 集 合 行 , 而 且 返 回 总 汇 行 。这 些 总 汇 行 在 GROUP BY 子 句 中 的 列 或 表 达 式 的 子集 上 的 组 合 来 建 立 , 称 为 超 集 合 行 。

ROLLUP ROLLUP 表 示 超 集 合 子 集 , 它 和 GROUP BY 子 句 中 通常 的 集 合 行 一 起 建 立 。

HAVING HAVING 定 义 GROUP BY 子 句 的 条 件 , 与 WHERE 子 句定 义 SELECT 语 句 中 单 独 行 的 条 件 相 同 。

ORDER BY ORDER BY 确 定 SQL Server 返 回 的 列 的 排 列 次 序 。select_list_number select_list_number 是 <result_data> 中 表 达 式 的

位 置 , 此 数 值 可 以 代 替 ORDER BY 子 句 中 的 表 达 式 。

ASC ASC( 递 增 ) 表 示 ORDER BY 子 句 返 回 的 分 类 数 据 由 小到 大 排 列 。

DESC DESC( 递 减 ) 表 示 ORDER BY 子 句 返 回 的 分 类 数 据 从最 大 开 始 排 列 。

COMPUTE COMPUTE 在 结 果 集 中 建 立 行 集 合 函 数 的 汇 总 行 。COMPUTE 子 句 用 于 计 算 子 组 合 中 的 总 计 值 , 或 用 于对 同 一 组 计 算 多 个 集 合 函 数 , 或 在 集 合 函 数 SUM , AVG , MIN , MAX 和 COUNT 的 组 中 中 断 汇 总 变 动 。 然后 就 可 以 查 看 细 节 和 总 计 行 。 使 用 COMPUTE BY 子句 时 必 须 使 用 ORDER BY 子 句 ; 可 是 如 果 用 COMPUTE 而 不 用 BY 时 , ORDER BY 是 可 选 项 。

row_aggregate row_aggregate 函 数 有 AVG ,COUNT ,MAX ,MIN 和 SUM 。BY BY 表 示 希 望 行 集 合 函 数 计 算 子 组 。 当 子 组 值 改 变

时 , 将 出 现 中 断 , 集 合 函 数 创 建 为 结 果 集 中 的 新 行 。使 用 BY 表 示 ORDER BY 必 须 和 COMPUTE BY 一 起 使用 。 如 果 BY 后 面 有 多 个 表 达 式 , 会 使 集 合 函 数 在每 一 级 别 上 进 行 汇 总 。

FOR BROWSE 如 果 用 DB-Library 在 应 用 程 序 中 查 看 数 据 , FOR

BROWSE 允 许 更 新 。

<query_hint> <query_hint> 指 导 查 询 优 化 程 序 如 何 优 化 查 询 ; 然

而 , 用 户 不 指 定 查 询 提 示 , SQL Server 通 常 知 道 如何 进 行 优 化 。

{HASH | ORDER}GROUP {HASH | ORDER}GROUP 指 导 SQLServer 去 散 列 或 排 列

ORDER BY 或 COMPUTE 子 句 中 的 聚 合 。

{MERGE | HASH | CONCAT}UNION

{MERGE | HASH | CONCAT}UNION 指 导 SQL Server 对

UNION 操 作 进 行 合 并 , 散 列 和 链 接 。

FAST n FAST n 表 示 优 化 程 序 将 尽 快 返 回 前 n 行 , 并 继 续 生成 查 询 中 的 其 余 行 。

FORCE ORDER FORCE ORDER 指 导 SQL Server 在 优 化 查 询 过 程 中 保

持 查 询 语 法 中 指 定 的 连 接 顺 序 。

ROBUST PLAN ROBUST PLAN 指 导 SQL Server 查 询 优 化 程 序 器 为 可

能 最 大 的 行 容 量 建 立 查 询 计 划 。

示例

下 面 是 SELECT 语 句 的 示 例 :

SELECT a.Column1,b.Column2 FROM MyTable a,

YourTable b

WHERE a.Column3 = b.Column3 ORDER BY a.Column1

本 例 中 , 执 行 INNER JOIN , 并 对 结 果 集 排 序 。

SESSION_USER

SESSION_USER 是 一 个 niladic 函 数 , 它 提 供 执 行 当 前 对 话 的 用 户 名 称 值 。

语法

SESSION_USER

SET @ local_variable

SET @local_variable 将 局 部 变 量 设 置 为 某 值 。

语法

SET

{

{@local_variable = expression}

| { @ cursor_variable =

{ @cursor_variable

| cursor_name

| { CURSOR

[ FORWARD_ONLY | SCROLL ]

[ STATIC | KEYSET | DYNAMIC ]

[ READ_ONLY | SCROLL_LOCKS | OPTIMISTIC ]

FOR select_statement

[ FOR {READ ONLY | UPDATE [ OF column_list ] } ] }}}}

变量

@local_variable @local_variable 为 一 变 量 , 但 不 是 游 标 变 量 。expression expression 是 任 意 的 Microsoft SQL Server 表 达

式 。

cursor_variable cursor_variable 指 游 标 变 量 的 名 称 。cursor_name cursor_name 指 游 标 的 名 称 。

CURSOR CURSOR 表 示 此 SET 语 句 声 明 了 一 个 游 标 。

SCROLL SCROLL 描 述 游 标 , 表 示 游 标 可 以 进 行 FIRST , LAST , NEXT , PRIOR , RELATIVE 和 ABSOLUTE 的 滚 动 。

FORWARD_ONLY FORWARD_ONLY 将 游 标 滚 动 限 制 为 FETCH NEXT 。

STATIC STATIC 游 标 用 tempdb 中 的 临 时 表 格 保 存 游 标 数

据 , 更 新 数 据 库 中 的 数 据 不 为 游 标 读 取 所 注 意 。

KEYSET KEYSET 表 示 打 开 游 标 时 , 游 标 中 的 行 与 顺 序 固 定 不变 。 唯 一 的 键 集 插 入 到 名 为 键 集 的 tempdb 表 格 中 。游 标 上 卷 时 , 可 以 看 到 当 前 用 户 或 其 他 用 户 对 非 键值 的 更 改 。 但 看 不 到 并 行 用 户 进 行 的 插 入 。 要 读 取删 去 的 行 将 返 回 @@FETCH_STATUS 的 值 -2 。 其 他 用 户对 关 键 列 的 更 新 可 以 是 一 个 插 入 或 删 除 , 但 看 不 到插 入 。 要 读 取 删 去 的 行 将 返 回 @@FETCH_STATUS 的 值

-2 。 可 是 使 用 WHERE CURRENT OF 语 法 就 能 看 到 新行 。

DYNAMIC 对 于 一 个 游 标 , DYNAMIC 可 使 该 游 标 滚 动 时 能 看 到所 有 的 数 据 改 变 , 并 且 每 一 次 读 取 都 改 变 游 标 。 即绝 对 读 取 和 相 对 读 取 都 不 和 DYNAMIC 一 起 使 用 。

READ_ONLY READ_ONLY 定 义 不 能 进 行 更 新 的 只 读 游 标 。

SCROLL LOCKS SCROLL LOCKS 表 示 读 取 时 锁 定 游 标 行 , 以 后 进 行 修

改 就 不 会 遇 到 阻 碍 。

OPTIMISTIC OPTIMISTIC 表 示 如 果 读 取 行 后 对 行 进 行 了 改 动 , 就

不 能 通 过 游 标 进 行 更 新 或 删 除 。 这 通 过 比 较 时 间 戳值 来 完 成 , 如 果 没 有 时 间 戳 列 , 就 通 过 比 较 检 查 和来 完 成 。

FOR select_statement FOR select_statement 是 返 回 游 标 数 据 的 查 询 程

序 。

READ ONLY READ ONLY 与 READ_ONLY 一 样 。

UPDATE [ OF

column_list ]

UPDATE [ OF column_list ] 列 出 可 更 新 的 游 标 列 。

示例

下 面 为 SET 语 句 的 示 例 :

DECLARE Cursor1 CURSOR GLOBAL FOR SELECT *FROM MyTable

DECLARE @Cursor1_variable CURSOR SET @Cursor1_variable = Cursor1

DEALLOCATE Cursor1 / * There is now only a LOCAL variable

reference ( @my_variable) to the my_cursor cursor. */

本 例 中 , 局 部 变 量 的 设 置 参 照 游 标 Cursor1 。

SET

SET 语 句 根 据 某 些 设 置 修 改 当 前 对 话 的 行 为 。

SET ANSI_DEFAULTS

SET ANSI_DEFAULTS 打 开 或 关 闭 确 定 SQL-92 标 准 状 态 的 Microsoft SQL Server 设 置 。

语法

SET ANSI_DEFAULTS { ON | OFF}

SET ANSI_NULL_DFLT_OFF

当 用 CREATE 或 ALTER 语 句 添 加 列 时 , SET ANSI_NULL_DFLT_OFF 置 ON 将 改变 在 新 列 中 允 许 为 空 的 缺 省 值 。 如 果 该 设 置 为 ON , 则 新 列 需 要 某 个 值 , 而 不 是NULL 。

语法

SET ANSI_NULL_DFLT_OFF {ON | OFF}

SET ANSI_NULL_DFLT_ON

当 用 CREATE 或 ALTER 语 句 添 加 列 时 , SET ANSI_NULL_DFLT_ON 置 OFF 将 改变 在 新 列 中 允 许 为 空 的 缺 省 值 。 如 果 此 设 置 为 OFF , 则 新 列 需 要 一 个 值 , 而 不是 NULL 。

语法

SET ANSI_NULL_DFLT_ON {ON | OFF}

SET ANSI_NULLS

SET ANSI_NULLS 用 等 号 和 不 等 号 来 计 算 将 NULL 值 与 未 知 值 相 比 较 的 值 。 如果 某 个 与 NULL 比 较 的 值 为 NULL , 将 SET ANSI_NULLS 设 置 为 OFF 将 使 该 值 等 于真 , 否 则 为 假 。

语法

SET ANSI_NULLS {ON | OFF}

SET ANSI_PADDING

建 议 将 SET ANSI_PADDING 设 置 为 ON , 它 决 定 字 符 、 二 进 制 、 可 变 字 符 , 和可 变 二 进 制 数 据 类 型 如 何 存 储 尾 部 的 空 格 。 若 将 新 字 符 列 的 这 个 设 置 设 定 为 ON , 插 入 尾 部 的 空 格 会 填 满 整 个 列 ; 对 于 新 二 进 制 列 , 插 入 尾 部 的 零 会 填 满 整 个 列 。对 于 新 可 变 字 符 和 可 变 二 进 制 列 , 不 会 截 短 与 尾 随 值 一 起 插 入 的 值 , 尾 随 值 不会 添 加 至 添 满 整 个 列 。 当 该 设 置 为 OFF 时 , NOT NULL 字 符 和 二 进 制 列 会 和 尾 随值 一 起 插 入 至 添 满 整 个 列 , 但 是 NULL 字 符 和 二 进 制 列 与 可 变 字 符 和 可 变 二 进 制相 同 。 在 这 些 情 况 下 , 将 截 去 尾 部 的 值 , 尾 部 的 值 不 会 插 入 至 添 满 整 个 新 列 。

语法

SET ANSI_PADDING {ON | OFF}

SET ANSI_WARNINGS

如 果 在 集 合 函 数 中 有 NULL , SET ANSI_WARNINGS 置 ON 就 用 信 号 报 警 。 被 0 除 和 溢 出 错 误 会 卷 回 语 句 并 用 信 息 报 警 。 如 果 新 值 的 长 度 比 字 符 、 Unicode 或二 进 制 列 的 长 度 还 长 , 将 终 止 INSERT 和 UPDATE 语 句 。

如 果 集 合 函 数 中 有 NULL , SET ANSI_WARNINGS 置 OFF 不 会 用 信 号 报 警 。 被 0 除 或 溢 出 错 误 返 回 NULL 。 如 果 新 值 的 长 度 比 字 符 、 Unicode 或 二 进 制 列 的 长 度

还 长 , INSERT 语 句 与 UPDATE 语 句 将 返 回 NULL 。

语法

SET ANSI_WARNINGS {ON | OFF}

SET ARITHABORT

如 果 SET ARITHABORT 置 ON ,被 0 除 或 溢 出 错 误 将 导 致 Transact-SQL 终 止和 / 或 卷 回 事 务 处 理 。

如 果 SET ARITHABORT 置 OFF , 被 0 除 或 溢 出 错 误 就 用 信 号 报 警 , 但 是Transact-SQL 继 续 执 行 。

语法

SET ARITHABORT {ON | OFF}

SET ARITHIGNORE

如 果 SET ARITHIGNORE 和 SET ANSI_WARNINGS 都 设 置 为 OFF , 对 被 0 除 和 算术 溢 出 错 误 都 不 会 发 出 警 告 。

语法

SET ARITHIGNORE {ON | OFF}

SET CONCAT_NULL_YIELDS_NULL

SET CONCAT_NULL_YIELDS_NULL 置 ON 时 , 将 字 符 串 与 NULL 值 并 置 , 会 返 回NULL 。

SET CONCAT_NULL_YIELDS_NULL 置 OFF 时 , 将 字 符 串 与 NULL 值 并 置 , 会 返回 字 符 串 。

语法

SET CONCAT_NULL_YIELDS_NULL{ON | OFF}

SET CURSOR_CLOSE_ON_COMMIT

SET CURSOR-CLOSE-ON-COMMIT 置 ON 时 , 将 关 闭 委 托 上 打 开 的 游 标 。 SET CURSOR_CLOSE_ON_COMMIT 置 OFF 时 , 不 关 闭 委 托 上 打 开 的 游 标 。

语法

SET CURSOR_CLOSE_ON_COMMIT {ON | OFF}

SET DATEFIRST

SET DATEFIRST 规 定 一 星 期 中 的 第 一 天 , 其 中 1 表 示 周 一 , 2 表 示 周 二 , 等等 从 1 到 7 的 数 字 。 美 国 英 语 缺 省 为 7( 周 日 ) 。

语法

SET DATEFIRST{ numbe r| @number_var }

变 量 number | @number_var 是 一 个 整 数 , 美 国 英 语 中 缺 省 为 周 日 。

SET DATEFORMAT

SET DATEFORMAT 决 定 日 期 数 据 类 型 中 日 期 部 分 , 月 、 日 、 年 的 顺 序 。

语法

SET DATEFORMAT{ format | @ format_var }

变 量 format | @format_var 的 有 效 值 为 mdy,dmy,ymd,ydm,myd 和 dym, 美 国英 语 中 缺 省 为 mdy 。

SET DEADLOCK_PRIORITY

SET DEADLOCK_PRIORITY 确 定 死 锁 时 当 前 对 话 中 发 生 的 情 况 。

语法

SET DEADLOCK_PRIORITY{LOW | NORMAL | @ deadlock_var }

变量

LOW LOW 将 当 前 对 话 选 择 为 死 锁 牺 牲 品 , 并 返 回 事 务 处理 。

NORMAL NORMAL 允 许 SQL Server 根 据 缺 省 情 形 决 定 死 锁 牺牲 品 。

@deadlock_var @deadlock_var 是 一 个 字 符 串 变 量 。

SET DISABLE_DEF_CNST_CHK

此 设 置 只 为 了 向 后 兼 容 , 此 版 本 中 它 不 能 置 为 ON 。

SET FIPS_FLAGGER

SET FIPS_FLAGGER 用 基 于 SQL-92 标 准 的 FIPS 127-2 标 准 控 制 警 告 信 息 的兼 容 阈 级 。

语法

SET FIPS_FLAGGER ′ level ′

变 量 level 必 须 是 ENTRY 、 FULL 、 INTERMEDIATE 或 OFF 。

SET FMTONLY

SET FMTONLY 置 ON 不 返 回 行 , 只 返 回 元 数 据 。

语法

SET FMTONLY{ON | OFF}

SET FORCEPLAN

SET FORCEPLAN 指 示 SQL Server 按 照 连 接 表 在 FROM 子 句 中 的 顺 序 进 行 连 接 。

语法

SET FORCEPLAN {ON | OFF}

SET IDENTITY_INSERT

SET IDENTITY_INSERT 置 ON 允 许 将 用 户 定 义 的 值 插 入 到 标 识 列 中 。

语法

SET IDENTITY_INSERT [

database .[ owner. ]] {table

}{ON | OFF}

变量

database database 指 数 据 库 名 称 。

Owner owner 指 作 用 表 格 的 拥 有 者 。

Table table 为 包 含 标 识 列 的 表 格 名 称 。

SET IMPLICIT_TRANSACTIONS

SET IMPLICIT_TRANSACTIONS 置 On 可 将 连 接 设 置 为 隐 式 事 务 处 理 模 式 , 这表 示 如 果 连 接 不 在 事 务 处 理 中 , FETCH 、 DROP 、 OPEN 、 DELETE 、 SELECT 、 REVOKE 、CREATE 、 ALTER TABLE 、 TRUNCATE TABLE 、 GRANT 、 INSERT 、 UPDATE 启 动 事 务 处

理 。 如 果 设 置 为 OFF , 连 接 就 处 于 自 动 务 物 处 理 模 式 中 。

语法

SET IMPLICIT_TRANSACTIONS{ON | OFF}

SET LANGUAGE

SET LANGUAGE 可 根 据 日 期 格 式 和 系 统 信 息 来 决 定 对 话 中 的 语 言 。

语法

SET LANGUAGE{language | @ language_var}

变 量 language | @language_var 是 syslanguage 系 统 表 中 的 语 言 名 称 。 此变 量 必 须 是 sysname 数 据 类 型 。

SET LOCK_TIMEOUT

SET LOCK_TIMEOUT 是 过 程 需 要 锁 定 的 资 源 时 等 待 的 毫 秒 数 。

语法

SET LOCK_TIMEOUT [ timeout_period ]

变 量 timeout_period 为 释 放 锁 定 或 返 回 错 误 前 的 毫 秒 数 , 缺 省 值 -1 表 示 不等 待 。

SET NOCOUNT

SET NOCOUNT 置 ON 可 使 行 计 数 的 信 息 性 消 息 不 在 结 果 集 中 显 示 。

语法

SET NOCOUNT{ON | OFF}

SET NOEXEC

SET NOEXEC 置 ON 将 不 执 行 后 面 SET NOEXEC 置 OFF 前 的 Transact-SQL 语 句 , 但 是 这 些 语 句 仍 会 进 行 编 译 。

语法

SET NOEXEC {ON | OFF}

SET NUMERIC_ROUNDABORT

在 表 达 式 中 ,当 圆 整 到 列 中 的 精 度 比 结 果 的 精 度 低 ,SET NUMERIC_ROUNDABORT 置 ON 就 会 出 错 。

语法

SET NUMERIC_ROUNDABORT{ON | OFF}

SET OFFSETS

SET OFFSETS 用 于 DB-Library 应 用 程 序 中 , 返 回 与 用 户 定 义 的 语 句 开 头 有关 的 位 置 , 此 开 头 是 用 逗 号 分 开 的 Transact-SQL 关 键 词 列 表 , 这 些 关 键 词 可 以是 :SELECT , FROM , ORDER , COMPUTE , TABLE , PROCEDURE , STATEMENT , PARAM 和 EXECUTE 。

语法

SET OFFSETS keyword_list

变 量 keyword_list 是 用 逗 号 分 开 的 Transact-SQL 关 键 词 列 表 。

SET PARSEONLY

SET PARSEONLY 检 查 语 法 但 不 编 译 或 执 行 Transact-SQL 语 句 。

语法

SET PARSEONLY {ON | OFF}

SET PROCID

如 果 使 用 SET PROCID ON , 在 发 送 存 储 过 程 生 成 的 结 果 集 前 , 要 将 该 存 储 过程 的 标 识 符 号 发 送 到 DB_Library 应 用 程 序 。

语法

SET PROCID {ON | OFF}

SET QUERY_GOVERNOR_COST_LIMIT

如 果 变 量 为 0 , SET QUERY_GOVERNOR_COST_LIMIT 将 允 许 执 行 所 有 的 查 询 程序 ; 如 果 查 询 值 比 变 量 提 供 的 整 数 值 大 , 就 不 执 行 查 询 。

语法

SET QUERY_GOVERNOR_COST_LIMIT value

变 量 value 是 一 整 数 。

SET QUOTED_IDENTIFIER

如 果 使 用 SET QUOTED_IDENTIFIER ON , 就 允 许 标 识 符 名 称 作 为 关 键 词 , 如果 标 识 符 名 称 放 到 双 引 号 中 , 还 可 以 包 含 专 用 字 符 。 文 字 必 须 放 在 单 引 号 中 。文 字 中 也 可 能 包 含 单 引 号 , 此 时 , 可 用 两 个 单 引 号 代 替 单 引 号 以 防 出 现 语 法 错误 。

如 果 使 用 SET QUOTED_IDENTIFIER OFF , 标 识 符 名 称 不 能 加 双 引 号 , 而 且 必须 按 规 则 执 行 , 而 文 字 可 以 放 在 一 对 单 引 号 或 双 引 号 中 , 如 果 在 双 引 号 中 引 用文 字 , 文 字 中 还 可 以 包 括 单 引 号 。 如 果 在 存 储 过 程 中 使 用 SET QUOTED_IDENTIFIER , 可 以 忽 略 上 述 情 况 。 用 于 存 储 过 程 的 SET QUOTED_IDENTIFIER 取 决 于 编 译 时 的 设 置 。 sp_dboption 存 储 过 程 使 用 引 用 的 标识 符 变 量 也 会 影 响 该 设 置 。

由 于 SET QUOTED_IDENTIFIER 改 变 了 双 引 号 的 功 能 , 所 以 可 能 引 起 混 乱 。

因 此 , 最 好 一 直 使 用 单 引 号 定 界 文 字 串 , 使 用 方 括 号 ( [ , ] ) 可 获 得 和 Quoted Identifiers 相 同 的 功 能 , 且 不 需 改 变 双 引 号 的 使 用 规 则 。 这 一 点 和 其 他 系 统存 储 过 程 参 阅 Chapter 23 。

语法

SET QUOTED_IDENTIFIER{ON | OFF}

SET REMOTE_PROC_TRANSACTIONS

如 果 使 用 SET REMOTE_PROC_TRANSACTIONS ON , 注 意 执 行 远 程 存 储 过 程 时 , Microsoft Distributed Transaction Coordinator ( MS DTC ) 会 启 动 分 布 式 事务 处 理 。

如 果 用 SET REMOTE_PROC_TRANSACTIONS OFF , 注 意 不 会 启 动 分 布 式 事 务 处

理 。

语法

SET REMOTE_PROC_TRANSACTIONS{ON | OFF}

SET ROWCOUNT

如 果 使 用 SET ROWCOUNT , 并 将 它 设 置 为 特 定 的 数 , 返 回 行 后 , 查 询 将 退 出处 理 过 程 。

语法

SET ROWCOUNT { number| @number_var }

变 量 number | @number_var 是 一 整 数 。

SET SHOWPLAN_ALL

如 果 使 用 SET SHOWPLAN_ALL ON, 将 不 执 行 Transact-SQL 语 句 。 返 回 的 是信 息 , 而 不 是 查 询 优 化 程 序 计 划 如 何 执 行 Transact-SQL 语 句 , 也 不 是 基 于 价 值的 优 化 程 序 的 查 询 值 。 将 SET SHOWPLAN_ALL 写 入 可 格 式 化 输 出 , 其 方 式 与 程 序扫 描 和 处 理 输 出 的 方 式 一 致 。

语法

SET SHOWPLAN_ALL{ON | OFF}

SET SHOWPLAN_TEXT

如 果 使 用 SET SHOWPLAN_TEXT ON , 就 不 会 执 行 Transact-SQL 语 句 。 返 回 的将 是 信 息 , 而 不 是 优 化 程 序 计 划 如 何 执 行 Transact-SQL 语 句 。 此 版 本 的 显 示 图样 用 于 人 们 处 理 并 检 查 输 出 。

语法

SET SHOWPLAN_TEXT {ON | OFF}

SET STATISTICS IO

如 果 使 用 SET STATISTICS IO ON , 将 显 示 表 格 名 称 、 扫 描 计 数 、 逻 辑 读 取 ( 从数 据 高 速 缓 存 中 读 取 的 页 数 ) ,物理读取 ( 从 磁 盘 中 读 取 的 页 数 ) ,和 超 前 读 取 ( 放在 查 询 高 速 缓 存 中 的 页 数 ) 的 信 息 。

语法

SET STATISTICS IO{ON | OFF}

SET STATISTICS PROFILE

SET STATISTICS PROFILE 显 示 ad hoc 查 询 、 视 图 、 触 发 器 和 存 储 过 程 的 简要 信 息 。

语法

SET STATISTICS PROFILE {ON | OFF}

SET STATISTICS TIME

如 果 使 用 SET STATISTICS TIME ON , 将 显 示 分 析 、 编 译 和 执 行 Transact-SQL 语 句 所 用 的 毫 秒 数 。

语法

SET STATISTICS TIME{ON | OFF}

SET TEXTSIZE

将 SET TEXTSIZE 置 为 用 户 定 义 的 数 值 , 当 执 行 SELECT 语 句 时 , 会 将 要 显示 的 和 ntext 数 据 类 型 的 长 度 设 置 为 该 数 值 。

语法

SET TEXTSIZE{number | @number_var}

变 量 number | @number_var 是 最 大 为 2GB 的 整 数 。

SET TRANSACTION ISOLATION LEVEL

如 果 使 用 SET TRANSACTION ISOLATION LEVEL , 并 将 其 设 置 下 面 可 用 选 项 之一 : READ COMMITTED , READ UNCOMMITTED , REPEATABLE READ 或 SERIALIZABLE

缺 省 的 事 务 处 理 锁 定 将 变 化 为 当 前 对 话 中 SELECT 语 句 的 选 定 项 。

语法

SET TRANSACTION ISOLATION LEVEL

{READ COMMITTED | READ UNCOMMITTED | REPEATABLE READ | SERIALIZABLE}

变量

READ COMMITTED READ COMMITTED 是 存 储 SELECT 语 句 的 共 享 锁 定 的

隔 离 级 别 , 是 Microsoft SQL Server 的 缺 省 值 。此 隔 离 级 别 预 防 无 效 读 取 , 表 示 没 有 读 取 未 提 交 的数 据 。 该 隔 离 级 别 可 能 造 成 非 重 复 性 读 取 的 情 形 , 这 表 示 其 他 对 话 可 以 改 变 数 据 , 如 果 重 读 数 据 , 事务 处 理 结 束 前 数 据 可 能 已 发 生 改 变 。 此 事 务 处 理 也可 能 产 生 幻 象 数 据 , 这 表 示 事 务 处 理 结 束 前 可 以 添加 新 数 据 。

READ UNCOMMITTED READ UNCOMMITTED( 也 叫 0 隔 离 级 别 ) 允 许 无 效 读

取 。 此 隔 离 级 别 不 进 行 锁 定 , 并 忽 略 其 他 用 户 所 做的 独 占 锁 定 , 结 果 造 成 无 效 读 取 , 非 重 复 性 读 取 和幻 象 数 据 。 和 使 用 NOLOCK 一 样 , 此 隔 离 级 别 提 供的 并 行 性 最 多 , 一 致 性 最 少 。

REPEATABLE READ REPEATABLE READ 隔 离 级 别 通 过 在 当 前 事 务 处 理 所

使 用 的 所 有 数 据 上 设 置 锁 定 , 来 阻 止 其 他 用 户 更 新数 据 , 可 是 , 仍 可 能 出 现 幻 象 行 。 此 选 项 可 能 对 并行 性 有 消 极 影 响 , 使 用 时 应 注 意 , 不 必 要 时 尽 量 不用 。

SERIALIZABLE SERIALIZABLE 隔 离 级 别 通 过 在 数 据 上 设 置 一 定 范 围

的 锁 定 , 来 阻 止 其 他 用 户 更 新 事 务 处 理 所 使 用 的 数据 , 或 防 止 插 入 新 行 。 它 提 供 的 并 行 性 最 少 , 一 致性 最 高 , 但 是 使 用 时 应 注 意 , 因 为 它 会 影 响 其 他 用户 , 并 对 并 行 性 有 消 极 影 响 , 这 些 方 面 和 使 用HOLDLOCK 相 同 。

SET XACT_ABORT

如 果 使 用 SET XACT_ABORT ON , 当 前 事 务 处 理 将 卷 回 执 行 期 间 的 错 误 。

语法

SET XACT_ABORT{ON | OFF}

SETUSER

建 议 不 在 Microsoft SQL Server 中 使 用 SETUSER , 它 只 向 后 兼 容 。 SETUSER 函 数 由 系 统 管 理 员 和 数 据 库 的 拥 有 者 使 用 , 以 便 假 定 其 他 用 户 的 许 可 。

语法

SETUSER [

′ usernam e′

[ W ITH NORESET ]]

变量

  • username ′ SA 或 DBO 假 定 许 可 的 安 全 帐 户 名 。 如 此 变 量没

    有 提 供 为 一 个 参 数 , 假 定 为 最 初 的 等 同 值 。

WITH NORESET WITH NORESET 不 需 使 用 所 提 供 的 用 户 名 , 确定 后 来 发 布 的 SETUSER 语 句 , 不 重 置 为 SA 或DBO 。

SHUTDOWN

SHUTDOWN 命 令 停 止 Microsoft SQL Server 。

语法

SHUTDOWN [ WITH NOWAIT ]

变 量 WITH NOWAIT 在 停 止 SQL Server 前 不 完 成 检 验 点 。 正 执 行 的 所 有 事 务处 理 都 将 卷 回 。

SIGN

如 果 表 达 式 为 正 , SIGN 函 数 返 回 1 ; 如 果 表 达 式 为 负 , SIGN 函 数 返 回 -1 , 如 果 表 达 式 为 0 , SIGN 函 数 返 回 0 。

语法

SIGN(numeric_expression)

变 量 numeric_expression 可 以 是 小 数 、 浮 点 数 、 整 型 数 、 货 币 、 数 字 、 实数 、 短 整 型 数 、 小 货 币 , 或 微 短 整 型 数 。

SIN

系 统 存 储 过 程 SIN 显 示 角 度 的 三 角 正 弦 值 , 角 度 是 以 弧 度 表 示 的 浮 点 表 达

式 。

语法

SIN(float_expression)

变 量 float_expression 是 浮 点 数 据 类 型 的 表 达 式 。

smalldatetime

参 阅 本 章 的 “ Data Types ”。

smallint

参 阅 本 章 的 “ Data Types ”。

smallmoney

参 阅 本 章 的 “ Data Types ”。

S O M E | ANY

SOME 也 称 作 ANY , 如 果 初 始 表 达 式 的 比 较 和 子 查 询 程 序 中 至 少 有 一 个 值 返回 真 , SOME 和 ANY 都 为 真 , 否 则 , 就 返 回 假 。

语法

scalar_expression {= | <> | != | > | >= | !> | < | <= | !<}

{SOM E | ANY}( subquery )

变量

scalar_expression scalar_expression 是 任 意 有 效 的 SQL 表 达 式 。

{= | <> | != | > |

>= | !> | < | <= | !<}

这 些 是 可 用 于 比 较 操 作 的 Microsoft SQL Server 运 算 符 。

SOME | ANY SOME 或 ANY 为 关 键 词 , 表 示 要 进 行 比 较 。

Subquery 用 于 此 处 的 SUBQUERY 只 能 返 回 和 变 量 列 表 中scalar_expression 的 数 据 类 型 相 同 的 一 列 。

SOUNDEX

SOUNDEX 用 于 确 定 两 个 字 符 串 的 发 音 是 否 相 似 , 并 返 回 4 个 字 符 的 代 码 。 代码 的 第 一 字 节 是 一 个 字 符 , 表 示 变 量 的 第 一 个 字 母 。 其 余 的 代 码 包 括 数 字 。 元音 忽 略 不 计 , 除 非 元 音 位 于 字 符 串 的 开 头 。 字 母 y , 双 字 母 和 字 母 h 也 不 考 虑 。相 关 的 函 数 有 DIFFERENCE 函 数 。 参 阅 本 章 的 “ DIFFERENCE ”。

语法

SOUNDEX(character_expression)

变 量 character_expression 是 一 个 字 符 串 , 它 可 以 是 变 量 、 常 数 或 表 格 中的 列 。

示例

下 面 是 SOUNDEX 函 数 的 示 例 :

SELECT SOUNDEX ( ′ FOREX ′ ), SOUNDEX ( ′ FORX ′ )

本 例 中 ,′ FOREX ′ 和 ′ FORX ′ 的 返 回 值 都 为 F620 ,因 为 它 们 发 音 非 常 相 似 。

SPACE

SPACE 返 回 一 串 重 复 的 空 格 , 然 而 , 如 果 要 在 Unicode 数 据 中 包 含 空 格 , 用REPLICATE 函 数 代 替 SPACE 。

语法

SPACE(integer_expression)

变 量 integer_expression 为 一 整 数 。 如 果 integer_expression 为 负 数 , 此 函 数 返 回 NULL 。

SQUARE

SQUARE 为 一 函 数 , 它 将 浮 点 数 据 类 型 的 值 与 其 自 身 相 乘 。

语法

SQUARE(float_expression)

变 量 float_expression 是 一 个 浮 点 型 数 据 。

SQRT

SQRT 是 返 回 浮 点 型 数 据 的 平 方 根 的 函 数 。

语法

SQRT(float_expression)

变 量 float_expression 是 一 个 浮 点 型 数 据 。

STATS_DATE

STATS_DATE 是 返 回 最 后 一 次 更 新 索 引 的 统 计 日 期 及 时 间 的 函 数 。

语法

STATS_DATE(table_id, index_id)

变量

table_id table_id 是 表 格 的 OBJECT_ID 。

index_id index_id 是 索 引 的 indid 。

STDEV

STDEV 是 一 个 返 回 标 准 偏 差 的 集 合 函 数 。 它 与 其 他 集 合 函 数 ( 如 SUM 函数 ) 大体 相 同 , 只 适 用 于 数 值 型 数 据 类 型 。 在 所 提 供 的 列 中 , 会 排 除 输 入 数 据 集 中 的NULL 值 。

语法

STDEV(expression)

变 量 expression 可 以 是 一 个 常 量 、 列 名 或 函 数 , 也 可 以 包 含 运 算 符 。

示例

下 面 是 STDEV 的 示 例 :

SELECT STDEV(MyNumericColumn)

FROM MyTable

本 例 中 , 返 回 MyTable 表 的 MyNumericColumn 列 中 所 有 数 值 的 标 准 偏 差 。

STDEVP

STDEVP 是 返 回 人 口 标 准 偏 差 的 集 合 函 数 。 该 函 数 与 其 他 集 合 函 数 ( 如 SUM

函 数 ) 大 体 相 同 , 只 适 用 于 数 值 型 数 据 , 并 忽 略 NULL 值 。

语法

STDEVP(expression)

变 量 expression 可 以 是 一 个 常 量 、 列 名 或 函 数 , 也 可 以 包 含 运 算 符 。

示例

下 面 是 STDEVP 函 数 的 示 例 :

SELECT STDEVP(MyNumericColumn)

FROM MyTable

本 例 中 , 返 回 MyTable 表 的 MyTableColumn 列 中 所 有 数 值 的 人 口 标 准 偏 差 。

STR

STR 可 将 数 值 型 数 据 转 换 为 字 符 型 数 据 , 并 返 回 字 符 型 数 据 。 它 提 供 的 功 能比 CAST 函 数 更 广 泛 , 因 为 它 允 许 控 制 小 数 的 格 式 。 如 果 长 度 不 够 则 返 回 星 号 。

语法

STR(float_expression [ , length [ , decimal ]] )

变量

float_expression float_expression 是 浮 点 型 表 达 式 , 可 以 包 含

小 数 点 。

Length length 是 想 要 的 字 符 串 的 总 长 度 。 如 果 没 有 提供 这 个 可 选 变 量 部 分 , 缺 省 值 为 10 。

Decimal decimal 是 小 数 点 右 边 的 位 数 。

STUFF

STUFF 函 数 可 以 将 字 符 表 达 式 的 一 部 分 用 所 提 供 的 另 一 个 字 符 串 替 代 , 替 代部 分 用 起 始 位 置 和 长 度 来 定 义 。

语法

STUFF(character_expression, start, length, character_expression)

变量

character_expression character_expression 可 以 是 字 符 或 二 进 制

型 常 量 、 变 量 或 列 。

Start start 是 定 义 要 替 换 的 字 符 表 达 式 的 起 始 位 置的 整 数 。 如 该 变 量 为 负 值 或 大 于 字 符 表 达 式 的总 长 , 则 返 回 NULL 。

Length length 是 决 定 要 替 换 的 字 符 数 的 整 数 。

示例

下 面 是 STUFF 函 数 的 示 例 :

SELECT STUFF (′ My dog Fido ′ , 8, 4, ′ Sally ′ ) G O

本 例 中 , 从 第 8 个 字 符 起 , 删 去 4 个 字 符 “ Fido ”, 并 在 原 位 置 处 插 入 5 个字 符 “ Sally ”。 这 正 是 STUFF 名 称 的 由 来 。 如 果 愿 意 , 替 换 的 字 符 串 的 字 节 数可 以 多 于 、 等 于 或 少 于 被 替 换 的 字 符 串 的 字 节 数 。

SUBSTRING

SUBSTRING 函 数 返 回 字 符 型 、 二 进 制 型 、 文 本 或 图 形 表 达 式 的 一 部 分 。

语法

SUBSTRING(expression, start, length)

变量

expression expression 可 以 是 字 符 串 、 二 进 制 串 、 文 本 、 图形 或 列 名 ; 但 不 是 集 合 函 数 。

Start start 是 表 明 开 始 截 取 表 达 式 的 位 置 的 整 数 。

Length length 是 决 定 表 达 式 截 取 长 度 的 整 数 。

示例

下 面 是 SUBSTRING 函 数 的 示 例 :

SELECT SUBSTRING (′ Microsoft′ ,6,4)

本 例 中 , 返 回 表 达 式 Microsoft 中 的 4 个 字 符 “ soft ”。

SUM

SUM 是 一 个 集 合 函 数 , 它 返 回 表 格 的 选 定 行 中 所 有 选 定 的 数 值 型 列 中 的 值 的总 和 , 或 只 返 回 表 格 的 选 定 行 中 所 有 选 定 的 数 值 型 列 中 的 DISTINCT 值 。 表 格 的选 定 行 中 一 个 选 定 的 数 值 型 列 中 有 Null 值 , 表 示 排 除 该 行 。

语法

S U M ([ ALL | DISTINCT ] expression )

变量

All All 关 键 字 DISTINCT 关 键 字 相 区 别 , 它 是 缺 省 值 , 表 示 对 所 有 选 定 的 值 求 和 。

DISTINCT DISTINCT 关 键 字 用 来 确 定 只 对 独 有 值 求 和 。Expression expression 是 任 意 有 效 的 、 返 回 数 值 的 SQL Server

表 达 式 , 但 不 能 是 集 合 函 数 和 子 查 询 程 序 。

SUSER_ID

SUSER_ID 函 数 返 回 SQL Server 用 户 的 标 识 号 。 它 只 用 于 向 后 兼 容 。 7.0 版本 中 , 人 物 编 码 用 SUSER_SID 代 替 。

语法

SUSER_ID ([ ′ login ′ ] )

变 量 login 是 可 选 项 。 它 是 登 录 ID 的 名 称 。 如 果 没 有 提 供 该 变 量 , 则 默 认为 当 前 用 户 。

SUSER_NAME

SUSER_NAME 函 数 返 回 SQL Server 用 户 的 登 录 ID 名 ,它 只 用 于 向 后 兼 容 。7.0 版 本 中 的 人 物 编 码 用 SUSER_SNAME 代 替 。

语法

SUSER_NAME ([ server_user_id ] )

变 量 server_user_id 是 可 选 项 , 它 是 登 录 ID 号 。 如 果 没 有 提 供 该 变 量 , 则 默 认 为 当 前 用 户 。

SUSER_SID

SUSER_SID 返 回 用 户 所 提 供 的 Microsoft SQL Server 安 全 帐 户 名 所 对 应 的安 全 标 识 号 ( 也 叫 SID )。

语法

SUSER_SID ([ ′ login ′ ] )

变 量 login 是 可 选 的 , 它 是 安 全 帐 户 名 称 。 如 果 没 有 提 供 该 变 量 , 则 默 认为 当 前 用 户 。

SUSER_SNAME

SUSER_SNAME 从 用 户 的 安 全 标 识 号( 也 称 SID )中 返 回 Microsoft SQL Server 安 全 帐 户 名 。

语法

SUSER_SNAME ([ server_user_sid ] )

变 量 server_user_id 是 可 选 项 , 它 是 安 全 标 识 号 。 如 果 没 有 提 供 该 变 量 , 默 认 为 当 前 用 户 。

SYSTEM_USER

如 果 NT Authentication 用 来 验 证 用 户 , SYSTEM_USER 函 数 就 提 供 NT 帐 户名 的 系 统 提 供 值 , 或 者 如 果 使 用 SQL Server Authentication , SYSTEM_USER 函数 就 提 供 SQL Server 已 验 证 的 安 全 帐 户 名 的 系 统 提 供 值 。 这 个 函 数 可 以 用 作 常规 函 数 , 如 果 不 存 在 其 他 缺 省 值 , 它 就 是 插 入 表 格 的 缺 省 值 ; 或 用 于 DEFAULT CONSTRAINT 中 。

语法

SYSTEM_USER

TAN

TAN 函 数 返 回 浮 点 变 量 的 正 切 值 。

语法

TAN(float_expression)

text

变 量 float_expression 是 一 个 角 度 , 且 是 浮 点 或 实 型 数 据 。

参 看 本 章 Data Type 部 分 。

TEXTPTR

TEXTPTR 函 数 用 来 指 向 第 一 个 文 本 页 , 并 以 变 长 二 进 制 型 数 据 返 回 。

语法

TEXTPTR( column )

变 量 column 是 列 的 名 称 。

TEXTVALID

TEXTVALID 函 数 用 于 文 本 、 ntext 或 图 像 列 , 以 检 查 文 本 指 针 的 有 效 性 。 如 果 有效 , 则 返 回 1; 无 效 则 返 回 0 。 UPDATETEXT 、 WRITETEXT 和 READTEXT 都 依 赖 于 这一 函 数 的 使 用 。

语法

TEXTVALID (′ table.colum n′ , text_ptr)

变量

table table 是 表 格 名 称 。

Column column 是 列 名 称 。

text_ptr text_ptr 是 有 效 化 的 文 本 指 针 。

timestamp

timestamp 是 列 的 数 据 类 型 , 在 每 个 表 格 中 只 有 一 个 timestamp 列 , 它 包 含二 进 制 (8) 型值 ( 如 果 允 许 NULL 值 存 在 , 则 可 包 含 varbinary(8) 型 值 ) , 该 值在 数 据 库 中 是 唯 一 的 。 每 次 插 入 或 更 新 行 时 , 都 要 更 新 该 列 。

tinyint

参 看 本 书 “ Data Type ” 部 分 。

TRIGGER_NESTLEVEL

TRIGGER_NESTLEVEL 返 回 表 格 中 对 应 UPDATE 、 INSERT 或 DELETE 操 作 的 所 执行 的 触 发 器 数 。

语法

TRIGGER_NESTLEVEL ([ object_id ] )

变 量 object-id 是 触 发 器 的 ID , 如 果 未 提 供 该 变 量 , 返 回 的 整 数 表 示UPDATE 、 INSERT 或 DELETE 操 作 中 所 有 触 发 器 被 激 活 的 次 数 。

TRUNCATE TABLE

TRUNCATE TABLE 语 句 删 除 表 格 中 所 有 未 注 册 的 行 , 但 不 激 活 触 发 器 。

语法

TRUNCATE TABLE name

变 量 name 是 要 截 取 的 表 名 。

TYPEPROPERTY

TYPEPROPERTY 函 数 以 字 符 型 或 二 进 制 型 数 据 的 属 性 形 式 返 回 信 息 的 类 型 。

语法

TYPEPROPERTY (

变量

type, property )

type type 数 据 类 型

property property 可 以 是 以 下 几 种 : precision( 数 字 位 数 或 字 符 数 ) Scale( 小 数 位 数 )

AllowsNull(0 = FALSE , 1=TRUE) UsesAnsiTrim(0 = FALSE , 1 = TRUE)

UNICODE

UNICODE 函 数 返 回 变 量 第 一 个 字 节 的 Unicode 标 准 整 数 值 。

语法

UNICODE( ′ ncharacter_expression ′ )

变 量 ncharacter-expression 是 nchar 或 nvarchar 型 数 据 。

UNION

UNION 语 句 可 以 提 取 多 个 SELECT 语 句 的 结 果 , 并 合 并 这 些 结 果 。

语法select_statement UNION [ ALL ]

select_statement

[ UNION [ ALL ] select_statemen t][ ,...n ]

变量

select_statement select_statement 是 返 回 数 据 的 查 询 语 句 。UNION UNION 合 并 多 个 查 询 的 结 果 集 。

ALL ALL 返 回 包 括 复 本 在 内 的 所 有 行 。 但 如 果 未 提 供此 关 键 字 , 则 不 返 回 复 本 。

N 表 明 前 述 项 目 是 可 重 复 的 。

示例

下 面 是 UNION 语 句 的 示 例 :

SELECT FirstName, LastName

FROM MyFirstTable UNION

SELECT FirstName, LastName FROM MySecondTable

本 例 中 , 合 并 了 MyFirstTable 的 结 果 与 MySecondTable 的 结 果 集 , 并 返 回一 个 数 据 集 。

uniqueidentifier

参 看 本 章 “ Data Type ” 部 分 。

UPDATE

UPDATE 语 句 通 过 更 改 表 格 中 已 有 的 行 来 修 改 表 中 的 数 据 。

语法

UPDATE {<table_or_view>} SET

{

column_name

= {

expression

| DEFAULT}

@variable

=

expression

}

[ ,... n ]

[ FROM

{

<table_or_view>

( select_statement

) [ AS ]

table_alias [ (column_alias

[ ,...

m

] )]

| <table_or_view> CROSS JOIN <table_or_view>

| INNER [ <join_hints> ] JOIN

<table_or_view> ON <join_condition>

| <rowset_function>

} [ , ... n ]

[ WHERE

<search_conditions>

| CURRENT O F

{ { [ GLOBAL ] cursor_name } | cursor_variable_name } }

[ OPTION (<query_hints>, [ ,... n ] )]

<table_or_view> :: =

{ table_name [[ A S ] table_alias ][ <table_hints > [ ... m ] ]

| view_name

[[ AS ]

table_alias ]

}

<table_hints> ::=

{ INDEX = { index_name | index_id } [ , ... n ]

| FASTFIRSTROW

| READPAST

| { HOLDLOCK | PAGLOCK | READCOMMITTED

| READUNCOMMITTED | REPEATABLEREAD

| ROWLOCK | SERIALIZABLE | TABLOCK | TABLOCKX

}

<table_hints> ::=

{ INDEX( index_name | index_id )

| FASTFIRSTROW

| HOLDLOCK

| PAGLOCK

| READCOMMITTED

| READPAST

| READUNCOMMITTED

| REPEATABLEREAD

| ROWLOCK

| SERIALIZABLE

| TABLOCK

| TABLOCKX}

<join_hints> ::=

{ HASH | LOOP | MERGE }

<query_hints> :: =

{ { HASH | ORDER } GROUP

| { CONCAT | HASH | MERGE } UNION

| FAST number_rows

| FORCE ORDER

| ROBUST PLAN}

<join_condition> :: =

{ table_name | table_alias | view_name }. column_name

<logical_operator>

{ table_name | table_alias | view_name }. column_name

<logical_operator>:: =

{=|> | <|>=|<=|<>| !=| !<|!>}

<rowset_function>::=

{OPENQUERY ( linked_server, ′ query ′ )

| OPENROWSET

( ′ provider_nam e′ ,

{ ′ datasource ′ ;′ user_id ′ ;′ password ′ | ′ provider_string ′ },

{ [ catalog. ][ schema .] object_name |

′ query ′

})}

<search_conditions> ::=

{

[ N O T ]

<predicate>

{ AND | OR } [ NOT ]

<predicate> ]

}

[ , ... n

<predicate> ::=

{

expression

{ = | <> | != | > | >= | !> | < | <= | !< }

expression

| string_expression

[ N O T ] LIKE

string_expression

[ ESCAPE ′ escape_character′ ]

| expression

[ NOT ] BETWEEN

expression

AND

expression

| expression

| expression

| expression

IS [ NOT ] NULL

[ N O T ] IN ( subquery | expression [ ,... n ] )

{ = | <> | != | > | >= | !> | < | <= | !< }

{ALL | S O M E | ANY} (

| EXISTS ( subquery

subquery )

)}

变量

<table_or_view> table_or_view 是 表 或 视 图 名 的 标 题 。table_name | view_name table_name| view_name 是 数 据 被 更 新 的 表

或 视 图 的 名 称 。 只 能 更 新 视 图 中 的 一 个 表 。

table_alias alias 是 表 或 视 图 的 简 短 名 称 。

column_alias column_alias 是 列 标 题 的 别 名 。

<table_hints> table_hints 指 示 SQL Server 查 询 优 化 器如 何 进 行 查 询 。 参 看 本 书 第 6 章 “ 新 优 化程 序 提 示 ”。

INDEX(index_name | index_id) 如 果 给 出 了 索 引 优 化 器 提 示 , 该 索 引 用 以

处 理 查 询 。

  1. m 表 明 列 的 别 名 可 重 复 。

OPENQUERY OPENQUERY 运 行 通 过 查 询 。 参 看 本 章“ OPENQUERY ”。

OPENROWSET OPENROWSET 包 含 连 接 的 定 义 以 使 用 数 据 源中 的 远 程 数 据 。

SET SET 关 键 字 后 面 的 列 是 要 更 新 的 列 。

column_name column_name 是 格 式 为 form 的 用 逗 号 分 隔开 的 列 表 ,column_name= 表 达 式 。

Expression 是 任 何 有 效 的 SQL 表 达 式 。

DEFAULT DEFAULT 将 某 列 中 的 值 设 置 成 由 DEFAULT 约束 为 该 列 定 义 的 缺 省 值 。

@variable 已 声 明 的 局 部 变 量 , 设 置 为 表 达 式 返 回 的值。

  1. n 表 示 前 述 各 项 可 重 复 。

FROM FROM 确 定 用 来 为 UPDATE 提 供 值 的 表 格 。

CROSS JOIN CROSS JOIN 是 返 回 行 的 两 个 表 格 的 交 叉积 。 就 好 象 没 有 WHERE 子 句 一 样 。

INNER INNER 连 接 是 缺 省 值 , 返 回 匹 配 的 行 。

<join_hints> <join_hints> 指 示 SQL Server 连 接 的 运 行策 略 。

ON<join_condition> ON<join_condition> 是 连 接 条 件 。WHERE<search_conditions> WHERE<search_conditions> 是 查 询 中 的 限

制 条 件 。

CURRENT OF CURRENT OF 是 游 标 的 当 前 位 置 , 指 向 修 改后 的 行 。

GLOBAL GLOBAL 表 明 游 标 是 一 个 全 局 游 标 。

cursor_name cursor_name 是 决 定 可 更 新 的 数 据 集 的 游 标名。

cursor_variable-name cursor_variable-name 是 游 标 变 量 的 名

称。

OPTION(<query_hints> ,

<,...n>)

OPTION(<query_hints> , <,...n>) 指 示 查询 优 化 器 如 何 优 化 查 询 , 然 而 , 通 常 无 须用 户 指 定 查 询 提 示 , SQL Server 也 能 自 动进 行 优 化 。

{HASH | ORDER}GROUP {HASH | ORDER}GROUP 指 示 SQL Server 在

ORDER BY 或 COMPUTE 子 句 中 对 集 合 运 算 使

用 散 列 或 排 序 。

{MERGE | HASH | CONCAT}UNION {MERGE | HASH | CONCAT}UNION 指 示 SQL

Server 为 UNION 操 作 使 用 合 并 、 散 列 或 连接。

FAST n FAST n(number_of_rows) 表 示 在 查 询 中 , 优 化 器 将 尽 快 返 回 前 n 行 , 之 后 继 续 返 回余 下 的 各 行 。

FORCE ORDER FORCE ORDER 指 示 SQL Server 在 查 询 优 化过 程 中 保 持 查 询 语 法 中 指 定 的 连 接 顺 序 。

ROBUST PLAN ROBUST PLAN 指 示 SQL Server 查 询 优 化 器为 可 能 的 最 多 行 数 建 立 查 询 计 划 。

示例

下 面 是 UPDATE 语 句 的 示 例 :

UPDATE MyTable

SET Column1 = b.Column1 FROM MyTable a,

M yTable2 b

WHERE a.MyId = b.MyId

在 本 例 中 , 若 MyTable 和 MyTable 2 表 的 MyId 列 中 各 行 具 有 相 匹 配 的 值 ,

则 表 MyTable 中 的 Column1 中 的 值 更 新 为 MyTable2 的 Column1 中 的 值 。

UPDATE STATISTICS

UPDATE STATISTICS 语 句 更 新 与 表 格 索 引 相 关 的 系 统 表 中 的 信 息 。 这 些 信 息是 SQL Server 用 以 建 立 规 划 的 列 值 的 分 布 式 数 据 。 这 些 数 据 的 大 部 分 发 生 变 更后 , 就 应 更 新 这 些 数 据 。 另 外 , 用 户 也 可 以 利 用 自 动 统 计 功 能 完 成 这 一 步 ( 通过 sp_autostats ), 而 无 需 执 行 更 新 统 计 。

语法

UPDATE STATISTICS {table} [ index | (index_or_colum n[ , ...n ] )]

[ W ITH [[ FULLSCAN ] | SAMPLE number {PERCEN T| ROWS} ]]

[[ ,] [ ALL | COLUMNS | INDEX ][[ ,] NORECOMPUTE ]]

变量

table table 是 表 格 名 称 。

Index index 是 索 引 名 称 。

index_or_column index_or_column 是 要 更 新 统 计 的 索 引 或 列 的

名 称 。 索 引 或 列 的 名 称 必 须 循 标 识 符 的 规 则 。只 有 设 定 了 INDEX 或 COLUMN 选 项 , 才 需 要index_or_column 变 量 。

N 表 示 前 述 各 项 可 重 复 。

FULLSCAN FULLSCAN 对 表 格 的 全 部 内 容 进 行 浏 览 。, 而 不是 对 表 格 取 样 。

SAMPLE number{PERCENT | ROWS}

SAMPLE number{PERCENT | ROWS} 表 示 表 格 中 行的 百 分 比 或 取 样 的 行 数 。 如 果 给 定 百 分 比 或 数目 太 小 , 显 示 效 果 不 佳 , 则 Microsoft SQL Server 会 更 改 数 字 。

ALL | COLUMNS | INDEX ALL | COLUMNS | INDEX 确 定 列 统 计 式 、 数 字 、

索 引 统 计 数 字 或 所 有 的 统 计 数 字 是 否 会 受 到 影响 , 缺 省 值 是 只 有 索 引 会 受 到 影 响 。

NORECOMPUTE NORECOMPUTE 禁 止 Microsoft SQL Server 自动 重 建 统 计 , 禁 止 自 动 重 建 统 计 。 执 行sp_autostats 系 统 存 储 过 程 , 或 运 行 不 带NORECOMPUTE 的 UPDATE STATISTICS 可 恢 复 统

计 的 自 动 计 算 。

UPDATETEXT

UPDATETEXT 用 来 更 新 文 本 、 ntext 或 图 像 列 的 一 部 分 。 WRITETEXT 用 来 替 代整 个 文 本 、 ntext 或 图 像 列 。

语法

UPDATETEXT {table_name.dest_column_name dest_text_ptr}

{NULL | insert_offset} {NULL | delete_length}

[ W ITH LOG ]

[ inserted_data |[ { table_name.src_column_name src_text_ptr} ]

变量

table_name.dest_column_name table_name.dest_column_name 是 表 和 文

本、 ntext 或 图 像 列 的 名 称 。

dest_text_ptr dest_text_ptr 由 TETXPTR 函 数 返 回 , 是 要 更 新 的 数 据 的 指 针 。

insert_offset insert_offset 是 新 数 据 插 入 的 起 始 点 。如 果 第 一 个 字 符 的 偏 置 为 0 , 第 二 个 字 符的 偏 置 就 为 1 , 依 次 类 推 。 如 果 列 是 文 本或 图 像 列 , insert_offset 表 示 在 查 找 插入 数 据 的 点 之 前 , 要 从 列 首 开 始 传 送 的字 节 数 。 如 果 该 列 是 ntext 型 数 据 , insert_offset 表 示 字 符 数 , 而 不 是 字 节数 , 因 为 ntext 型 数 据 占 两 个 字 节 。 如果 提 供 的 是 0 , 数 据 就 插 入 到 开 头 , 并 将NULL 追 加 到 数 据 的 末 尾 。

delete_length delete_length 是 要 删 除 的 字 符 数 。 如 果

列 是 文 本 或 图 像 列 , delete_length 表 示在 查 找 要 删 除 的 数 据 的 点 之 前 , 要 从insert_offset 的 位 置 开 始 传 送 的 字 节数 。 如 果 该 列 是 ntext 型 数 据 , delete_length 表 示 字 符 数 , 而 不 是 字 节数 , 因 为 ntext 型 数 据 占 两 个 字 节 。 如果 提 供 的 是 0 , 就 删 除 从 insert_offset 到 数 据 的 末 尾 的 所 有 数 据 。

WITH LOG WITH LOG 指 定 记 录 UPDATETEXT 操 作 , 但

快 速 增 加 记 录 文 件 的 尺 寸 。 如 果 没 有 提供 WITH LOG , 就 必 须 打 开 select into

/ bulkcopy database 选 项 , 该 选 项 可 以用 系 统 存 储 过 程 sp_dboption 打 开 。 请查阅 23 章 的 系 统 存 储 过 程 。

inserted_data inserted_data 表 示 要 在 insert_offset 处 将 数 据 类 型 为 文 本 、 ntext 或 图 像 的 数据 插 入 到 列 中 。

table_name.src_column_name 数 据 类 型 为 文 本 、 ntext 或 图 像 的 限 定 表

的 列 名 , 其 中 包 含 要 插 入 的 数 据 。

src_text_ptr 用 TEXTPTR 函 数 获 取 包 含 要 插 入 的 数 据的 文 本 、 ntext 或 图 像 列 的 指 针 。

示例

下 面 是 UPDATETEXT 语 句 的 示 例 :

EXEC sp_dboption ′ MyDB ′ , ′ select into / bulkcopy ′ , ′ true′ G O

DECLAER @pointervar binary(16) SELECT@pointervar = TEXTPTR(MyTable) FROM MyTable a, MyTable2 b

WHERE a.MyID= b.MyID

UPDATETEXT MyTable.MyColumn @pointervar 56 3 ′ COM ′ G O

EXEC sp_dboption ′ MyDB ′ , ′ select into / bulkcopy ′ , ′ false ′ G O

本 例 中 , TEXTPTR 放 在 一 个 局 部 变 量 中 , 更 新 了 MyColumn 。

UPPER

UPPER 函 数 用 大 写 字 符 替 代 小 写 字 符 。

语法

UPPER ( character_expression)

变 量 character_expression 是 字 符 或 二 进 制 常 数 , 变 量 。

USE

USE 确 定 要 使 用 的 数 据 库 。

语法

USE{database}

变 量 database 是 数 据 库 名 。

USER

该 语 句 与 USER_NAME 相 同 。

USER_ID

USER_ID 是 系 统 函 数 , 它 返 回 用 户 的 数 据 库 用 户 标 识 号 。

语法

USER_ID ([ ′ user′ ])

变 量 user 是 用 户 名 称 。

USER_NAME

USER_NAME 函 数 在 提 供 了 用 户 的 标 识 号 时 返 回 数 据 库 的 用 户 名 。

语法

USER_NAM E ([ id ])

变 量 id 是 用 户 的 标 识 号 。

VAR

VAR 是 集 合 函 数 , 它 返 回 数 值 列 或 表 达 式 中 所 有 值 的 变 体 。 如 果 列 中 的 值 为NULL , 该 列 就 排 除 在 外 。

语法

VAR(expression)

变 量 expression 是 一 个 常 数 、 列 名 或 函 数 , 它 可 以 包 含 运 算 符 , 但 不 能 包含 集 合 函 数 和 子 查 询 程 序 。

varbinary

请 查 阅 本 章 的 “ Data Type ”。

varchar

请 查 阅 本 章 的 “ Data Type ”。

VARP

VARP 是 一 个 集 合 函 数 , 它 返 回 数 值 列 或 表 达 式 中 所 有 值 的 个 数 变 体 。 如 果列 中 的 值 为 NULL , 该 列 就 排 除 在 外 。

语法

VARP(expression)

变 量 expression 是 一 个 常 数 、 列 名 或 函 数 , 它 可 以 包 含 运 算 符 , 但 不 能 包含 集 合 函 数 和 子 查 询 程 序 。

WAITFOR

WAITFOR 语 句 允 许 在 继 续 进 行 处 理 前 等 待 一 段 时 间 。

语法

WAITFOR {DELAY

′ tim e′

| TIME

′ tim e′ }

变量

DELAY DELAY 是 一 个 关 键 字 , 后 跟 要 等 待 的 时 间 , 该 时 间 的最 大 值 为 24 小 时 。

′ time ′ time 的 格 式 为 hh:mm:ss , 可 以 使 用 局 部 变 量 。

TIME TIME 是 一 个 关 键 字 , 后 跟 要 等 到 的 时 刻 。

WHERE

WHERE 子 句 在 用 于 SELECT , UPDATE , INSERT 或 DELETE 语 句 时 确 定 要 检 索 的

行 。

语法

WHERE<search_conditions>

变 量 <search_conditions> 定 义 语 句 所 影 响 的 行 的 限 制 条 件 。

WHILE

WHILE 为 sql_statement 或 语 句 块 的 重 复 执 行 设 置 条 件 。 只 要 特 定 的 条 件 为真 , 这 些 语 句 就 一 直 重 复 执 行 。 WHILE 循 环 中 语 句 的 执 行 可 由 循 环 内 的 BREAK 或 CONTINUE 关 键 字 来 控 制 。

语法

W H ILE Boolean_expression

{sql_statement |statement_block}

[ BREAK ]

{sql_statement |statement_block}

[ CONTINU E ]

变量

Boolean_expression Boolean_expression 返 回 TRUE 或FALSE 。

{sql_statement|statement_bloc k}

{sql_statement |statement_block} 是Transact-SQL 语 句 , 该 语 句 带 有 使 用

BEGIN 和 END 语 法 的 块 。

BREAK BREAK 从 WHILE 循 环 中 退 出 。

CONTINUE CONTINUE 跳 过 CONTINUE 后 、 WHILE 循 环

末 尾 前 的 语 句 , 从 WHILE 循 环 的 开 头 执行。

WRITETEXT

WRITETEXT 允 许 已 有 的 文 本 、 ntext 或 图 像 列 的 不 记 录 的 交 互 更 新 。 该 语 句完 全 覆 盖 了 它 所 操 作 的 列 中 的 任 何 已 有 数 据 。 WRITETEXT 不 能 用 于 视 图 中 的 文本 、 ntext 或 图 像 列 。 在 缺 省 状 态 下 , 不 记 录 WRITETEXT 语 句 , 因 此 , 事 务 处理 记 录 不 会 被 由 这 些 数 据 类 型 组 成 的 大 量 数 据 所 填 满 。

语法

WRITETEXT {

[ W ITH LOG ]

table.column text_ptr }

{ data }

变量

table.column table.column 是 文 本 、 ntext 或 图 像 列 的 限 定 表

名 。

text_ptr 用 TEXTPTR 函 数 获 取 包 含 要 写 入 的 数 据 的 文 本 、

ntext 或 图 像 列 的 指 针 。

WITH LOG WITH LOG 指 定 记 录 WRITETEXT 操 作 , 但 记 录 文 件的 尺 寸 会 迅 速 增 大 。 如 果 没 有 提 供 WITH LOG , 就必 须 打 开 select into / bulkcopy database 选项 , 该 选 项 可 以 用 系 统 存 储 程 序 sp_dboption 打开 。 请 查 阅 第 23 章 的 系 统 存 储 过 程 。

Data data 是 要 写 入 数 据 库 的 文 本 、 ntext 或 图 像 型 数据 。 这 些 数 据 最 大 为 120KB 。

示例

下 面 是 WRITETEXT 语 句 的 示 例 :

EXEC sp_dboption ′ MyDB ′ , ′ select into / bulkcopy ′ , ′ true′ G O

DECLARE @pointervar binary(16) SELECT@pointervar = TEXTPTR(MyTable) FROM MyTable a, MyTable2 b

WHERE a.MyID= b.MyID

WRITETEXT MyTable.MyColumn @pointervar ′ These types of columns are used to hold long text ntext or image data and can hold up to 120 kilobytes at a time .′

G O

EXEC sp_dboption ′ MyDB ′ , ′ select into / bulkcopy ′ , ′ false ′

G O

在 本 例 中 , TEXTPTR 放 在 一 个 局 部 变 量 中 , 并 得 到 一 个 值 。

YEAR

YEAR 函 数 返 回 表 示 所 给 定 日 期 的 年 的 整 数 。

语法

YEAR( data )

变 量 data 是 日 期 表 达 式 。