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)的文章,但一直没有具体实践.最近接管一台数据库服务器,跟踪出一批高消耗的语句,老大需要跟踪分析报表,罗列出过程( ...
随机推荐
- 下载安装tomcat 部署本地项目
原文地址:https://blog.csdn.net/weixin_40396459/article/details/81706543 下载地址:http://tomcat.apache.org 点击 ...
- 三十三、DNS资源记录类型和请求流程
DNS分布均衡(Load balance)的实现 在上级数据库中写两条记录(同一个名字对应对个IP时),DNS会自动将请求基于轮循方式,分给每个DNS服务器 例如: 第一次将请求给第一个DNS,第二次 ...
- WORD转HTML-python第三方包Mammoth(官方文档翻译)
Mammoth 官方 Mammoth可用于将.docx文档(比如由Microsoft Word创建的)转换为HTML.Mammoth致力于通过文档中的语义信息生成简洁的HTML,而忽略一些其他细节.例 ...
- UNIX网络编程 环境搭建
配置好动态链接库或者静态链接库 1,下载UNIX网络编程书的头文件及示例源码unpv13e 2 按照readme来编译 Execute the following from the src/ d ...
- C# ASP.NET 控制windows服务的 开启和关闭 以及重启
用ASP.NET控制Windows服务的开启与关闭效果如图 代码 首页页面需要添加引用 页面的pageload中 实例化windows服务 protected void Page_Load(objec ...
- Cesium Workshop
参考资料: https://cesiumjs.org/tutorials/Cesium-Workshop/ https://github.com/geoadmin/workshop-cesium3d ...
- kvm网卡配置
https://blog.51cto.com/quliren/2046001 https://blog.51cto.com/quliren/2045555 https://blog.csdn.net/ ...
- [微信小程序]实现一个自定义遮罩层
正文: 先上效果图: 点击按钮Show显示遮罩层,再次点击屏幕任何地方隐藏遮罩层; <button bindtap="showview">Show</button ...
- Android:导入所需的系统jar包到Android studio
1. 修改对于的AIDL文件,根据编译信息获知所需的jar包. mmm /frameworks/base/ show commands > log.txt 2>&1 out/tar ...
- 你真的懂wait、notify和notifyAll吗
生产者消费者模型是我们学习多线程知识的一个经典案例,一个典型的生产者消费者模型如下: public void produce() { synchronized (this) { while (mBuf ...