问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

SQL和TSQL建库语句有啥区别?

发布网友 发布时间:2022-05-02 02:51

我来回答

2个回答

懂视网 时间:2022-05-02 07:13

 sp_helptext

技术分享
--查看可编程性(存储过程、函数、触发器、规则、默认值),表中(约束、触发器)
EXEC sp_helptext f_M_Student
View Code

 

二、全局变量  常用

 @@IDENTITY

技术分享
--最后插入的值ID主键
INSERT INTO UserTable
(
 -- UserID -- this column value is auto-generated
 UserName,
 NewClo
)
VALUES
(
 ‘西伯利亚的狼‘,
 1
)
SELECT @@IDENTITY AS ‘Identity‘
View Code

@@ROWCOUNT

技术分享
--上一条语句影响的行数
SELECT * FROM Student AS s WHERE s.StuName LIKE ‘%名字%‘
SELECT @@ROWCOUNT
View Code

@@ERROE

技术分享
DECLARE @ErrorFlag INT
RAISERROR (‘不好意思,你没有权限!‘,16,1)
SET @ErrorFlag=@@ERROR --全局错误只能在紧接着的下一步获取到,然后有默认设置为0
SELECT @@ERROR
SELECT @ErrorFlag
View Code

 

技术分享
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‘,
 2
)

 RAISERROR (‘不好意思,你没有权限!‘,16,1) --会影响到PL/SQL的流程, 比如你若在TRY块中RAISERROR了一个严重程度小于11的, 他会直接反馈给调用者, 而不会去走CATCH块了

 SELECT GETDATE()
 
 COMMIT TRANSACTION T
END TRY
BEGIN CATCH
 DECLARE @msg nvarchar(2000)=ERROR_MESSAGE() --将捕捉到的错误信息存在变量@msg中  
 RAISERROR (@msg,16,1) --此处才能抛出(好像是这样子....)
 ROLLBACK TRANSACTION T  --出錯回滾事務
END CATCH
View Code

 

三、常用函数

 长度分析函数

技术分享
--所占的字符数,不含尾部空格
SELECT DATALENGTH(‘你好呀‘) 
--字符数,不含尾部空格 
SELECT LEN(‘你好呀‘)
--子串,第二个参数开始位置,第三个参数长度 
--开始位置为1 
SELECT SUBSTRING(‘西伯利亚的狼‘,1,3)
--左部截取,第二个参数未截取的数量
SELECT LEFT(‘西伯利亚狼‘,3) 
--右部截取
SELECT RIGHT(‘西伯利亚的狼‘,3)
View Code

基本字符串操作

技术分享
--替换
UPDATE UserTable
SET
 UserName =replace(UserName,‘1‘,‘2‘)
--转为大写
SELECT UPPER(‘qwe1‘)
--转为小写
SELECT LOWER(‘QWE23‘)
--生成空格
SELECT ‘1‘+SPACE(40)+‘2‘
--第一个参数:待截取的字符串
--第二个参数:截取开始位置
--第三个参数:截取的长度
--第四个参数:把截取好的参数拼加在他的后面
SELECT STUFF(‘西伯利养的狼‘,2,3,‘我是一个新的‘)
--字符串反转
SELECT REVERSE(‘西伯利亚的狼‘)
--删除左侧空格
SELECT LTRIM(‘ 123 ‘)
--删除右侧空格
SELECT RTRIM(‘ 123 ‘)
View Code

字符串查找

技术分享
--第一个参数在第二个参数中的起始位置,没有匹配到返回0
SELECT CHARINDEX(‘123‘,‘13234561223‘)
--匹配,可以加通配符  0没有匹配到返回0
SELECT PATINDEX(‘%0%‘,‘1234567890‘)
SELECT PATINDEX(‘%0‘,‘1234567890‘)
SELECT PATINDEX(‘_0‘,‘1234567890‘)
SELECT PATINDEX(‘0‘,‘1234567890‘)
SELECT PATINDEX(‘0%‘,‘1234567890‘)
View Code

GUID

技术分享
SELECT NEWID()
SELECT *,NEWID() orID FROM Student AS s ORDER BY orID
View Code

数学函数(三角函数未列出)

