博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MSSQLServer基础06(变量,case,选择语句)
阅读量:5292 次
发布时间:2019-06-14

本文共 2676 字,大约阅读时间需要 8 分钟。

变量

声明:declare @UserName nvarchar(50)

赋值1:set @UserName=N'杨':修改
赋值2:select @UserName=N'牛':修改
输出:print @UserNameselect @UserName
select @UserName+N'中',这时@UserName仍然是‘杨’,这句代码执行后显示‘杨中’
区别:赋值时,set比select更严谨些
变量是有作用域的

全局变量:@@***

这些变量由系统维护,不需要我们管理,用于查看信息
@@version:查看版本信息
@@identity:查看当前的标识
@@servername:查看服务器名称
@@error:返回最后执行的一句代码的错误编号,如果没有出错返回0;如果被go中断,就不能用
@@rownumber:查看最后执行的一句代码的影响行数

------------------------------------------------------变量练习

declare @name nvarchar(10)='龌蹉'

if(@name='好帅')
begin
print '原来是小杨'
end
else
begin
print '原来是小赵'
end

case

在查询语句的select后面,可以进行选择判断的逻辑

语法1:判等
Case 列名
When … then …
When … then …
Else …
End as 列别名
语法2:判不等
Case
When 包含列名的逻辑表达式 then …
When … then …
else …
End as 列别名

----------------------------------------------------第一个练习  如果 成绩>100 优  如果成绩>90 良

select  

英语成绩=
case
when TSEnglish>100 then '优'
when TSEnglish>90 then '良'
when TSEnglish>80 then '中'
when TSEnglish>70 then '及格'
when TSEnglish is NULL then '缺考'
else '不及格'
end
from TblScore

----------------------------------------------第二个练习  1  2  3 

select *,

级别=
(
case 
when level=1 then '骨灰'
when level=2 then '大侠'
when level =3 then '菜鸟'
end
)
from user5

over子句

开窗函数:几个行作为一个区,就被称为一个窗,能够进行按行划区的函数就是开窗函数

排名函数:rank() over(order by 列名 desc),比row_number()函数更适合用于排名
over与聚合函数一起使用,但不要和group by 一组使用,否则会报错
没有分组的时候,就认为是将整个查询结果分成了一组
select *,sum(销售数量) from myOrders会报错
改为:select *,sum(销售数量) over from myOrders则不会报错,并且在最后一列显示求和结果
例:求每个销售员的销量:select *,sum(销售数量) over(partition by 销售员) from myOrders

select

销售员,
销售总金额=SUM(销售数量*销售价格),
称号=
(
case 
when SUM(销售数量*销售价格)>6000 then '金牌'
when SUM(销售数量*销售价格)>5500 then '银牌'
when SUM(销售数量*销售价格)>4500 then '铜牌'
else '铁牌'
end
)
from MyOrders
group by 销售员

选择语句

if 条件

begin
...
end
else
begin
...
end

declare @name nvarchar(10)='龌蹉' ------------------------声明一个变量

if(@name='好帅')

begin
print '原来是小杨'
end
else
begin
print '原来是小赵'
end

--------------------------------------------------计算平均分数并输出,如果平均分数超过60分输出成绩最高的三个学生的成绩,否则输出后三名的学生

declare @avg int =0

set @avg=(select AVG(tMath) from TblScore)
if(@avg>60)
begin
select top 3 * from TblScore order by tMath desc
end
else
begin
select top 3 * from TblScore order by tMath asc
end

 

视图view

视图:就是一个select语句,写起来比较复杂,多次被使用,则可以将这个select语句存放到一个视图中

创建语法:
create view 名称
as
查询语句
好处:使用方便,安全(看不到表的名称、结构等信息)
使用:主要用于查询,与查询表的语法一样
查看视图的代码:exec sp_helptext 视图名称
可以基于视图再创建视图
建议:不要在视图中使用order by子句
集合的结果集被当作一个集合使用,所以是不应该有顺序的
如果加入了top n则可以使用,这样返回的又是一个n项的无序集合,虽然看上去是有顺序的

--------------------------------------------创建视图

create view vw_ors

as
select 购买人,
总金额=SUM(销售数量*销售价格)
from MyOrders
group by 购买人
--------------------------------------------使用视图,视图主要是为了查询,表怎么用视图就怎么用
select * from vw_ors

 

转载于:https://www.cnblogs.com/CSharpLover/p/5193672.html

你可能感兴趣的文章
ajax连接服务器框架
查看>>
wpf样式绑定 行为绑定 事件关联 路由事件实例
查看>>
利用maven管理项目之POM文件配置
查看>>
用HttpCombiner来减少js和css的请问次数
查看>>
FUSE-用户空间文件系统
查看>>
将tiff文件转化为jpg文件并保存
查看>>
ubuntu 16.04 开机脚本
查看>>
 VS2012 C#调用C++ dll
查看>>
TCL:表格(xls)中写入数据
查看>>
SQL SERVER 2005中如何获取日期(一个月的最后一日、一年的第一日等等)
查看>>
django 学习笔记(转)
查看>>
控制台程序秒变Windows服务(Topshelf)
查看>>
字节流与字符流的区别详解
查看>>
20141026--娱乐-箱子
查看>>
自定义分页
查看>>
Oracle事务
查看>>
任意输入10个int类型数据,把这10个数据首先按照排序输出,挑出这些数据里面的素数...
查看>>
String类中的equals方法总结(转载)
查看>>
图片问题
查看>>
bash使用规则
查看>>