设为首页 收藏本站
查看: 581|回复: 0

[经验分享] sql常用的 高级编程

[复制链接]

尚未签到

发表于 2016-11-11 05:11:53 | 显示全部楼层 |阅读模式
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 数据类型

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-298517-1-1.html 上篇帖子: 收集到的:如何调用存储过程,有返回值的,有参数的,存储过程中调用存储过程。(MS SQL Server) 下篇帖子: 怎么使用sql弹出框
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表