4.1 Transact-SQL概述

在前面的章节中,其实已经使用了T-SQL语言,只是没有系统地对该语言进行介绍。事实上不管应用程序的用户界面如何,与SQL Server实例通信的所有应用程序都通过将Transact-SQL语句发送到服务器进行通信。

对数据库进行查询和修改操作的语言叫作SQL,其含义是结构化查询语言(Structured Query Languate)。SQL有许多不同的类型,有3个主要的标准:① ANSI(美国国家标准机构)SQL;②对ANSI SQL修改后在1992年采纳的标准,称为SQL92或SQL2;③最近的SQL99标准。SQL99标准从SQL2扩充而来并增加了对象关系特征和许多其他新功能。其次,各大数据库厂商提供不同版本的SQL。这些版本的SQL支持原始的ANSI标准,而且在很大程度上支持新推出的SQL92标准。

Transact-SQL语言是SQL的一种实现形式,它包含了标准的SQL语言部分。标准的SQL语句几乎完全可以在Transact-SQL语言中执行,因为包含了这些标准的SQL语言来编写应用程序和脚本,所以提高了它们的可移植性。Transact-SQL语言在具有SQL的主要特点的同时,还增加了变量、运算符、函数、流程控制和注释等语言因素,使得T-SQL的功能更加强大。另外,在标准的ANSI SQL99之外,Transact-SQL语言根据需要又增加了一些非标准的SQL语言。在有些情况下,使用非标准的SQL语言,可以简化一些操作步骤。

4.1.1 什么是Transact-SQL

Transact-SQL是Microsoft公司在关系型数据库管理系统SQL Server中的SQL3标准的实现,是微软对SQL的扩展。在SQL Server中,所有与服务器实例的通信,都是通过发送T-SQL语句到服务器来实现的。根据其完成的具体功能,可以将T-SQL语句分为4大类,分别为数据操作语句、数据定义语句、数据控制语句和一些附加的语言元素。

数据操作语句:

数据定义语句:

数据控制语句:

附加的语言元素:

4.1.2 T-SQL语法的约定

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

表4-1 语法约定

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

  • server_name:指定链接的服务器名称或远程服务器名称。
  • database_name:表示如果对象驻留在SQL Server的本地实例中,则指定SQL Server数据库的名称。如果对象在链接服务器中,则database_name将指定OLE DB目录。
  • schema_name:表示如果对象在SQL Server数据库中,则指定包含对象的架构的名称。如果对象在链接服务器中,则schema_name将指定OLE DB架构名称。
  • object_name:表示对象的名称。

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

除了使用时完全限定引用时的4个部分,在引用时若要省略中间节点,需要使用句点来指示这些位置。表4-2显示了引用对象名的有效格式。

表4-2 引用对象名格式

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