频 道 直 达 - 新闻 - 培训 - 软件 - 教程 - 前沿 - 组网 - 系统应用 - 安全 - 编程 - 存储 - 操作系统 - 数据库 - 服务器 - 专题 - 产品 - 案例库 - 读书 - 博客 - BBS
51CTO.COM_中国最大的网络技术网站
找资料:

1.2.1 T-SQL

作者: 罗骏 出处:清华大学出版社  2007-11-09 15:10    砖    好    评论   进入论坛
阅读提示:《SQL实用简明教程》(第2版)第一章主要介绍的是数据库和SQL语言。本文讲的是T-SQL。

1.2  SQL 的扩展

现有的SQL标准还不适用于为关系型数据库编写各种类型的程序。数据库厂商为满足各自用户的需求,开始扩展SQL语言能力,改善SQL的基本功能。

1.2.1  T-SQL

Transact_SQL(或称作T-SQL)是Microsoft的一个程序扩展集合。T-SQL为SQL增加了一些功能,包括事务控制、异常错误处理和行处理。即便是创建索引或执行条件操作这样一些最简单的操作,都是对SQL的扩展。T-SQL允许用户在T-SQL对象中声明和使用局部变量和常量。这些变量和常量必须是数据库能识别的类型。

1. T-SQL语言的主要组成部分

T-SQL作为SQL的扩展,其组成部分包括数据定义语言、数据控制语言、数据操纵语言和系统存储过程。其相应内容如下。

● 数据定义语言(DDL)是指用来定义和管理数据库以及数据库中的各种对象的语句,包括CREATE、ALTER和DROP等语句。
● 数据控制语言(DCL)是用来设置或者更改数据库用户或角色权限的语句,包括GRANT、DENY、REVOKE等语句,在默认状态下,只有sysadmin、dbcreator、db_owner或db_securityadmin等角色的成员才有权执行数据控制语言。
● 数据操纵语言(DML)是指用来查询、添加、修改和删除数据库中数据的语句,包括SELECT、INSERT、UPDATE、DELETE等这些语句。在默认情况下,只有sysadmin、dbcreator、db_owner或db_datawriter等角色的成员才有权执行数据操纵语言。
● 系统存储过程(System Stored Procedure)是SQL Server系统创建的存储过程,它的目的在于能够方便地从系统表中查询信息,或者完成与更新数据库表相关的管理任务或其他的系统管理任务。系统存储过程可以在任意一个数据库中执行。系统存储过程创建并存放于系统数据库master中,并且名称以sp_或者xp_开头。

2. 变量

变量是一种语言中必不可少的组成部分。T-SQL语言中有两种形式的变量,一种是用户自己定义的局部变量,另外一种是系统提供的全局变量。

局部变量是一个能够拥有特定数据类型的对象,它的作用范围仅限制在程序内部。局部变量可以作为计数器来计算循环执行的次数,或是控制循环执行的次数。另外,利用局部变量还可以保存数据值,以供控制流语句测试以及保存由存储过程返回的数据值等。局部变量被引用时要在其名称前加上标志“@”,而且必须先用DECLARE命令定义后才可以使用。

使用全局变量时应该注意以下几点。

● 全局变量不是由用户的程序定义的,它们是在服务器级定义的。
● 用户只能使用预先定义的全局变量。
● 引用全局变量时,必须以标记符“@@”开头。

注意:
局部变量的名称不能与全局变量的名称相同,否则会在应用程序中出现不可预测的结果。

3. 运算符

运算符是一些符号,它们能够用来执行算术运算、字符串连接、赋值以及在字段、常量和变量之间进行比较。在T-SQL中,运算符主要有以下6大类:算术运算符、赋值运算符、位运算符、比较运算符、逻辑运算符以及字符串串联运算符。如下所示。

● 算术运算符可以在两个表达式上执行数学运算,这两个表达式可以是数字数据类型分类的任何数据类型。算术运算符包括加(+)、减(–)、乘(*)、除(/)和取模(%)。
● 赋值运算符的作用是能够将数据值指派给特定的对象。另外,还可以使用赋值运算符在列标题和为列定义值的表达式之间建立关系。T-SQL 中只有一个赋值运算符,即等号(=)。
● 位运算符的作用是能够在整型数据或者二进制数据(image 数据类型除外)之间执行位操作。此外,在位运算符左右两侧的操作数不能同时是二进制数据。
● 比较运算符用于比较两个表达式的大小或是否相同,其比较的结果是布尔值,即TRUE(表示表达式的结果为真)、FALSE(表示表达式的结果为假)以及UNKNOWN。除了 text、ntext 或 image 数据类型的表达式外,比较运算符可以用于所有的表达式。
● 逻辑运算符可以把多个逻辑表达式连接起来。逻辑运算符包括AND、OR和NOT等运算符。逻辑运算符和比较运算符一样,返回带有 TRUE 或 FALSE 值的布尔数据类型。
● 字符串串联运算符允许通过加号 (+) 进行字符串串联,这个加号即被称为字符串串联运算符。例如对于语句SELECT 'abc' + 'def ',其结果为abcdef。

运算符的优先等级从高到低如下所示。

(1) 括号:()
(2) 乘、除、求模运算符:*、/、%
(3) 加减运算符:+、-
(4) 比较运算符:=、>、<、>=、<=、<>、!=、!>、!<
(5) 位运算符:^、&、|
(6) 逻辑运算符:NOT
(7) 逻辑运算符:AND
(8) 逻辑运算符:OR

4. 函数

