MSSQLServer基础06(变量,case,选择语句)
变量
声明: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
MSSQLServer基础06(变量,case,选择语句)的更多相关文章
- java基础2_运算符,选择语句
算数运算符 + 相加 字符串的连接 正数 - 相减 负数 * 相乘 / 相除 10 / 3 ==> 3 两个操作数中精度最高的是int 结果也是int % ...
- 8.Java基础_if-else和switch选择语句
/* 选择语句(基本与C++相同) if-else语句: 格式一: if(关系式){ 语句体; } 格式二: if(关系式){ 语句体; } else{ 语句体; } 格式三: if(关系式){ 语句 ...
- Java入门 - 语言基础 - 06.变量类型
原文地址:http://www.work100.net/training/java-variable-type.html 更多教程:光束云 - 免费课程 变量类型 序号 文内章节 视频 1 概述 2 ...
- python基础之变量以及if语句
1.变量 1.1定义:变量是一种介质,是将一些值暂时存储在内存中,方便后续程序调用.可将其看作容器但其内部的东西是可变化的. 1.2 变量的命名规则: 1.变量的命名只能由数字,字母,下划线构成. 2 ...
- case选择语句
#!/bin/bash PS3="please select menu:" select i in "Apache" "Mysql&quo ...
- linux shell 流程控制(条件if,循环【for,while】,选择【case】语句实例 --转载
http://www.cnblogs.com/chengmo/archive/2010/10/14/1851434.html nux shell有一套自己的流程控制语句,其中包括条件语句(if),循环 ...
- [转]linux shell 流程控制(条件if,循环【for,while】,选择【case】语句实例
原文链接:http://www.cnblogs.com/chengmo/archive/2010/10/14/1851434.html linux shell有一套自己的流程控制语句,其中包括条件语句 ...
- 02JAVA基础-运算符及选择语句
一.运算符 1.算数运算符 算数运算符 备注 + 可以用作拼接 - * / 整数相除得整数,需要获得小数,需一方为浮点数 % 取余数 ++ 自增 -- 自减 扩展(1) 对于++和--的扩展(以++为 ...
- Java基础——选择语句
Java基础--选择语句 1. if语句 规律: 1. 首先计算表达式的值. 2. 若表达式为真,则执行对应语句,为假则不执行. 第一种: if(表达式) 语句;//多个语句可用{} 例如 ...
随机推荐
- Jquery LigerUI框架学习(一)
ligerUI框架是一个很丰富的后台框架模板,具有简洁大方的后台样式框架,还有很多灵活的控件,方便开发人员使用: 把昨天学习的成功拿出来供大家学习学习: 首先我们要去ligerUI官网下载Jquery ...
- 多实例MySQL批量添加用户和密码并授权
OS:Cent OS 6.3 DB:5.5.14 如果一台服务器上有100个MySQL数据库实例,此时需要给不同端口的几个数据库添加用户名.密码并授权应用IP,一个个授权没问题,反正累的不是我,哇咔咔 ...
- c++迭代器(iterator)详解
1. 迭代器(iterator)是一中检查容器内元素并遍历元素的数据类型.(1) 每种容器类型都定义了自己的迭代器类型,如vector:vector<int>::iterator iter ...
- return的用法
1.一般的就是用在有返回值的方法中,用来返回方法指定类型的值,同时结束方法执行: 2.可以用在返回值为void的方法中,用来终止方法运行:
- NOIP2015 心得
NOIP2015的复赛已经过去一个多星期了,成绩也已经出来了,作为一个大(ruo)山(sheng)东的蒟蒻,在学了一年之后拿到了255的成绩.这个成绩并不是很好,但也算在我的预料之内. 第一天第一题水 ...
- php获取指定日期所在星期的开始时间与结束时间
function getWeekRange($date){ $ret=array(); $timestamp=strtotime($date); $w=strftime('%u',$ ...
- SQL Server DATEADD() 函数
SQL Server Date 函数 定义和用法 DATEADD() 函数在日期中添加或减去指定的时间间隔. 语法 DATEADD(datepart,number,date) date 参数是合法的日 ...
- iOS10 关于推送-b
最近在研究iOS10关于推送的新特性, 相比之前确实做了很大的改变,总结起来主要是以下几点: 推送内容更加丰富,由之前的alert 到现在的title, subtitle, body 推送统一由tri ...
- CentOS6.5安装tomcat7
把下载的apache-tomcat-7.0.19.tar.gz文件上传到服务器的根目录 #tar zxvf apache-tomcat-7.0.19.tar.gz #mv apache-t ...
- SVN的405错误
错误1: 如果你没有阅读以下文字,活该你倒霉(这段文字是在googlecode添加新项目时生成的): Command-line access If you plan to make changes, ...