SQL Server - 常用语法

--------------------SQL Server2019 常用语法------------------------

--------------1、Case end的用法(和Oracle的语法一致)-----------------
select t.name, 
'Degree' = 
case 
    when t.score >=95 then 'A'
    when t.score >=85 then 'B'
    when t.score >=75 then 'C'
    when t.score >=60 then 'D'
    else 'D-'
end
from SCORES t where Catogory = 'English';
--------------1、Case end的用法(和Oracle的语法一致)结束-------------


-------------------2、ROW_NUM() OVER(ORDER BY)用法--------------------
--长用于增加一个编号,用于数据库分页查询
--over 表示按照某一列进行编号
select 'SYSID' = ROW_NUMBER() OVER (ORDER BY SCOID),* from Scores;
-------------------2、ROW_NUM() OVER(ORDER BY)用法结束----------------

---------------------------3、变量的声明与赋值------------------------
--声明时直接赋值declare
declare @num int = 10;
print @num
--select @num

--先声明declare,再赋值set
declare @name nvarchar(10)
set @name ='JeremyWu'
print @name
--select @num

--一个例子,根据分数输出等级
--输出等级
declare @degree nvarchar(10);
declare @score int;
set @score = (select avg(Score) from scores where name='Jeremy')
if (@score >=90)
begin
  set @degree = 'A'
end
else    
begin
  set @degree = 'B'
end;
print @degree;
---------------------------3、变量的声明与赋值结束--------------------

---------------------------4、变量的常见类型--------------------------
--局部变量,我们自己声明的变量 
--例如:@num
--全局变量或者叫做系统变量,系统声明的变量
--例如:@@ERROR
---------------------------4、变量的常见类型结束-----------------------

---------------------------------5、事务-------------------------------
--背景说明:Bank表中Money列右最小值限制,不能小于10
--select * from Bank
--开始事务
BEGIN TRANSACTION
--声明一个变量记录有没有错误发生
declare @sumError int = 0;
--执行相关操作
update Bank set Money = Money - 1000 where BankId=2;
--记录此时的错误数
set @sumError = @sumError + @@ERROR;
--执行相关操作
update Bank set Money = Money + 1000 where BankId=3;
--记录此时的错误数
set @sumError = @sumError + @@ERROR;
--判断记录的错误数
if(@sumError <> 0)
begin
    --失败了,回滚事务
    ROLLBACK TRANSACTION
end 
else
begin
    --成功了,提交事务
    COMMIT TRANSACTION
end;
--打印一下消息
print @sumError
---------------------------------5、事务结束---------------------------

--------------6、Case end的用法(和Oracle的语法一致)------------------
select t.name, 
'Degree' = 
case 
    when t.score >=95 then 'A'
    when t.score >=85 then 'B'
    when t.score >=75 then 'C'
    when t.score >=60 then 'D'
    else 'D-'
end
from SCORES t where Catogory = 'English';
--------------6、Case end的用法(和Oracle的语法一致)结束--------------

 

  作者:Jeremy.Wu
  出处:https://www.cnblogs.com/jeremywucnblog/
  本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

posted @ 2020-03-12 11:20  Jeremy.Wu  阅读(749)  评论(0编辑  收藏  举报