在T-SQL语言中,函数被用来执行一些特殊的运算以支持SQL Server的标准命令。T-SQL 编程语言提供了3种函数。
● 行集函数:可以在T-SQL语句中当作表引用。
● 聚合函数:用于对一组值执行计算并返回一个单一值。
● 标量函数:用于对传递给它的一个或者多个参数值进行处理和计算,并返回一个单一值。

5. T-SQL的语法约定

T-SQL的语法约定如表1-1所示。

表1-1  T-SQL 参考的语法关系图中使用的约定

   

   

大写

T-SQL 关键字

斜体

用户提供的 T-SQL 语法的参数

粗体

数据库名、表名、列名、索引名、存储过程、实用工具、数据类型名以及必须按所显示的原样输入的文本

|(竖线)

分隔括号或大括号中的语法项。只能使用其中一项

[ ](方括号)

可选语法项。不要输入方括号

{ }(大括号)

必选语法项。不要输入大括号

[,...n]

指示前面的项可以重复 n 次。各项之间以逗号分隔

[...n]

指示前面的项可以重复 n 次。每一项由空格分隔

[;]

可选的 T-SQL 语句终止符。不要输入方括号

语法块的名称。此约定用于对可在语句中的多个位置使用的过长语法段或语法单元进行分组和标记。可使用的语法块的每个位置由括在尖括号内的标签指示

除非另外指定,否则,所有对数据库对象名的 T-SQL 引用将是由4部分组成的名称,语法格式如下:
server_name.[database_name].[schema_name].object_name
| database_name.[schema_name].object_name
| schema_name.object_name
| object_name


上述语法中各参数的含义如表1-2所示。

表1-2  对象命名参数含义

server_name

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

database_name

如果对象驻留在 SQL Server 的本地实例中,则指定 SQL Server 数据库的名称

schema_name

如果对象在 SQL Server 数据库中,则指定包含对象的架构的名称

object_name

对象的名称

注意:
引用某个特定对象时,不必总是指定服务器、数据库和架构供 SQL Server数据库引擎标识该对象。但是,如果找不到对象,就会返回错误消息。
【责任编辑:雪花 TEL:(010)68476606】

回书目   上一节   下一节
专题
如何有效防御SQL注入攻击
Sun以10亿美元并购开源数据库厂商MySQL
Oracle数据库开发之PL/SQL基础应用
Oracle数据库开发基础教程
2006年数据库频道热点关注
我也说两句

匿名发表

(如果看不清请点击图片进行更换)


中 国 最 大 的 网 络 技 术 网 站 ·
技 术 成 就 梦 想
订阅技术快讯
电子杂志下载
名称:SQL Server数据库管理精品黄皮书
简介:书中文章经过精挑细选,便于用户能根据自己的实际工作和学习,快速在本书寻找到相关资料。内容涵盖了SQL Server的安装与升级、语句查询、数据备份和恢复、自动化任务、数据同步、数据字典、安全和预防、性能和优化、集群等各方面应用信息,以及DBA管理人员在数据库管理工作中
名称:2007路由技术大全
简介:《2007路由技术大全》由51CTO.com网站特别策划制作,该书包括路由器技术、路由器产品、路由器配置、安全设置、路由器故障处理、路由器密码恢复,以及广大网友在实践使用中的心得经验和技巧文章,内容注重实用性,适用于初学者入门,也适合多年从业者提高,是一本实践和理论完
名称:网络安全精品应用黄皮书
简介:《2007精品网络安全黄皮书》包括了9个大类24个小类, 800余篇文章,内容包含了熊猫烧香病毒、DDOS攻击、ARP病等热点问题的介绍及解决方案。从病毒查杀、防范、系统、数据等各方面的安全设置到黑客技术的了解、防范,涉及到了安全应用的全部领域, 由浅至深内容全面。
浏览器的战国时代
浏览器的战国时代
ARP攻击防范与解决方案
ARP攻击防范与解决方案
NAC安全访问控制
NAC安全访问控制
· NAC安全访问控制
· 网络布线测试仪器
· Windows Server 2008专..
· Windows远程桌面应用
· 网络故障排除宝典
· 运营商封堵ADSL共享 中..
· 解析35岁技术人的价值..
· 世纪枭雄比尔盖茨的王..
· 主流品牌防火墙配置
· ASP.NET开发教程
· 超级计算机TOP500专题
· Vista SP1对决XP SP3
· SQL Server 2008/2005..
· 程序员如何成长?
· C#技术开发指南
· 虚拟化技术还有点“虚”
ARP攻击防范与解决方案
ARP攻击防范与解决方案
SQL Server 2008/2005全解
SQL Server 2008/2005全解
SOA 面向服务架构
SOA 面向服务架构
· SOA 面向服务架构
· SQL Server 2008/2005..
· Apache技术专题
· 三层交换技术专题
· SQL Server入门到精通
· Windows远程桌面应用
· C#技术开发指南
· Apache技术专题
· Windows集群服务应用
· C#技术开发指南
· 国际文档格式标准开战
· 路由器设置与口令恢复
· Linux 集群技术专题
· PHP开发应用手册
· SOA 面向服务架构
· 企业数据恢复指南
ARP攻击防范与解决方案
ARP攻击防范与解决方案
SQL Server 2008/2005全解
SQL Server 2008/2005全解
SQL Server入门到精通
SQL Server入门到精通
· SQL Server入门到精通
· SQL Server 2008/2005..
· SOA 面向服务架构
· Apache技术专题
· C#技术开发指南
· 三层交换技术专题
· Apache技术专题
· C#技术开发指南
· Windows远程桌面应用
· 企业数据恢复指南
· Windows集群服务应用
· 路由器设置与口令恢复
· Linux 集群技术专题
· SOA 面向服务架构
· 了解统一威胁管理(UTM)..
· 反垃圾邮件技术应用