技术分享
--绝对值
SELECT ABS(-1)--1
--大于等于 的最小整数
SELECT CEILING(10.3)--11
SELECT CEILING(10)--10
--小于等于 的最大值
SELECT FLOOR(10.3)--10
SELECT FLOOR(10)--10
--次幂 2的3次方
SELECT POWER(2,3) --2*2*2=8
--次幂 以e为底
SELECT EXP(3) --e*e*e
--自然对数值
SELECT LOG(EXP(3)) --3
--以10为底的对数值
SELECT LOG10(100) --2
--四舍五入 精确位数
SELECT ROUND(10.2345,3) --10.2350
--返回一个0-1之间的随机值
SELECT RAND(100)--0.715436657367485(随机的)
--判断正负0数
SELECT SIGN(10) --1
SELECT SIGN(-10) -- -1
SELECT SIGN(0) --0
--平方根
SELECT SQRT(100) --10
View Code

日期函数

技术分享
SELECT GETDATE()
--sqlserver 的日期部分 datepart
--日期部分  写法  取值范围
--YEAR  yy  1753-9999
--quarter(季度 qq  1-3
--MONTH  mm   1-12
--Dayofyear  dy  1-366
--DAY  dd  1-31
--week  wk  1-54
--weekday  dw  1-7(Mon-Sun)
--Hour  hh  0-23
--Minute  mi  0-59
--SECOND  ss  0-59
--Millisecond ms  0-999
--返回日期中的指定部分 根据环境转化成适合的名字(比如下面的星期五)
SELECT DATENAME(quarter,GETDATE())--3
SELECT DATENAME(qq,GETDATE()) --3
SELECT DATENAME(dw,GETDATE()) --星期五
--返回日期中的指定部分
SELECT DATEPART(dw,GETDATE()) --5
--时间差 
SELECT DATEDIFF(yy,GETDATE(),‘2016/01/01‘)
--时间增加
SELECT DATEADD(dd,5,GETDATE())
--返回日期值
SELECT DAY(GETDATE())

SELECT YEAR(GETDATE())

SELECT MONTH(GETDATE())
View Code

 

四、常用逻辑关键字

BEGIN END

技术分享
语句块
View Code

 

CASE WHEN THEn

技术分享
--WHEN NULL 不起作用
SELECT *,CASE s.StuName WHEN ‘默认名字‘ THEN ‘默认‘ when NULL then ‘我是NULL‘ else ‘不是默认‘ end FROM Student AS s
View Code

 

技术分享
--最好用case when 字段 条件(比较灵活)
SELECT *,CASE WHEN s.StuName=‘默认名字‘ THEN ‘默认‘ when s.StuName is NULL then ‘我是NULL‘ else ‘不是默认‘ end FROM Student as s
View Code

IF BEGIN END ELSE BEGIN END

技术分享
DECLARE @iielseFlag INT;
SET @iielseFlag = 10

IF (@iielseFlag <= 0)
BEGIN
 PRINT(‘小于0‘);
END
ELSE
BEGIN
 PRINT(‘(0,+oo)‘)
END
View Code 技术分享
DECLARE @iielseFlag INT;
SET @iielseFlag = 10

IF (@iielseFlag <= 0)
BEGIN
 PRINT(‘小于0‘);
END
ELSE
 IF(@iielseFlag <= 5)
BEGIN
 PRINT(‘(0,5]‘)
END
ELSE
 BEGIN
 PRINT(‘其他‘)
 END
View Code

 

WHILE BEGIN END

技术分享
DECLARE @WHILEFLAG INT =0;
WHILE (@WHILEFLAG<10) 
BEGIN
 PRINT(@WHILEFLAG);
 SET @WHILEFLAG=@WHILEFLAG+1;
END
View Code

 GOTO

不使用,破环结构。

RETURN

技术分享
--在批处理 存储过程 触发器中无条件退出,不在执行本语句之后的任何语句。
RETURN;
会返回一个整数,代表着不同的状态 0成功,其他负数都是错误的。
0成功
-1找不到对象
-2数据类型错误
-3死锁
-4违反权限原则
-5语法错误
-6用户造成的一般错误
-7资源错误,如磁盘空间不足
-8非致命内部错误
-9已达到系统的极限
-10 -11致命的内部不一致性错误
-12表或指针破坏
-13数据库破环
-14硬件错误
View Code

WAITFOR

      SQLserver有两种方法定时指定任务1,代理,2,waitfor

技术分享
WAITFOR {DELAY ‘time‘|TIME ‘time‘}
View Code 技术分享
WAITFOR DELAY ‘00:00:10‘
SELECT * FROM Student AS s
View Code 技术分享
--根据当前时间设置 等到下午4点51执行
WAITFOR TIME ‘16:51‘ 
SELECT * FROM Student AS s
View Code

批处理(GO)

技术分享
一条或者多条T-SQL语句的集合,SQLserver会把他当成一个整体,进行分析,在优化,编译,执行。
View Code

   分类

1,应用程作为一个执行单元发出的所有SQL语句构成一个批处理,并且生成单个执行计划。
2,存储过程或者触发器内部所有语句构成一个批处理,他们都会自动编译为一个还行计划。
3、由EXEC执行的字符串是一个批处理。exec(‘select * from student‘),并编译为执行计划。
4、系统存储过程sp_executesql执行的字符串是一个批处理,并便以为执行计划。 exec sp_executesql N‘select * from student‘

主意:批处理必须以create语句开始。

 

SQL-TSQL

标签:空间不足   try   分析函数   date()   任务   sqrt   默认值   d3d   四舍五入   

热心网友 时间:2022-05-02 04:21

T-SQL主要用于在SQL SERVER上编写存储过程、触发器等。是在SQL上做出的扩展语言。追问他们2者在建库的语句上有啥不同啊?不都是create database么。。。老师问有什么区别?是不一个以分号结束,一个以go结束啊?还有啥区别没啊?

追答T-SQL在建库上可以设置的选项比SQL多。SQL是以分号结束,T-SQL的go只是代表一个批处理的结束。
CREATE DATABASE database_name
[ ON
[ PRIMARY ] [ [ ,...n ]
[ , [ ,...n ] ]
[ LOG ON { [ ,...n ] } ]
]
[ COLLATE collation_name ]
[ WITH ]
]
SQL我没怎么用过,好像MYSQL用的就是SQL

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
人类如何才能悬浮在空中? - 知乎 人体悬浮术是真的存在吗 人体怎样才能真正的在空中悬浮 小孩c蛋白反应高是什么原因 (2014?南海区二模)如图所示,物重G为2000N,小红用800N的拉力花2s的时间... 苹果13系列升级iOS15.5好吗? 出生2o12年11月20日2点姓石光字辈取名 求龙凤胎名字:2012年6月21日(农历5月初3)凌晨0点40分出生,大的为龙,小... by和take有什么区别 takeby后面跟交通工具的区别 plc习题 立即I/O指令有何特点,应用于什么场合 在使用WIFI的时候,对方可以看到我浏览的信息吗,会不会泄露隐私? 手机连接Wifi后,别人能知道你的手机在看什么吗? 欧姆龙plc立即刷新指令的作用 男友天天怀疑我出轨,是啥心理 老公外遇时却怀疑自己老婆出轨这是什么心理 老是怀疑老公出轨是心里不正常吗 西门子 PLC中的立即指令的具体用法,它的作用是什么,最好举个有图(梯形图)的例子,谢谢啦! PLC在执行程序中启动电机要立即执行指令吗? 老公老是怀疑我出轨,是不是有妄想症 做点阵激光去会出血吗? qq农场,反对红土地第三特权(神奇变异) 老公总是怀疑我出轨是不是心理异常? plc*题 立即I/O指令有何特点,应用于什么场合 QQ农场什么时候双倍金币 心理咨询老公老是怀疑老婆有外遇是不是一种心理疾病 如何理解PLC中立即执行指令 老公怀疑我出轨是什么体验? 现在qq牧场养什么动物最赚经验?(求真相帝!) 老公老是怀疑老婆有外遇是不是心理有病 applewatch健身好友改名 西门子plc指令ldi什么意思 Apple Watch 健身成就本人名字怎么改,其他名字都是对的 #防患于未来# 使用西门子PLC立即指令(或相关的立即指令)会出现哪些问题?有经验的编程者分享下。 在使用WIFI的时候,对方可以看到我浏览的信息吗,会不会泄露隐私 用学校的无线网,会不会透露自己的上网记录或着说玩游戏能不能被看到 手机连接别人的wifi会造成自己的隐私泄露吗? WiFi真的会泄露隐私吗? 小米手机怎么用小米手机怎么设置这两个 小米怎么双开 炫舞时代卡房怎么卡 炫舞时代卡房玩法介绍 小米手机双卡双侍怎么设制两? 炫舞时代怎么升级快 炫舞时代要怎样才能玩得更久 怎么在小米手机上登陆两个? 炫舞时代经典音速模式怎么玩 火车提前一站下车,出站怎么过闸机检票口 炫舞时代怎么投骰子 ROLL点攻略介绍 小米怎么开两个 炫舞时代家族战怎么打 炫舞时代家族战怎么玩