浅谈Transact-SQL

所属分类: 数据库 / MsSql 阅读数: 715
收藏 0 赞 0 分享

Transact-SQL(又称T-SQL),是在Microsoft SQL Server和Sybase SQL Server上的ANSI SQL实现,与Oracle的PL/SQL性质相近(不只是实现ANSI SQL,也为自身数据库系统的特性提供实现支持),目前在Microsoft SQL Server和Sybase Adaptive Server中仍然被使用为核心的查询语言。

Transact-SQL是具有批量与区块特性的SQL指令集合,数据库开发人员可以利用它来撰写数据部份的商业逻辑(Data-based Business Logic),以强制限制前端应用程序对数据的控制能力。同时,它也是数据库对象的主要开发语言。

语言结构

Transact-SQL以ANSI SQL为主要组成,目前Microsoft实现的Transact-SQL可支持到ANSI SQL-92标准。

ANSI SQL基础语法支持

DDL

主条目:数据定义语言

DDL(Data Definition Language)是对于数据库对象的控制语法,对数据库对象(如数据表,预存程序,函数或自定义类型等)的新增,修改和删除都使用此语法。

CREATE(创建数据库对象)ALTER(修改数据库对象)DROP(删除数据库对象)

DML

主条目:数据操纵语言

DML(Data Manipulation Language)是一般开发人员俗称的CRUD(Create/Retrieve/Update/Delete)功能,意指数据的新增/截取/修改/删除四个功能。

SELECT(R)INSERT(C)UPDATE(U)DELETE(D)

DCL

主条目:数据控制语言

DCL(Data Control Language)是由数据库所提供的保安功能,对于数据库与数据库对象的访问原则与权限,都由DCL定义之。

GRANT(赋与权限)REVOKE(撤消权限)批量

Transact-SQL可以使用分号";"来分区不同的SQL指令。例如:

INSERT INTO myTable (myText) VALUES (@myText); SELECT @@IDENTITY

控制流语法

Transact-SQL可支持下列的控制流程语法(control-flow):

BEGIN ... END,标示SQL指令区块,使用BEGIN ... END包装的指令会被视为同一个指令区块。IF ... ELSE的条件式,并可支持嵌套式的IF判断式,若IF或ELSE中的指令包含两个以上,则必须要使用BEGIN ... END来标示区块,否则会发生语法检查错误。WHILE循环,这也是Transact-SQL中唯一支持的循环,循环中的指令要用BEGIN...END包装。RETURN,可强制终止区块的运行。WAITFOR,可强制让陈述式等待指定时间后才继续运行。GOTO,可导向运行指令到指定的位置。自定义变量

在Transact-SQL中,可以利用DECLARE来声明变量,用SET来设置变量值,用SELECT @var = column的方式,由一个陈述式的回传值中来取得变量值。

DECLARE @v INT -- declare a variableSET @v = 50 -- set variable directly.SELECT @v = SUM(Qty) FROM SaleItemRecords WHERE SaleID = 53928 -- set variable from a result of statement

错误处理

Transact-SQL可以在区块中使用下列方式来处理或引发错误:

RAISERROR,掷出自定义的错误状况。TRY ... CATCH,使用结构化的方式来处理错误(只有Microsoft SQL Server实现的Transact-SQL支持)。PRINT,可以印出变量值。

微软Transact-sql介绍地址:http://msdn.microsoft.com/zh-cn/library/bb510741.aspx

更多精彩内容其他人还在看

SQL Server Alert发送告警邮件少了的原因

这篇文章主要为大家详细介绍了SQL Server Alert发送告警邮件少了的原因,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

分享一下SQL Server执行动态SQL的正确方式

这篇文章主要介绍了SQL Server执行动态SQL正确方式,需要的朋友可以参考下
收藏 0 赞 0 分享

SQL SERVER 中构建执行动态SQL语句的方法

这篇文章主要介绍了SQL SERVER 中构建执行动态SQL语句的方法,需要的朋友可以参考下
收藏 0 赞 0 分享

用非动态SQL Server SQL语句来对动态查询进行执行

此文章主要向大家讲述的是非动态SQL ServerSQL语句执行动态查询,在实际操作中我尝试在一个存储过程中,来进行传递一系列以逗号划定界限的值,来对结果集进行限制。但是无论什么时候,我在IN子句中使用变量,都会得到错误信息
收藏 0 赞 0 分享

SQL Server Parameter Sniffing及其改进方法

这篇文章主要介绍了SQL Server Parameter Sniffing及其改进方法,需要的朋友可以参考下
收藏 0 赞 0 分享

sqlserver实现树形结构递归查询(无限极分类)的方法

下面小编就为大家带来一篇sqlserver实现树形结构递归查询(无限极分类)的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

SQL Server Alwayson添加监听器失败的解决方法

这篇文章主要为大家详细介绍了SQL Server Alwayson添加监听器失败的解决方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

SqlServer将查询结果转换为XML和JSON

这篇文章主要介绍了SqlServer将查询结果转换为XML和JSON的相关资料,需要的朋友可以参考下
收藏 0 赞 0 分享

MSSQL批量插入数据优化详细

这篇文章主要为大家分享一下批量插入数据的方法,有时候我们需要插入大量的数据那么就需要优惠了,要不根本受不了
收藏 0 赞 0 分享

SQL Server 性能调优之查询从20秒至2秒的处理方法

这篇文章主要介绍了SQL Server 性能调优之查询从20秒至2秒的处理方法,需要的朋友可以参考下
收藏 0 赞 0 分享
查看更多