T-SQL 高级编程(基本语法)

T-SQL 高级编程

 
/*-变量应用-*/
 --局部变量以标记@为前缀
 --全局变量以标记@@为前缀
 
 --局部变量声明
 declare @变量名 数据类型
 
 --局部变量赋值:使用set语句或select语句

 --set 赋值语句一般赋给变量指定的数据常量
 set @变量名 = 
 
 --select 赋值语句一般用于从表中查询数据,然后再赋给变量
 --当用select赋值时,不进行筛选会将最后一条记录赋给变量
 select @变量名 = 列名值 from 表名 where 条件




 
 
全局变量表
变量含义
@@error最后一个T-SQL错误的错误号
@@identity最后一次插入的标识值
@@language当前使用的语言的名称
@@max_connections可以创建的同时连接的最大数目
@@rowcount受上一个SQL语句影响的行数
@@servername本地服务器的名称
@@servicename该计算机上的SQL服务器的名称
@@timeticks当前计算上每刻度的微秒数
@@transcount当前连接打开的事物数
@@versionSQL Sever的版本信息
/*-输出语句-*/ print convert(varchar(大小),变量或字符串) --只适合打印字符和字符串 select 变量 as 自定义列名--适合所有类型/*-逻辑控制语句-*/--if-else条件语句 if(条件) begin --语句块 end else begin --语句块 end --while循环语句 while(条件) begin --语句块 end --case多分支语句 case when 条件1 then 结果1 when 条件2 then 结果2 else 结果3 end 列名 = case when 列值 then 表达式 else 表达式 end /*-高级查询-*/--简单子查询 select 列名 from 表名 where 条件列名 = (select 条件列名 from 表名 where 条件) --in和not in子查询 select 列名 from 表名 where 条件列名 in (select 条件列名 from 表名 where 条件) select 列名 from 表名 where 条件列名 not in (select 条件列名 from 表名 where 条件) --exists和not exists子查询 if exists(select * from 表名 where 条件) begin --语句块 end if not exists(select * from 表名 where 条件) begin --语句块 end /*-事务-*/--管理事务开始事务:begin transaction 提交事务:commit transaction 回滚事务:rollback transaction--分类 显示事务:用begin transaction 明确指定事务的开始 隐式事务:通过设置set implicit_transaction on 语句,将隐式事务模式设置为开. 当隐式事务模式操作时,SQL Server将在提交或回滚事务后自动启动新事务.无法描述事务 的开始,只需要提交或回滚每个事务. 自动提交事务:这是SQL Server 的默认模式,它将每条单独的T-SQL 语句视为一个事务. 如果成功执行,则自动提交.如果错误,则自动回滚.--开始事务 begin transaction --定义变量,用于累计错误 declare @errorSum int --初始化变量 set @errorSum=0 --语句--累计错误 set @errorSum = @errorSum + @@error if @errorSum <>0 begin print --错误提示--回滚事务 rollback transaction end else begin print --成功提示

--提交事务 commit transaction end

 

/*-索引-*/
--索引类型唯一索引:unique 聚集索引:clustered 非聚集索引:nonclusered
use 
数据库名
go
--查找索引
if exists (select * from sysindexes where name = '
索引名 ')
--删除索引
drop index 
表名.索引名
--创建索引
create nonclustered index 
索引名
on  表名 ( 索引列名 )
where fillfactor = 
--大小为0-100之间的值
go

--查询索引
select * from 
表名  (index =  索引名 ) where  由索引列名组成的条件


/*-创建视图-*/
use 
数据库名
go
--查询视图
if exists (select * from sysobjects where name = '
视图名 ')
--删除视图
drop view 
视图名
--创建视图
create view 
视图名
as
--查询语句
go

--使用视图
select * from 
视图名

常用的系统存储过程
系统存储过程说明
sp_databases列出服务器上所有的数据库
sp_helpdb报告有关指定数据库或所有数据库的信息
sp_renamedb 旧名,新名更改数据库的名称
sp_tables返回当前环境下可查询的对象的列表
sp_columns返回某个表列的信息
sp_help查看某个表的所有信息
sp_helpconstraint 表名查看某个表的约束
sp_helpindex 表名查看某个表的索引
sp_stored_procedures列出当前环境中所有存储过程
sp_password添加或修改登录账户的密码
sp_helptext显示默认值、未加密的存储过程、用户自定义的存储过程、出发器或视图的实际文本
xp_cmdshell 'Dos命令'完成DOS命名下的一些操作



--自定义存储过程
--不带参的存储过程
use 数据库名
go
--查询存储过程
if exists (select * from sysobjects where name = '存储过程')
--删除存储过程
drop procedure 存储过程名
go
--创建存储过程
create procedure 存储过程名
as
declare @变量名 数据类型
--SQL语句(一般用于查询语句)
go

--调用存储过程
exec 存储过程名


--创建带输入参数的存储过程
use 数据库名
go
--查询存储过程
if exists (select * from sysobjects where name = '存储过程')
--删除存储过程
drop procedure 存储过程名
go
--创建存储过程
create procedure 存储过程名
@变量名1 数据类型 --输入参数(当多个参数时用,隔开)
as
declare @变量名2 数据类型
--SQL语句(一般用于插入、修改、删除语句)
go

--调用存储过程
exec 存储过程名 给变量名1赋值



--创建带输出参数的存储过程
use 数据库名
go
--查询存储过程
if exists (select * from sysobjects where name = '存储过程')
--删除存储过程
drop procedure 存储过程名
go
--创建存储过程
create procedure 存储过程名
@变量名1 数据类型 output,--output关键字,否则视为输入参数
@变量名2 数据类型        --输入参数(当多个参数时用,隔开)
as
declare @变量名3 数据类型
--SQL语句(一般用于查询语句)
go

--调用存储过程
declare @变量名4 数据类型  --定义变量,用于存放存储过程变量名1的返回的结果
exec 存储过程名 @变量名4 output,@变量名2 数据类型  


/*-处理错误信息-*/
use 数据库名
go
--查询存储过程
if exists (select * from sysobjects where name = '存储过程')
--删除存储过程
drop procedure 存储过程名
go
--创建存储过程
create procedure 存储过程名
@变量名1 数据类型,
@变量名2 output 
as
declare @变量名3 数据类型
--错误处理
msg_id:在sysmessages系统表中指定的用户定义错误信息
msg_str:用户定义的特定信息,最长为255个字符
serverity:与特定信息相关联,表示用户定义的严重级别.用户可以使用0~18级,19~25级
  是sysadmin固定角色的成员预留的,并且需要指定with log选项,20~25级错
  误被认为是致命的错误
state:表示错误的状态,是1~127的值

raiserror('msg_id | msg_str',severity,state);
--SQL语句(一般用于查询语句)
go

--调用存储过程
declare @变量名4 数据类型  --定义变量,用于存放存储过程d的返回的结果
exec 存储过程名 @变量名4 output,@变量名2 数据类型  

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值