sql server简写

本文介绍了SQL Server中的查询顺序、GROUP BY和HAVING的使用、聚合函数、ORDER BY和TOP语句、窗口函数以及各种连接操作。还讨论了NULL处理、CASE语句、子查询和约束条件等内容,提供了丰富的示例。

笔记匆忙,内容比较杂,见谅

  • 语句执行顺序:from—where—group by having—聚合函数—select—order by

  • group by分组作用之一,是在select语句中显示出来图示2

  • 聚合函数补充

  • count(条件),count(*)区别,是否忽略null
    错误集合,开窗函数之恩用于select中

  • 按年分组

  • select year();有月也有日时候可以用
    year

  • 不能直接找null值,需要where is null/is not null
    组函数count()计算会忽略含有null的行的值

    null

  • having 是在group by 之后用的,表示对分组的结果进行筛选,后面不能用where 代替

    having前
    having

  • order by排序order by加一个分组值,会按筛选结果的字母顺序排序

    不加asc,desc

  • top语句,只能在sql server用用在select后面top (2),表示筛选出结果的前两条top
    top(20)percent 百分比,若结果值是5.4,则取6个

  • with ties用法,(附加),筛选前五个,还想把与第五个相同之后的也列出来,with ties

  • over用法,group by分组可以使用count函数与单个名不能放在一起,即select语句中,但有了over之后,可以了,select first time ,lastname,count(*)统计员组的个数over ()
    over/group/
    as 后加别名/不用as也行。over主要用于单个筛选,需要count统计时用over,筛选可以用where

  • partition,用在括号中筛选
    paritition by what
    partition是在over基础上的细分,比如说五个人的总价求和用over得出,那么用partition这个条件函数可以求出每个人的消费
    parition开始生效前效果,上图为生效后部分截图

  • 四种排序,row_number按行号排,over内必须加排名条件,因为必须要有条件:over by sname/country,缺陷是有时候相同的东西也会给你进行排名,多个相同的名字排列序号不同,下面说第二种rank’排名
    row_number

下面三种排名,rank排名相同的会有相同的排名,但是不同的出现时会加上之前的数量,数量跨度比较大,这时候用dense——rank排名,11111,2222,跨度就不大了。
相关图片dense_rank,row_number,rank·

所见即所得
ntile里面加一个参数,分几组排名,六个分三组每组2个
混合模式加入paritition,不同的country重新按12345排名混合

  • order by附加属性,order by sname,sid;就是先按sname排名,若有相等的,就按sid在来区分相同的那几个

  • partition函数与row number函数的结合1234561234,即分组在排序
    介绍图片
    介绍图片
    综合练习示例
    spj表运用示例2

  • where val >=1000 and val <=2000------=------where val between 1000 and 2000上下界不要搞混

  • 注意and 和or的区别,or或许,(必须有一个正确,check or 语句,and’的话两个条件都得满足才行)可以查郭飞宇 or 郭剑峰 or 将吓唬的。把他们的头统计出来。and就不是了应该会出错吧,有机会试一试
    in等于or,还有like+‘字符串%_’都用在where语句中

  • in和or的关系

  • like与% and_连用

  • 简单表达式
    case region
    when ‘wa’ then‘华盛顿’
    when ‘null’ then ‘其他’ // 这一行错误,null不能用来比较(换成is null 行吗?)
    else ‘其他地区’
    end
    示例错误示范

  • 搜索表达式
    case
    when region=‘wa’ then ‘花生对’
    when region=‘da’ then ‘fds’
    when region is null then ‘hh’
    else ‘对方的、’
    end
    上述可改when region in(‘wa’,‘da’,‘dsa’)then ‘faf’
    case语句的select语句变量后面要加逗号,否则出错,宛城之后,原来语句不会发生变化,会在后面外加一列要改的值,筛选两列出三列,别名加在end后面
    图片

  • 字符类型,nvarcha括号可不加内容,表示可以存可变的内容,括号内8表示最多几个字符每个字符两个字节varchar同样表示可变字节可不加括号内容最多八个字节
    nvarcha括号可不加内容,表示可以存可变的内容,括号内8表示最多几个字符每个字符两个字节varchar同样表示可变字节可不加括号内容最多八个字节,都最大只能存8000个字节,max可加,但有缺点

  • 独立子查询和高级子查询,not in 和not exists都一样,优缺都有

not in和not exist

  • 复杂子查询select (select max(i) from 内部)
    (就是找出内部最大的) where 内部.max(i)<waibu,
    一个值与比他小的之里面中最大的值比较
    截图如下
  • 派生表 from()后面必须+别名,否则会报错 ,2,派生表不能加排序,否则出错
  • 别名可以到外面起别名
    两个派生表起别名后连接可组成很长的排列
  • 交集/并集/差集
    union(去重),union all(并集不去重)/intersect(交际去重)/expect(差集去重)

    并集示例
    select 姓名
    from 一班
    union
    select 姓名
    from 二班



    sql server没有不去重关于交集和差集所以要自己想办法修改(就是增加一个排序保证同一名字序号不一样,两个表都要加排序加序号,每个国家都会有多个序号及多个国家,而不会只有一个国家,然后两个国家差集或交集运算)

    select 名 num_number() over (partition by 表顾客国家一order by 国家一)
    from 国家一
    intersect
    select 名 num_number() over (partition by 表销售国家二 order by 国家二)
    from 国家二
    示例
  • 标识列identity标识列,99之前的赋值不能外界输入,100往后可以用来赋值,每次赋值增长一个数,输入只用输入值,不用输入列号标识列自动生成
    笔记
    nvarchar
    唯一约束,不能有重复的constraint
    四种约束条件
  • 内连接外连接(l)[https://blog.csdn.net/plg17/article/details/78758593select语句要写后面改的,
    as count()总分 persisted可以输入https://www.cnblogs.com/douzi520/p/9869740.html
  • 内连接就是显示出相同的元素
  • select * from a_table a inner join b_table b on a.a_id = b.b_id;在这里插入图片描述
  • 左外连接
  • select * from a_table a left join b_table b on a.a_id = b.b_id;
  • 只显示左表加共有的部分
    在这里插入图片描述
  • 右连接同理在这里插入图片描述
    经典
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值