第 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
-
或 102 ANSI yy.mm.dd
-
或 103 英 / 法 dd / mm / yy 4 或 104 德 dd.mm.yy
5 或 105 意 dd-mm-yy 6 或 106 -dd mon yy
-
或 107 -mon dd,yy
-
或 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 |
|
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
- 中 包 含 它 是 为 了 向 后 兼 容 。 利 用 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 语 句 将 用 户 定 义 的 信 息 返 回 到 客 户 机 , 该 信 息 最 多 可 以 有 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 定 义 要 包 括 在 数 据 库 恢 复 中 的 文 件 组 。最 后 一 个 文 件 或 文 件 组 的 恢 复 操 作 将 文 件 向 前 滚 动到 数 据 库 的 其 余 文 件 处 时 , 必 须 立 即 将 记 录 应 用 到数 据 库 文 件 上 。 如 果 备 份 以 后 文 件 没 有 修 改 , 不 必使 用 记 录 , 如 果 最 后 一 次 备 份 这 些 文 件 后 , 在 文 件组 上 建 立 了 索 引 , 就 可 能 需 要 多 个 文 件 组 。
- 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 是 将 下 一 行 添 加 到 表 格 时 根 值 的 增 量值 。 然 后 , 它 从 添 加 的 最 后 一 行 开 始 递 增 , 一 直 到插 入 表 格 中 的 下 一 行 。
- 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) 如 果 给 出 了 索 引 优 化 器 提 示 , 该 索 引 用 以
处 理 查 询 。
- m 表 明 列 的 别 名 可 重 复 。
OPENQUERY OPENQUERY 运 行 通 过 查 询 。 参 看 本 章“ OPENQUERY ”。
OPENROWSET OPENROWSET 包 含 连 接 的 定 义 以 使 用 数 据 源中 的 远 程 数 据 。
SET SET 关 键 字 后 面 的 列 是 要 更 新 的 列 。
column_name column_name 是 格 式 为 form 的 用 逗 号 分 隔开 的 列 表 ,column_name= 表 达 式 。
Expression 是 任 何 有 效 的 SQL 表 达 式 。
DEFAULT DEFAULT 将 某 列 中 的 值 设 置 成 由 DEFAULT 约束 为 该 列 定 义 的 缺 省 值 。
@variable 已 声 明 的 局 部 变 量 , 设 置 为 表 达 式 返 回 的值。
- 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 是 日 期 表 达 式 。