一、系统存储过程 常用

 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. 基于Shiro的登录功能 设计思路

    认证流程 Shiro的认证流程可以看作是个“有窗户黑盒”, 整个流程都有框架控制,对外的入口只有subject.login(token);,这代表“黑盒” 流程中的每一个组件,都可以使用Spring ...

  2. python 迷宫问题

    # -*- coding:utf- -*- from collections import deque # 引入队列 maze = [ [,,,,,,,,,], [,,,,,,,,,], [,,,,, ...

  3. luogu P4168 蒲公英+ 分块学习笔记

    传送门 题目描述 在乡下的小路旁种着许多蒲公英,而我们的问题正是与这些蒲公英有关. 为了简化起见,我们把所有的蒲公英看成一个长度为n的序列\((a_1,a_2..a_n)\),其中 \(a_i\)为一 ...

  4. PHP 之Html标签转义与反转义

    1.htmlentities()函数转义html 2.html_entity_decode()函数反转义html 我这里是用来反转义富文本编辑器的内容

  5. 怎么在for循环中新建出不同的list

    public static void main(String[] args) { List<Integer> list = Arrays.asList(1, 1, 1, 1, 1, 3, ...

  6. JSP(工作原理,组成部分,指令标签,动作标签,隐式对象)

    目录 JSP JSP 什么是JSP JSP全名为Java Server Pages 中文名叫java服务器页面 它是在传统的网页HTML文件(.htm,.html)中插入Java程序段和JSP标记 后 ...

  7. union all 和 union 的 区别

    https://www.cnblogs.com/wen-zi/p/9133754.html 主要: Union:对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序: Union All:对 ...

  8. Flutter移动电商实战 --(42)详细页_UI主页面架构搭建

    详细分成六大部分拆分开 body里面用FutureBuilder异步加载. FutureBuilder里面的furure属性这里用一个方法,必须返回的也是future 把我们的方法修改为返回的类型为F ...

  9. Linux中显示系统中USB信息的lsusb命令

    来源:Linux中国  原文:https://linux.cn/article-2448-1.html 通用串行总线(USB)被设计成为连接计算机外设的标准,如键盘.鼠标.打印机.数码相机.便携式媒体 ...

  10. python 了解一点属性的延迟计算

    写在前面 本以为百度搜索这类知识的文章应该有很多, 然后我看了前面几篇后,基本上都是类似的内容,我想找些与众不同的博客看下,来拖宽这方面的广度,我就随机点到了第10页,结果第10页的内容基本跟属性的延 ...