Transact-SQL 语法约定 (Transact-SQL)

适用于:SQL Server Azure SQL 数据库 Azure SQL 托管实例 Azure Synapse Analytics Analytics Platform System (PDW) Microsoft Fabric 中的 SQL 终结点 Microsoft Fabric 中的仓库 Microsoft Fabric SQL 数据库

下表列出了 Transact-SQL 参考的语法关系图中使用的约定,并进行了说明。

约定 用于
大写或 UPPERCASE Transact-SQL 关键字。
斜体 用户提供的 Transact-SQL 语法的参数。
粗体 完全按显示原样键入数据库名称、表名称、列名、索引名称、存储过程、实用工具、数据类型名称和文本。
| (垂直条) 分隔括号或大括号中的语法项。 只能使用其中一项。
[ ](方括号) 可选语法项。
{ } (大括号) 必选语法项。 不要键入大括号。
[ , ...n ] 指示前面的项可以重复 n 次。 匹配项由逗号分隔。
[ ...n ] 指示前面的项可以重复 n 次。 每一项由空格分隔。
; Transact-SQL 语句终止符。 虽然此版本的 SQL Server 中大部分语句都不需要分号,但今后发布的版本需要分号。
<label> ::= 语法块的名称。 使用此约定,可以对能在一条语句中的多个位置使用的过长语法段或语法单元进行分组和标记。 可以使用语法块的每个位置都用雪佛龙: <标签>来指示标签。

集是表达式的集合,例如 <分组集>;列表是集的集合,例如 <组合元素列表>。

多部分名称

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

<server_name>.[<database_name>].[<schema_name>].<object_name>

| <database_name>.[<schema_name>].<object_name>

| <schema_name>.<object_name>

| <object_name>

  • server_name

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

  • database_name

    如果对象驻留在 SQL Server 的本地实例中,则指定 SQL Server 数据库的名称。 如果对象在链接服务器中,则 database_name 将指定 OLE DB 目录 。

  • schema_name

    如果对象在 SQL Server 数据库中,则指定包含对象的架构的名称。 如果对象在链接服务器中,则 schema_name 将指定 OLE DB 架构名称 。

  • object_name

    对象的名称。

引用某个特定对象时,不必总是指定服务器、数据库和架构,SQL Server 数据库引擎 也能标识对象。 不过,如果找不到对象,便会返回错误。

为了避免名称解析错误,建议只要指定了架构范围内的对象时就指定架构名称。

若要省略中间节点,请使用句点来指示这些位置。 下表显示了对象名的有效格式。

对象引用格式 说明
<server_name>.<database_name>.<schema_name>.<object_name> 四个部分的名称。
<server_name>.<database_name>..<object_name> 省略架构名称。
<server_name>..<schema_name>.<object_name> 省略数据库名称。
<server_name>...<object_name> 省略数据库和架构名称。
<database_name>.<schema_name>.<object_name> 省略服务器名。
<database_name>..<object_name> 省略服务器和架构名称。
<schema_name>.<object_name> 省略服务器和数据库名称。
<object_name> 省略服务器、数据库和架构名称。

数据类型

在文章中使用内联时,数据类型以小写和粗体呈现。 例如 intvarchar(255)

在 Transact-SQL 代码块中使用时,数据类型以大写形式呈现。 例如:

DECLARE @int_example AS INT;
DECLARE @varchar_example AS VARCHAR(255);
DECLARE @bit_example AS BIT;

代码示例约定

除非专门说明,否则,在 Transact-SQL 参考中提供的示例都已使用 SQL Server Management Studio 及其以下选项的默认设置进行了测试:

  • ANSI_NULLS
  • ANSI_NULL_DFLT_ON
  • ANSI_PADDING
  • ANSI_WARNINGS
  • CONCAT_NULL_YIELDS_NULL
  • QUOTED_IDENTIFIER

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

许多代码示例用字母 N 作为 Unicode 字符串常量的前缀。 如果没有 N 前缀,则字符串会被转换为数据库的默认代码页。 此默认代码页可能无法识别某些字符。

“适用范围”参考

Transact-SQL 参考文章涵盖了多个版本的 SQL Server(从 SQL Server 2008 (10.0.x) 开始),以及 Azure SQL 数据库、Azure SQL 托管实例、Azure Synapse Analytics 和 Analytics Platform System (PDW)。

每篇文章顶部附近的一节指示哪些产品支持文章的主题。 如果省略了某产品,文章描述的功能就不适用于此产品。

文章的常规主题可能用于某一产品,但在某些情况下,所有参数都不受支持。 例如,在 SQL Server 2012 (11.x)中介绍了包含的数据库用户。 CREATE USER在任何 SQL Server 产品中使用语句;但WITH PASSWORD语法不能与旧版本一起使用。 对部分的额外 应用 将插入到文章正文中的相应参数说明中。