一、系统存储过程 常用

 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的更多相关文章

  1. SQL/T-SQL实例参考

    ,D.[Score] B_Score ,'Distince'= CASE WHEN C.Score > D.Score THEN C.[Score] - D.[Score] WHEN C.Sco ...

  2. sql: T-SQL 统计计算(父子關係,樹形,分級分類的統計)

    ---sql: T-SQL 统计计算(父子關係,樹形,分級分類的統計) ---2014-08-26 塗聚文(Geovin Du) CREATE PROCEDURE proc_Select_BookKi ...

  3. SQL/T-SQL实例参考-2

    对多关联查询,查询多中的记录,但是返回一的结果集 子查询语法 --一对多关联查询,查询多中的记录,但是返回一的结果集 SELECT C.* FROM ( SELECT A.BasicID FROM [ ...

  4. SQL/T-SQL实例参考-1

    CASE ,D.[Score] B_Score ,'Distince'= CASE WHEN C.Score > D.Score THEN C.[Score] - D.[Score] WHEN ...

  5. [SQL]T-Sql 递归查询(给定节点查所有父节点、所有子节点的方法)

    T-Sql 递归查询(给定节点查所有父节点.所有子节点的方法)   -- 查找所有父节点with tab as( select Type_Id,ParentId,Type_Name from Sys_ ...

  6. sql: T-SQL parent-child function script

    --Parent-Child reationship --涂聚文 2014-08-25 --得位置的子節點函數表(包含本身) if exists (select * from dbo.sysobjec ...

  7. T-SQL、JET SQL、PL-SQL

    数据库分为网状.层状.关系.对象四种类型,目前的数据库一般都是属于关系数据库(包括MYSQL和SQL SERVER),网状.层状基本上已成历史,对象类型尚未普及. SQL 语言是有 ANSI 标准的. ...

  8. 全面对比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) ...

  9. 到T-SQL DML 三级的阶梯:在SQL server中实现关系模型

    作者: Gregory Larsen, 2017/08/02 (第一次出版: 2011/11/09) 翻译:谢雪妮,许雅莉,赖慧芳,刘琼滨 译文: 系列 该文章是阶梯系列的一部分:T-SQL DML的 ...

  10. RML Utilities for SQL Server

    很早以前有看到过关于使用RML Utilities工具分析SQL Trace(.trc)的文章,但一直没有具体实践.最近接管一台数据库服务器,跟踪出一批高消耗的语句,老大需要跟踪分析报表,罗列出过程( ...

随机推荐

  1. shell 边边角角

    [Shell学习笔记] 数组.关联数组和别名使用 Linux中bash脚本数组和字典使用举例 Linux Shell 通配符.元字符.转义符使用实例介绍

  2. 数据结构实验之查找四:二分查找(SDUT 3376)

    #include <stdio.h> #include <string.h> #include <stdlib.h> int a[1000005]; int fin ...

  3. 生成一张带有logo的二维码图片

    string url = 二维码内容; , , Encoding.UTF8); // 合成活动的LOGO图片 var hasImage = GlobalTools.GetCommonContent(& ...

  4. FOI冬令营 Day4

    目录 T1.循环流(flow) 传送门 Code T2.整除分块(mex) 传送门 Code T3.森林(forest) 传送门 Code 咕咕咕 T1.循环流(flow) 传送门 Code /* 特 ...

  5. 命令行启动模块的Python代码研究

    pyrasite的 __requires__ = 'pyrasite==2.0' import re import sys from pkg_resources import load_entry_p ...

  6. docker启动elasticsearch失败--jvm内存不足解决方案

    centos下载完elasticsearch并修改完配置后运行docker命令: docker run –name es1 -p : -p : -d -v /docker/es/esmaster/es ...

  7. 研途APP——项目需求分析

    研途APP--项目需求分析 1.作业描述 项目 内容 课程 软件工程实践 作业链接 团队作业第二次-需求规格说明书 团队名称 8rookies 作业目标 作业正文 研途APP--项目需求分析 其他参考 ...

  8. Java 关于日期加一天(日期往后多一天)

    1.原来Java的日期添加不像.NET的.Add: import java.util.Date ; Date date=new   Date();//取时间System.out.println(dat ...

  9. 黑马vue---33、vue-resource 实现 get, post, jsonp请求

    黑马vue---33.vue-resource 实现 get, post, jsonp请求 一.总结 一句话总结: vue-resource使用非常非常非常简单:this.$http.get('htt ...

  10. DIOCP任务队列和工作线程

    DIOCP任务队列和工作线程 涉及4个单元文件:utils_strings.pas,utils_queues.pas,utils_queueTask.pas,utils_grouptask.pas. ...