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(表达式) 语句;//多个语句可用{} 例如 ...
随机推荐
- select标签用法
<select name="type" class="textarea" onchange='bbbb(this.value)' > <opt ...
- How to change comment
AX2009 // USR Changed on 2013-07-10 at 12:57:46 by 7519 - Begin // USR Changed on 2013-07-10 at 12:5 ...
- python 字典内置方法get应用
python字典内置方法get应用,如果我们需要获取字典值的话,我们有两种方法,一个是通过dict['key'],另外一个就是dict.get()方法. 今天给大家分享的就是字典的get()方法. 这 ...
- ArcGIS For JavaScript API 默认参数
“esri.config”的是在1.3版中的的“esriConfig”的替代品.如果您使用的是1.2或更低的版本,您应该参阅默认API v1.2和更低的配置.对于版本1.3或更高版本,您可以使用“es ...
- stringlist
#ifndef _STRINGLIST_HPP_#define _STRINGLIST_HPP_ #include "../global.hpp"#include <type ...
- javac。java版本切换
如果安装有多个Java版本时(有时候有些软件自行安装),怎样方便的进行切换呢.除了常见的设置环境变量外,今天学到了一种新的切换方法: update-alternatives --config java ...
- CentOS服务器Http压力测试之ab
ab的全称是Apache Bench,是Apache自带的网络压力测试工具,相比于LR.JMeter,是我所知道的 Http 压力测试工具中最简单.最通用的. ab命令对发出负载的计算机要求很低,不会 ...
- CHROME下去掉保存密码后输入框变成黄色背景样式
之前没遇到过这种情况,现在打开这个页面后,手机号和密码都已经输入了,而且还显示的是黄色背景,清了下cookie,没有解决问题.请教了下大神,先把方法整理到这儿. 用代码审查看了input样式有如下样式 ...
- phpcms v9
栏目列表 {pc:content action="category" catid="$catid" num="34" siteid=&quo ...
- Android开发应用异步检查更新代码
开发环境:android studio sdk 4.0及以上 场景:用户点击检查更新按钮进行检查服务器版本号,若有新版本则进行下载更新.异步检测版本号 package com.example.q ...