当前位置: 移动技术网 > IT编程>数据库>MSSQL > 浅谈Transact-SQL

浅谈Transact-SQL

2017年12月12日  | 移动技术网IT编程  | 我要评论

小秘大奔,魔机传说,闹鬼老宅

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介绍地址:

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网