
4.2 T-SQL
4.2.1 T-SQL的特点及分类
SQL是一种操作数据库的结构化查询语言,它强调的是语言的结构化和对以二维表为基础的关系数据库的操作能力。SQL的前身是1974年由Chamberlin和Boyce提出的SE-QUEL。1975至1979年IBM公司的San Jose研究所在研制关系数据库管理system R时,将其修改为功能极强的关系数据库标准语言,称为SEQUEL2,也就是现在的SQL。1986年10月,美国国家标准局(ANSI)的数据库委员会批准了将SQL作为关系数据库语言的美国标准,1987年6月国际标准化组织(ISO)将其采纳为国际标准,这个标准也称为SQL86。随着SQL标准化工作的不断修订完善,相继出现了SQL89、SQL92(也称为SQL2)。后来,在SQL2的基础上增加了面向对象的内容,形成新标准SQL3(又称SQL99)。新标准SQL3的12个标准文本《信息技术数据库语言SQL》从1999年陆续颁布。各种版本的SQL几乎是相同的,只是在个别语法上、在对标准SQL的扩充方面略有不同。目前使用的SQL有以下特点。
(1)非过程化语言。
SQL是一个高度非过程化的语言。用户只要提出“做什么”,而不必指出“怎么做”,SQL就可以将要求交给系统,由系统自动完成全部操作。
SQL允许用户在高层的数据结构上工作,而不对单个记录进行操作,可操作记录集。所有SQL语句接受集合作为输入,返回集合作为输出。SQL的集合特性允许一条SQL语句的结果作为另一条SQL语句的输入。SQL不要求用户指定对数据的存放方法。这种特性使用户更易集中精力于要得到的结果。所有SQL语句均使用查询优化器,它是关系数据库管理系统的一部分,由它决定对指定数据存取的最快速度的手段。查询优化器知道存在什么索引,哪儿使用合适,而用户无须知道表是否有索引以及表有什么类型的索引。
(2)统一的语言。
SQL可用于所有用户的DB活动模型,包括系统管理员、数据库管理员、应用程序员、决策支持系统人员及许多其他类型的终端用户。SQL为许多任务提供了命令,包括:
①查询数据;
②在表中插入、修改和删除记录;
③建立、修改和删除数据对象;
④控制对数据和数据对象的存取;
⑤保证数据库的一致性和完整性。
(3)SQL是关系数据库的公共语言。
由于所有主要的关系数据库管理系统都支持SQL,故用户可将使用SQL的技能从一个关系数据库管理系统转到另一个关系数据库管理系统。用SQL编写的程序是可以移植的。
(4)SQL的命令简洁,易学易用。
尽管SQL功能极强,但由于设计巧妙,故只用少数的几条命令就完成了所有的核心功能。另外,SQL的语法也很简单,接近自然语言(英语),因而易于学习和掌握。
(5)SQL支持数据库的三层模式结构。
与概念模式的概念文件对应的是基本表,与存储模式对应的是存储文件,与外模式对应的是视图和部分基本表。用户看到的是视图或基本表,基本表和视图都是关系,用户可以在其上进行查询操作,而存储文件对用户来说是透明的。
由于SQL具有功能丰富、使用方式灵活、语言简洁易学等突出优点,故在计算机工业界和计算机用户中倍受欢迎。当前流行的关系数据库管理系统都支持SQL。SQL成为国际标准后,对数据库以外的领域也产生了很大的影响,不少的软件产品将SQL的数据查询功能与图形功能、软件工程工具、软件开发工具、人工智能程序等结合起来。
T-SQL是微软公司在SQL Server数据库管理系统中SQL3的实现,是微软对SQL的扩展,具有SQL的主要特点,同时增加了变量、运算符、函数、流程控制和注释等语言元素,使其功能更加强大。T-SQL对于SQL Server 2005非常重要,在SQL Server 2005中使用图形界面完成的所有功能都可以利用T-SQL来完成。使用T-SQL操作时,与SQL Server通信的所有应用程序都通过向服务器发送T-SQL语句来实现,而与应用程序的界面无关。
根据T-SQL语句的具体功能,可以将T-SQL语句分为四个部分,即数据定义语言(Data Definition Language, DDL)、数据操作语言(Data Manipulation Language, DML)、数据控制语言(Data Control Language, DCL)和T-SQL增加的语言元素。
(1)数据定义语言。
用于执行数据库的任务,对数据库以及数据库中的各种对象进行创建、删除、修改等操作。T-SQL数据定义语言包括的主要语句及功能参见表4.2。
表4.2 SQL数据定义语言

(2)数据操作语言。
用于操作数据库中的各种对象,检索和修改数据。T-SQL数据操作语言包括的主要语句及功能参见表4.3。
表4.3 T-SQL数据操作语言

(3)数据控制语言。
用于安全管理,确定哪些用户可以查看或修改数据库中的数据。T-SQL数据控制语言包括的主要语句及功能参见表4.4。
表4.4 T-SQL数据控制语言

T-SQL各语句的语法、使用方法及举例详见本章4.3节至4.10节的相关内容。
(4)T-SQL增加的语言元素。
T-SQL增加的语言元素不是SQL 3的标准内容,而是T-SQL为了编写脚本而增加的语言元素,包括变量、运算符、函数、注释语句、流程控制语句、事务控制语句等。这些T-SQL语句都可以在SQL Server 2005的查询分析器中交互执行。