浅谈Transact-SQL
作者:hebedich 发布时间:2024-01-23 20:13:22
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


猜你喜欢
- 通过在File->setting->File and Code Templates设置模板代码,这样就可以在新建python文件
- os.makedir(path)和os.makedirs(path)今天工作中将hadoop文件同步到服务器磁盘,由于文件类别目录较多,迁移
- memcached是一套分布式的高速缓存系统,由LiveJournal的Brad Fitzpatrick开发,但被许多网站使用。这是一套开放
- 前言:『入门MySQL』系列文章已经完结,今后我的文章还是会以MySQL为主,主要记录下近期工作及学习遇到的场景或者自己的感悟想法,可能后续
- websocket网易聊天室?web微信?直播?假如你工作以后,你的老板让你来开发一个内部的微信程序,你需要怎么办?我们先来分析一下里面的技
- 在 Python 中,* 和 ** 具有语法多义性,具体来说是有四类用法。1. 算数运算* 代表乘法** 代表乘方>>>
- 历史:Message Queue的需求由来已久,80年代最早在金融交易中,高盛等公司采用Teknekron公司的产品,当时的Message
- *父父组件(helloWorld.vue):<template> <div class="hello-world
- 本文为大家分享了数据库优化方案,供大家参考,具体内容如下1. 利用表分区分区将数据在物理上分隔开,不同分区的数据可以制定保存在处于不同磁盘上
- 理论知识部分:一、简单总结几点数据库测试点:1.检查接口返回的数据是否与预期一致2.传递数据类型错误时能否处理,比如数据类型要求是整数,传递
- 前言如果采用前后端分离的架构开发, 后端几乎不负责任何展现界面的工作,只负责对数据进行管理 。 数据的管理,主要就是:响应前端的请求, 对数
- 如何侦测HTTP表头信息?可用下列办法侦测并显示所有的HTTP HEADERS:<HTML><HEAD><TI
- 前言自动化测试中我们存放数据无非是使用文件或者数据库,那么文件可以是csv,xlsx,xml,甚至是txt文件,通常excel文件往往是我们
- 最近想学习一些python数据分析的内容,就弄了个爬虫爬取了一些数据,并打算用Anaconda一套的工具(pandas, numpy, sc
- 1、通过requests.get方法r = requests.get("http://200.20.3.20:8080/job/C
- 作为语言模型和文本挖掘中的常用工具,Word2Vec也可以用来构建聊天机器人。在本文中,我们将使用Python和Gensim库从头开始构建一
- 本文实例讲述了Python实现将SQLite中的数据直接输出为CVS的方法。分享给大家供大家参考,具体如下:对于SQLite来说,目前查看还
- 1 通过System.DBNull判断,网上大部分都使用这个方法。DataTable dt;
- 识别快递单号这次跟老师做项目,这项目大概是流水线上识别快递上的快递单号。首先我尝试了解条形码的基本知识 百度百科:条形码 条形码(barco
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML&n