SQL-TSQL
一、系统存储过程 常用
sp_helptext
--查看可编程性(存储过程、函数、触发器、规则、默认值),表中(约束、触发器)
EXEC sp_helptext f_M_Student
二、全局变量 常用
@@IDENTITY
--最后插入的值ID主键
INSERT INTO UserTable
(
-- UserID -- this column value is auto-generated
UserName,
NewClo
)
VALUES
(
'西伯利亚的狼', )
SELECT @@IDENTITY AS 'Identity'
--先执行这一段脚本
INSERT INTO UserTable
(
-- UserID -- this column value is auto-generated
UserName,
NewClo
)
VALUES
(
'你好呀1', )
WAITFOR DELAY '00:00:10'
--返回的主键ID任然为这一个插入的ID
SELECT @@identity --在执行这一段脚本
INSERT INTO UserTable
(
-- UserID -- this column value is auto-generated
UserName,
NewClo
)
VALUES
(
'你好呀2', )
@@ROWCOUNT
--上一条语句影响的行数
SELECT * FROM Student AS s WHERE s.StuName LIKE '%名字%'
SELECT @@ROWCOUNT
@@ERROE
DECLARE @ErrorFlag INT
RAISERROR ('不好意思,你没有权限!',,)
SET @ErrorFlag=@@ERROR --全局错误只能在紧接着的下一步获取到,然后有默认设置为0
SELECT @@ERROR
SELECT @ErrorFlag
SET NOCOUNT ON;
SET XACT_ABORT ON; --执行 Transact-SQL 语句产生运行时错误,则整个事务将终止并回滚 BEGIN TRY
BEGIN TRANSACTION T INSERT INTO UserTable
(
-- UserID -- this column value is auto-generated
UserName,
NewClo
)
VALUES
(
'起实物测试1', ) RAISERROR ('不好意思,你没有权限!',,) --会影响到PL/SQL的流程, 比如你若在TRY块中RAISERROR了一个严重程度小于11的, 他会直接反馈给调用者, 而不会去走CATCH块了 SELECT GETDATE() COMMIT TRANSACTION T
END TRY
BEGIN CATCH
DECLARE @msg nvarchar()=ERROR_MESSAGE() --将捕捉到的错误信息存在变量@msg中
RAISERROR (@msg,,) --此处才能抛出(好像是这样子....)
ROLLBACK TRANSACTION T --出錯回滾事務
END CATCH
三、常用函数
长度分析函数
--所占的字符数,不含尾部空格
SELECT DATALENGTH('你好呀')
--字符数,不含尾部空格
SELECT LEN('你好呀')
--子串,第二个参数开始位置,第三个参数长度
--开始位置为1
SELECT SUBSTRING('西伯利亚的狼',,)
--左部截取,第二个参数未截取的数量
SELECT LEFT('西伯利亚狼',)
--右部截取
SELECT RIGHT('西伯利亚的狼',)
基本字符串操作
--替换
UPDATE UserTable
SET
UserName =replace(UserName,'','')
--转为大写
SELECT UPPER('qwe1')
--转为小写
SELECT LOWER('QWE23')
--生成空格
SELECT ''+SPACE()+''
--第一个参数:待截取的字符串
--第二个参数:截取开始位置
--第三个参数:截取的长度
--第四个参数:把截取好的参数拼加在他的后面
SELECT STUFF('西伯利养的狼',,,'我是一个新的')
--字符串反转
SELECT REVERSE('西伯利亚的狼')
--删除左侧空格
SELECT LTRIM(' 123 ')
--删除右侧空格
SELECT RTRIM(' 123 ')
字符串查找
--第一个参数在第二个参数中的起始位置,没有匹配到返回0
SELECT CHARINDEX('','')
--匹配,可以加通配符 0没有匹配到返回0
SELECT PATINDEX('%0%','')
SELECT PATINDEX('%0','')
SELECT PATINDEX('_0','')
SELECT PATINDEX('','')
SELECT PATINDEX('0%','')
GUID
SELECT NEWID()
SELECT *,NEWID() orID FROM Student AS s ORDER BY orID
数学函数(三角函数未列出)
--绝对值
SELECT ABS(-)--
--大于等于 的最小整数
SELECT CEILING(10.3)--
SELECT CEILING()--
--小于等于 的最大值
SELECT FLOOR(10.3)--
SELECT FLOOR()--
--次幂 2的3次方
SELECT POWER(,) --**=
--次幂 以e为底
SELECT EXP() --e*e*e
--自然对数值
SELECT LOG(EXP()) --
--以10为底的对数值
SELECT LOG10() --
--四舍五入 精确位数
SELECT ROUND(10.2345,) --10.2350
--返回一个0-1之间的随机值
SELECT RAND()--0.715436657367485(随机的)
--判断正负0数
SELECT SIGN() --
SELECT SIGN(-) -- -
SELECT SIGN() --
--平方根
SELECT SQRT() --
日期函数
SELECT GETDATE()
--sqlserver 的日期部分 datepart
--日期部分 写法 取值范围
--YEAR yy -
--quarter(季度 qq -
--MONTH mm -
--Dayofyear dy -
--DAY dd -
--week wk -
--weekday dw -(Mon-Sun)
--Hour hh -
--Minute mi -
--SECOND ss -
--Millisecond ms -
--返回日期中的指定部分 根据环境转化成适合的名字(比如下面的星期五)
SELECT DATENAME(quarter,GETDATE())--
SELECT DATENAME(qq,GETDATE()) --
SELECT DATENAME(dw,GETDATE()) --星期五
--返回日期中的指定部分
SELECT DATEPART(dw,GETDATE()) --
--时间差
SELECT DATEDIFF(yy,GETDATE(),'2016/01/01')
--时间增加
SELECT DATEADD(dd,,GETDATE())
--返回日期值
SELECT DAY(GETDATE()) SELECT YEAR(GETDATE()) SELECT MONTH(GETDATE())
四、常用逻辑关键字
BEGIN END
语句块
CASE WHEN THEN
--WHEN NULL 不起作用
SELECT *,CASE s.StuName WHEN '默认名字' THEN '默认' when NULL then '我是NULL' else '不是默认' end FROM Student AS s
--最好用case when 字段 条件(比较灵活)
SELECT *,CASE WHEN s.StuName='默认名字' THEN '默认' when s.StuName is NULL then '我是NULL' else '不是默认' end FROM Student as s
IF BEGIN END ELSE BEGIN END
DECLARE @iielseFlag INT;
SET @iielseFlag = IF (@iielseFlag <= )
BEGIN
PRINT('小于0');
END
ELSE
BEGIN
PRINT('(0,+oo)')
END
DECLARE @iielseFlag INT;
SET @iielseFlag = IF (@iielseFlag <= )
BEGIN
PRINT('小于0');
END
ELSE
IF(@iielseFlag <= )
BEGIN
PRINT('(0,5]')
END
ELSE
BEGIN
PRINT('其他')
END
WHILE BEGIN END
DECLARE @WHILEFLAG INT =;
WHILE (@WHILEFLAG<)
BEGIN
PRINT(@WHILEFLAG);
SET @WHILEFLAG=@WHILEFLAG+;
END
GOTO
不使用,破环结构。
RETURN
--在批处理 存储过程 触发器中无条件退出,不在执行本语句之后的任何语句。
RETURN;
会返回一个整数,代表着不同的状态 0成功,其他负数都是错误的。
0成功
-1找不到对象
-2数据类型错误
-3死锁
-4违反权限原则
-5语法错误
-6用户造成的一般错误
-7资源错误,如磁盘空间不足
-8非致命内部错误
-9已达到系统的极限
- -11致命的内部不一致性错误
-12表或指针破坏
-13数据库破环
-14硬件错误
WAITFOR
SQLserver有两种方法定时指定任务1,代理,2,waitfor
WAITFOR {DELAY 'time'|TIME 'time'}
WAITFOR DELAY '00:00:10'
SELECT * FROM Student AS s
--根据当前时间设置 等到下午4点51执行
WAITFOR TIME '16:51'
SELECT * FROM Student AS s
批处理(GO)
一条或者多条T-SQL语句的集合,SQLserver会把他当成一个整体,进行分析,在优化,编译,执行。
分类
,应用程作为一个执行单元发出的所有SQL语句构成一个批处理,并且生成单个执行计划。
,存储过程或者触发器内部所有语句构成一个批处理,他们都会自动编译为一个还行计划。
、由EXEC执行的字符串是一个批处理。exec('select * from student'),并编译为执行计划。
、系统存储过程sp_executesql执行的字符串是一个批处理,并便以为执行计划。 exec sp_executesql N'select * from student'
结束退出
、GO批处理结束标志,编译器执行到GO时,前面的所有语句当成一个批处理执行,GO不是T-SQL语句,而是可以被SQLserver 分析器识别的命令。
、GO不能和T-SQL处于一行。但是这一行可以有注释。
、局部变量只局限在一个批处理中,不会再GO以后引用。
SQL-TSQL的更多相关文章
- SQL/T-SQL实例参考
,D.[Score] B_Score ,'Distince'= CASE WHEN C.Score > D.Score THEN C.[Score] - D.[Score] WHEN C.Sco ...
- sql: T-SQL 统计计算(父子關係,樹形,分級分類的統計)
---sql: T-SQL 统计计算(父子關係,樹形,分級分類的統計) ---2014-08-26 塗聚文(Geovin Du) CREATE PROCEDURE proc_Select_BookKi ...
- SQL/T-SQL实例参考-2
对多关联查询,查询多中的记录,但是返回一的结果集 子查询语法 --一对多关联查询,查询多中的记录,但是返回一的结果集 SELECT C.* FROM ( SELECT A.BasicID FROM [ ...
- SQL/T-SQL实例参考-1
CASE ,D.[Score] B_Score ,'Distince'= CASE WHEN C.Score > D.Score THEN C.[Score] - D.[Score] WHEN ...
- [SQL]T-Sql 递归查询(给定节点查所有父节点、所有子节点的方法)
T-Sql 递归查询(给定节点查所有父节点.所有子节点的方法) -- 查找所有父节点with tab as( select Type_Id,ParentId,Type_Name from Sys_ ...
- sql: T-SQL parent-child function script
--Parent-Child reationship --涂聚文 2014-08-25 --得位置的子節點函數表(包含本身) if exists (select * from dbo.sysobjec ...
- T-SQL、JET SQL、PL-SQL
数据库分为网状.层状.关系.对象四种类型,目前的数据库一般都是属于关系数据库(包括MYSQL和SQL SERVER),网状.层状基本上已成历史,对象类型尚未普及. SQL 语言是有 ANSI 标准的. ...
- 全面对比T-SQL与PL/SQL
1)数据类型 TSQL PL/SQL numeric(p,s) numeric(p,s) or NUMBER(p,s) decimal(p,s) decimal(p,s) or NUMBER(p,s) ...
- 到T-SQL DML 三级的阶梯:在SQL server中实现关系模型
作者: Gregory Larsen, 2017/08/02 (第一次出版: 2011/11/09) 翻译:谢雪妮,许雅莉,赖慧芳,刘琼滨 译文: 系列 该文章是阶梯系列的一部分:T-SQL DML的 ...
- RML Utilities for SQL Server
很早以前有看到过关于使用RML Utilities工具分析SQL Trace(.trc)的文章,但一直没有具体实践.最近接管一台数据库服务器,跟踪出一批高消耗的语句,老大需要跟踪分析报表,罗列出过程( ...
随机推荐
- python 迷宫问题
# -*- coding:utf- -*- from collections import deque # 引入队列 maze = [ [,,,,,,,,,], [,,,,,,,,,], [,,,,, ...
- (转)mysql更改数据目录
mysql 更改默认数据目录 http://www.cnblogs.com/chenny7/p/3642363.html 本文主要介绍在CentOS下通过yum命令安装MySQL之后,如何移动默认数据 ...
- 小程序web-view的使用,跳转到外部链接~
先说一下需求,要点击榜单,跳到我们的移动web的项目的榜单页,这个不是小程序的哦,就是网页版的. 榜单的html代码: <view class="nav" hover-cla ...
- OpenFOAM中的基本变量快速认知【转载】
转载自:http://blog.sina.com.cn/s/blog_a0b4201d0102vsf9.html label 实际上就是整型数据的变体,int,OF对它进行了包装,以适应32或64位系 ...
- zoom:1的常见作用
zoom是IE专用属性,firefox等是不支持的.它的本来作用是设置或检索对象的缩放比例,但这作用几乎用不到. 可以让网页实现IE7中的放大缩小功能.比如你想让你的网页缩小为原来的一半,那么就在bo ...
- C# 控制反转
主要目的:需要在业务逻辑层调用UI的弹框提示信息代码是在记事本中写的,没有运行调试过,不保证能直接使用,看下思路就好 //接口public interface IShowData { void Sho ...
- 走进JavaWeb技术世界9:Java日志系统的诞生与发展
本文转自[码农翻身] ## 一个著名的日志系统是怎么设计出来的? # 1前言 Java帝国在诞生之初就提供了集合.线程.IO.网络等常用功能,从C和C++领地那里吸引了大量程序员过来加盟,但是却有意无 ...
- jQuery Ajax calls and the Html.AntiForgeryToken()
jQuery Ajax calls and the Html.AntiForgeryToken() https://stackoverflow.com/a/4074289/3782855 I use ...
- 三种Timer使用
System.Windows.Forms.Timer, System.Threading.Timer, System.Timer,三种Timer使用如下 第一种:System.Windows.Fo ...
- oracle的表分区
(1.) 表空间及分区表的概念 表空间: 是一个或多个数据文件的集合,所有的数据对象都存放在指定的表空间中,但主要存放的是表, 所以称作表空间. 分区表: 当表中的数据量不断增大,查询数据的速度就 ...