HOME   |  ABOUT   |  CONTACT US

常见问题

Transact-SQL 概述和语法规则

日期:2014-02-18  浏览:11504

Transact-SQL 对使用 Microsoft® SQL Server™ 非常重要。与 SQL Server 通讯的所有应用程序都通过向服务器发送 Transact-SQL 语句来进行通讯,而与应用程序的用户界面无关。

Transact-SQL 由多种应用程序生成,包括:

通用办公生产应用程序。

使用图形用户界面(GUI)的应用程序,使用户得以选择包含要查看的数据的表和列。

使用通用语言语句确定用户所要查看数据的应用程序。

将其数据存储于 SQL Server 数据库中的商用应用程序。这些应用程序既可以是来自其它厂商的应用程序,也可以是内部编写的应用程序。

使用 osql 等实用工具运行的 Transact-SQL 脚本。

由开发系统(如 Microsoft Visual C++®、Microsoft Visual Basic® 或 Microsoft Visual J++®)使用数据库应用程序接口 (API)(如 ADO、OLE DB 以及 ODBC)创建的应用程序。

从 SQL Server 数据库提取数据的 Web 页。

分布式数据库系统,在此系统中将数据从 SQL Server 复制到各个数据库或执行分布式查询。

数据仓库,从联机事务处理 (OLTP) 系统中提取数据,以及对数据汇总以进行决策支持分析,均可在此仓库中进行。
Transact-SQL 语法规则


Transact-SQL 引用中的语法关系图使用下列规则。

规范                            用于
大写                     Transact-SQL 关键字。
斜体                     Transact-SQL 语法中用户提供的参数。
| (竖线)            分隔括号或大括号内的语法项目。只能选择一个项目。
[ ] (方括号)       可选语法项目。不必键入方括号。
{}(大括号)         必选语法项。不要键入大括号。
[ ,...n ]               表示前面的项可重复 n 次。每一项由逗号分隔。
[ ...n ]                表示前面的项可重复 n 次。每一项由空格分隔。
加粗                  数据库名、表名、列名、索引名、存储过程、实用工具、数据类型名以及必须按所显示的原样键入的文本。
<标签> ::=            语法块的名称。此规则用于对可在语句中的多个位置使用的过长语法或语法单元部分进行分组和标记。适合使用语法块的每个位置由括在尖括号内的标签表示:<标签>。


除非另外指定,否则所有对数据库对象名的 Transact-SQL 引用可以是由四部分组成的名称,格式如下:

[
    server_name.[database_name].[owner_name].
    | database_name.[owner_name].
    | owner_name.
    ]]
object_name

server_name 指定链接服务器名称或远程服务器名称。

当对象驻留在 SQL Server 数据库中时,database_name 指定该 Microsoft® SQL Server™ 数据库的名称。当对象在链接服务器中时则指定 OLE DB 目录。

如果对象在 SQL Server 数据库中,owner_name 指定拥有该对象的用户。当对象在链接服务器中时则指定 OLE DB 架构名称。

object_name 引用对象的名称。
当引用某个特定对象时,不必总是为 SQL Server 指定标识该对象的服务器、数据库和所有者。可以省略中间级节点,而使用句点表示这些位置。对象名的有效格式是:

server.database.owner.object

server.database..object

server..owner.object

server...object

database.owner.object

database..object

owner.object

对象

代码示例规则
除非另外规定,否则示例已使用 SQL Server 查询分析器和以下选项的默认设置进行了测试:

QUOTED_IDENTIFIER

ANSI_NULLS

ANSI_WARNINGS

ANSI_PADDING

ANSI_NULL_DFLT_ON

CONCAT_NULL_YIELDS_NULL
Transact-SQL 引用中的大多数代码示例都已在运行区分大小写排序次序的服务器上进行了测试。测试服务器通常运行 ANSI/ISO 1252 代码页。

Transact-SQL 数据类型分类
具有相似特性的数据类型被划分在分类中。包含两个或三个数据类型的分类一般有一个分类名称,该名称 从这个分类中的数据类型衍生而来。例如,money 和 smallmoney 分类包含 money 数据类型和 smallmoney 数据类型。数据类型名称总是显示为粗体,即使用作分类名称的一部分也是如此。

Transact-SQL 数据类型层次结构
下面的数据类型层次结构显示在 SQL Server 文档中使用的 SQL Server 数据类型分类、子分类和数据类型。例如,精确数字分类包含三个子分类:整数、decimal、money 和 smallmoney。

精确数字分类还包含上述三个子分类中的所有数据类型:bigint、int、smallint、tinyint、bit、decimal、money 和 smallmoney。Transact-SQL 参考中任何对精确数字的引用均指上述八种数据类型。

在该层次结构中,由两种或多种数据类型构成的类别名称中使用连词"和"。在 Transact-SQL 参考中,如果名称所处的上下文更适合用"或",则可能使用连词"或"。

在该层次结构中指定的数据类型还适合同义词。例如,int 引用 int 及其同义词 integer。

数字
        精确数字
                整数
                        bigint
                        int
                        smallint
                        tinyint
                bit
                decimal 和 numeric
                        decimal
                        numeric
                money 和 smallmoney
                        money
                        smallmoney
        近似数字
                float
                real
        datetime 和 smalldatetime
                datetime
                smalldatetime

字符和二进制字符串
        字符串
                char、varchar 和 text
                        char 和 varchar
                                char
                                varchar
                        text
                Unicode 字符串
                        nchar 和 nvarchar
                                nchar
                                nvarchar
                        ntext
        二进制字符串
                binary 和 varbinary
                        binary
                        varbinary
                image

cursor

sql_variant

table

timestamp

uniqueidentifier

Transact-SQL 引用中使用的其它数据类型分类在下面两个层次结构中加以描述:

text、ntext 和 image
        text 和 ntext
                text
                ntext
        image

短字符串
        短字符
                char 和 varchar
                        char
                        varchar
                nchar 和 nvarchar
                        nchar
                        nvarchar
        binary 和 varbinary
                binary
                varbinary