SQLServer2005基础教程清华大学出版社2020年2月18日第1页第5章Transact-SQL语言SQLServer2005基础教程清华大学出版社教学目标教学过程SQLServer2005基础教程清华大学出版社2020年2月18日第2页教学目标理解Transact-SQL语言和SQL语言之间的关系理解Transact-SQL语言的特点和执行方式理解数据定义语言的类型和特点理解数据操纵语言的类型和特点理解数据控制语言的类型和特点理解事务管理语言的类型和特点理解附加语言元素的类型和特点SQLServer2005基础教程清华大学出版社2020年2月18日第3页教学过程5.1概述5.2Transact-SQL语言的特点和执行方式5.3数据定义语言5.4数据操纵语言5.5数据控制语言5.6事务管理语言5.7附加的语言元素5.8数据类型5.9内置函数SQLServer2005基础教程清华大学出版社2020年2月18日第4页5.1概述Transact-SQL语言是微软公司在MicrosoftSQLServer系统中使用的语言,是对SQL语言的一种扩展形式。Transact-SQL语言有4个特点:一是一体化的特点,集数据定义语言、数据操纵语言、数据控制语言、事务管理语言和附加语言元素为一体。二是有两种使用方式,即交互使用方式和嵌入到高级语言中的使用方式。三是非过程化语言,只需要提出“干什么”,不需要指出“如何干”,语句的操作过程由系统自动完成。四是,类似于人的思维习惯,容易理解和掌握。SQLServer2005基础教程清华大学出版社2020年2月18日第5页5.2Transact-SQL语言的特点和执行方式在MicrosoftSQLServer2005系统中,根据Transact-SQL语言的功能特点,可以把Transact-SQL语言分为5种类型,即数据定义语言、数据操纵语言、数据控制语言、事务管理语言和附加的语言元素。在MicrosoftSQLServer2005系统中,主要使用SQLServerManagementStudio工具来执行Transact-SQL语言编写的查询语句。除此之外,还可以使用sqlcmd实用工具来执行Transact-SQL语句。SQLServer2005基础教程清华大学出版社2020年2月18日第6页5.3数据定义语言数据定义语言用于创建数据库和数据库对象,为数据库操作提供对象。例如,数据库以及表、触发器、存储过程、视图、索引、函数、类型、用户等都是数据库中的对象,都需要通过定义才能使用。在DDL中,主要的Transact-SQL语句包括CREATE语句、ALTER语句、DROP语句。SQLServer2005基础教程清华大学出版社2020年2月18日第7页5.4数据操纵语言数据操纵语言主要是用于操纵表、视图中数据的语句。当我们创建表对象之后,初始状态时该表是空的,没有任何数据。如何向表中添加数据呢?这时需要使用INSERT语句。如何检索表中数据呢?可以使用SELECT语句。如果表中数据不正确的,那么可以使用UPDATE语句进行更新。当然,也可以使用DELETE语句删除表中的数据。实际上,DML语言正是包括了INSERT、SELECT、UPDATE、DELETE等语句。SQLServer2005基础教程清华大学出版社2020年2月18日第8页5.5数据控制语言数据控制语言(DCL)主要用来执行有关安全管理的操作,该语言主要包括GRANT语句、REVOKE语句和DENY语句。GRANT语句可以将指定的安全对象的权限授予相应的主体,REVOKE语句则删除授予的权限,DENY语句拒绝授予主体权限,并且防止主体通过组或角色成员继承权限。SQLServer2005基础教程清华大学出版社2020年2月18日第9页5.6事务管理语言在MicrosoftSQLServer系统中,可以使用BEGINTRANSACTION、COMMITTRANSACTION、ROLLBACKTRANSACTION等事务管理语言(TML)语句来管理显式事务。其中,BEGINTRANSACTION语句用于明确地定义事务的开始,COMMITTRANSACTION语句用于明确地提交完成的事务。如果事务中出现了错误,那么可以使用ROLLBACKTRANSACTION语句明确地取消定义的事务。SQLServer2005基础教程清华大学出版社2020年2月18日第10页5.7附加的语言元素除了前面介绍的语句之外,Transact-SQL语言还包括了附加的语言元素。这些附加的语言元素主要包括标识符、变量和常量、运算符、表达式、数据类型、函数、控制流语言、错误处理语言、注释等。下面,详细研究这些内容。SQLServer2005基础教程清华大学出版社2020年2月18日第11页标识符在Transact-SQL语言中,数据库对象的名称就是其标识符。在MicrosoftSQLServer系统中,所有的数据库对象都可以有标识符,例如服务器、数据库、表、视图、索引、触发器、约束等。大多数对象的标识符是必须的,例如,创建表时必须为表指定标识符。但是,也有一些对象的标识符是可选的,例如,创建约束时用户可以不提供标识符,其标识符由系统自动生成。按照标识符的使用方式,可以把这些标识符分为常规标识符和分割标识符两种类型。SQLServer2005基础教程清华大学出版社2020年2月18日第12页变量和常量在MicrosoftSQLServer2005系统中,变量也被称为局部变量,是可以保存单个特定类型数据值的对象。常量是表示特定数据值的符号,常量也被称为字面量。常量的格式取决于它所表示的值的数据类型。SQLServer2005基础教程清华大学出版社2020年2月18日第13页运算符运算符是一种符号,用来指定要在一个或多个表达式中执行的操作。在MicrosoftSQLServer2005系统中,可以使用的运算符可以分为算术运算符、逻辑运算符、赋值运算符、字符串串联运算符、按位运算符、一元运算符、比较运算符等。SQLServer2005基础教程清华大学出版社2020年2月18日第14页表达式在Transact-SQL语言中,表达式是由标识符、变量、常量、标量函数、子查询、运算符等的组合。在MicrosoftSQLServer2005系统中,表达式可以在多个不同的位置使用,这些位置包括查询中检索数据的一部分、搜索数据的条件等。表达式可以分为简单表达式和复杂表达式两种类型。SQLServer2005基础教程清华大学出版社2020年2月18日第15页控制流语言一般地,结构化程序设计语言的基本结构是顺序结构、条件分支结构和循环结构。顺序结构是一种自然结构,条件分支结构和循环结构都需要根据程序的执行状况对程序的执行顺序进行调整。在Transact-SQL语言中,用于控制语句流的语言被称为控制流语言。MicrosoftSQLServer2005系统提供了8种控制流语句,这些语句如表5-7所示。SQLServer2005基础教程清华大学出版社2020年2月18日第16页错误捕捉语言为了增强程序的健壮性,必须对程序中可能出现的错误进行及时地处理。在Transact-SQL语言中,可以使用两种方式处理发生的错误:使用TRY…CATCH构造和使用@@ERROR函数。SQLServer2005基础教程清华大学出版社2020年2月18日第17页注释所有的程序设计语言都有注释。注释是程序代码中不执行的文本字符串,用于对代码进行说明或暂时仅用正在进行诊断的部分语句。一般地,注释主要描述程序名称、作者名称、变量说明、代码更改日期、算法描述等。在MicrosoftSQLServer系统中,支持两种注释方式,即双连字符(--)注释方式和正斜杠星号字符对(/*…*/)注释方式。SQLServer2005基础教程清华大学出版社2020年2月18日第18页5.8数据类型本节将从六个方面研究Transact-SQL语言的数据类型。首先,分析数据类型的概念、特点和主要类型。然后,讲述数字数据类型的主要内容和特点。之后,描述字符数据类型的使用方式。接下来,研究日期和时间数据类型的输入输出特点。接着,分析二进制数据类型的特点。最后,讲述其他数据类型的内容和特点。SQLServer2005基础教程清华大学出版社2020年2月18日第19页数据类型的类型和特点在MicrosoftSQLServer2005系统中,需要使用数据类型的对象包括:表中的列、视图中的列、定义的局部变量、存储过程中的参数、Transact-SQL函数、存储过程的返回值等。MicrosoftSQLServer2005系统提供了28种数据类型。这些数据类型可以分为数字数据类型、字符数据类型、日期和时间数据类型、二进制数据类型以及其他数据类型。SQLServer2005基础教程清华大学出版社2020年2月18日第20页数字数据类型使用数字数据的数据类型被称为数字数据类型。这些数据类型的数字可以参加各种数学运算。我们还可以为这些数据类型继续进行分类。从这些数字是否有小数,可以把这些数据类型分为整数类型和小数类型。从这些数字的精度和位数是否可以明确地确定,可以把这些数据类型分为精确数字类型和近似数字类型。从是否可以表示金额,可以分为货币数字类型和非货币数字类型。SQLServer2005基础教程清华大学出版社2020年2月18日第21页字符数据类型字符数据类型用于存储固定长度或可变长度的字符数据。在MicrosoftSQLServer2005系统中,提供了CHAR、VARCHAR、TEXT、NCHAR、NVARCHAR、NTEXT等6种数据类型。前3种数据类型是非Unicode字符数据,后3种是Unicode字符数据。SQLServer2005基础教程清华大学出版社2020年2月18日第22页时间和日期数据类型如果希望存储日期和时间数据,那么可以使用DATETIME或SMALLDATETIME数据类型。这两种数据类型的差别在于其表示的日期和时间范围不同、时间精确度也不同。DATETIME数据类型可以表示的范围是1753年1月1日至9999年12月31日,时间精确度是3.33毫秒。SMALLDATETIME数据类型可以表示的范围是1900年1月1日至2079年12月31日,时间精确度是1分钟。SQLServer2005基础教程清华大学出版社2020年2月18日第23页二进制数据类型二进制数据类型包括BINARY、VARBINARY、IMAGE等3种数据类型,可以用于存储二进制数据。其中,BINARY可以用于存储固定长度的二进制数据,VARBINARY用于存储可变长度的二进制数据。微软建议使用VARBINARY(MAX)代替IMAGE数据类型SQLServer2005基础教程清华大学出版社2020年2月18日第24页其他数据类型除了前面介绍的数据类型之外,MicrosoftSQLServer2005系统还提供了CURSOR、SQL_VARIANT、TABLE、TIMESTAMP、UNIQUEIDENTIFIER、XML等数据类型。使用这些数据类型可以完成特殊数据对象的定义、存储和使用。SQLServer2005基础教程清华大学出版社2020年2月18日第25页5.9内置函数可以把MicrosoftSQLServer2005系统提供的内置函数分为13种类型,每一种类型的内置函数都可以完成某种类型的操作,这些类型的函数名称和主要功能如表5-8所示。