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):

  1. BEGIN ... END,标示SQL指令区块,使用BEGIN ... END包装的指令会被视为同一个指令区块(作用等价于一般语言的{})。
  2. IF ... ELSE的条件式,并可支持嵌套式的IF判断式,若IF或ELSE中的指令包含两个以上,则必须要使用BEGIN ... END来标示区块,否则会发生语法检查错误。
  3. WHILE循环,这也是Transact-SQL中唯一支持的循环,循环中的指令要用BEGIN...END包装。
  4. RETURN,可强制终止区块的运行。
  5. WAITFOR,可强制让陈述式等待指定时间后才继续运行。
  6. 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可以在区块中使用下列方式来处理或引发错误:

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

维基百科地址:Transact-SQL

Transact-SQL的更多相关文章

  1. T-SQL、JET SQL、PL-SQL

    数据库分为网状.层状.关系.对象四种类型,目前的数据库一般都是属于关系数据库(包括MYSQL和SQL SERVER),网状.层状基本上已成历史,对象类型尚未普及. SQL 语言是有 ANSI 标准的. ...

  2. SQL SERVER 简介及应用 - 数据库系统原理

    SQL SERVER 是一个分布式的关系型数据库管理系统(RDBMS),具有客户 - 服务器体系结构,一般发行的版本有企业版.标准版.个人版.开发版. SQL SERVER 提供的服务 MS SQL ...

  3. SQL Server中的锁 详解 nolock,rowlock,tablock,xlock,paglock

    摘自: http://www.myexception.cn/sql-server/385562.html 高手进 锁 nolock,rowlock,tablock,xlock,paglock 锁 no ...

  4. SQL SERVER CURSOR游标的使用(转载)

    一:认识游标 游标(Cursor)它使用户可逐行访问由SQL Server返回的结果集. 使用游标(cursor)的一个主要的原因就是把集合操作转换成单个记录处理方式. 用SQL语言从数据库中检索数据 ...

  5. SQL Server数据库学习总结

    经过一段时间的学习,也对数据库有了一些认识,数据库基本是由表,关系,操作组成:对于初学者首先要学的     一图胜“十”言:SQL Server 数据库总结 一个大概的总结 经过一段时间的学习,也对数 ...

  6. SQL Server自定义函数( 转载于51CTO )

    用户自定义函数自定义函数不能执行一系列改变数据库状态的操作,可以像系统函数在查询或存储过程等的程序中使用,也可以像相信过程一样能过 execute 命令来执行.自定义函数中存储了一个 Transact ...

  7. SQL Server DML(UPDATE、INSERT、DELETE)常见用法(一)

    1.引言 T-SQL(Transact Structured Query Language)是标准的SQL的扩展,是程序和SQL Server沟通的主要语言. T-SQL语言主要由以下几部分组成: 数 ...

  8. 在SQL Server中实现关系模型的阶梯到级别3的t -SQL DML

    在SQL Server中实现关系模型的阶梯到级别3的t -SQL DML 格雷戈里·拉森(Gregory Larsen),2017/08/02(第一次出版:2011 /11/09) 原文链接:http ...

  9. Python和SQL 2017的强大功能

    Python和SQL Server 2017的强大功能   原文来自:https://www.red-gate.com/simple-talk/sql/sql-development/power-py ...

  10. Linux 上的 SQL Server 2017 的安装指南

    一:介绍背景 微软在2016年 3 月首次对外宣布了 Linux 版的 SQL Server,并于2017年 7 月发布了首个公开 RC 版.前几日在美国奥兰多召开的微软 Ignite 2017 大会 ...

随机推荐

  1. C盘空间不足

    C盘空间不足 2014-11-27 Win7实用技巧之七实战C盘空间不足之三招四式

  2. SASS -- 基本认识

    SASS 是一种 CSS 的开发工具,提供了许多便利的写法,大大节省了设计者的时间,使得 CSS 的开发,变得简单和可维护. SASS 提供四个编译风格的选项: * nested:嵌套缩进的 css ...

  3. 使用multimap创建重复键关联容器

    在“使用 <map> 库创建关联容器”一文中,我们讨论了标准库中的 map 关联容器.但那只是 map 容器的一部分.标准库还定义了一个 multimap 容器,它与 map 类似,所不同 ...

  4. KEYUSE

    typedef struct keyuse_t { TABLE *table; Item *val; /**< or value if no field */ table_map used_ta ...

  5. C#分页类

    using System.Linq; using System.Collections.Generic; namespace CommonLibrary { public class PagedLis ...

  6. kafka迁移与扩容

    参考官网site: http://kafka.apache.org/documentation.html#basic_ops_cluster_expansion https://cwiki.apach ...

  7. Warning: Using innodb_additional_mem_pool_size is DEPRECATED

    Warning: Using innodb_additional_mem_pool_size is DEPRECATED. This option may be removed in future r ...

  8. Spring Transaction属性之Propagation

    spring Transaction中有一个很重要的属性:Propagation.主要用来配置当前需要执行的方法,与当前是否有transaction之间的关系. 我晓得有点儿抽象,这也是为什么我想要写 ...

  9. Mac Maven java_home错误

    当maven装好之后出现 $ mvn -versionError: JAVA_HOME is not defined correctly. We cannot execute /usr/libexec ...

  10. Android Studio 学习 - HelloWorld

    今天是学习Android Studio的第2天,加油! 1. 首先要记录下使用Android Studio的一个代码自动完成的功能.平常基本上用Delphi,乍一换工具,各种不习惯,或者说不熟悉.按照 ...