• 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




  • 相关阅读:
    回来了
    【Docker】Docker学习笔记:shipyard使用
    【Docker】Docker学习笔记:安装部署
    【LVS】LVS用windows作为realserver的设置方法
    【linux常用命令】linux命令工具基础
    【linux工具】crontab
    【开源软件】windows环境下libcurl编译
    【工作笔记】CPU亲和性
    【转】多线程or多进程
    【学习笔记】git常用命令
  • 原文地址:https://www.cnblogs.com/CSharpLover/p/5193672.html
Copyright © 2020-2023  润新知