SQL分组查询以及多表连接

一、分组查询-对比


WHERE子句:从数据源中去掉不符合其搜索条件的数据

GROUP BY子句:搜集数据行到各个组中,统计函数为各个组计算统计值

HAVING子句 :
去掉不符合分组搜索条件的各组数据行

--1.having与group合作能够先分组后条件
SELECT publisherNo,SUM(price)  同一出版社的所有书价格之和大于1六十的
FROM Book
GROUP BY publisherNo
HAVING SUM(price)>60
--2.而where只能先条件筛选再分组
SELECT publisherNo,price
FROM Book
WHERE price>30
GROUP BY publisherNo,price

having后可以跟聚合语句喔。 

二、多表连接

1.内连接:

使用比较运算符进行多表间某(些)列数据的比较操作,查找出这些表中与连接条件相匹配的数据行。

   表一:OrderMaster

   表二:Employee

(1)等值连接:

--把saleNo与employeeNo相等的连接
SELECT orderNo,employeeNo,employeeName,sex,orderSum,salerNo
FROM OrderMaster INNER JOIN Employee
ON OrderMaster.salerNo=Employee.employeeNo
WHERE orderSum>20000

(2)不等值连接:

这里普及一个知识:运算符包括>、<、!>、!<和<>、!=。依次是大于、小于、不大于、不小于、不等于、不等于

这个就不写了具体无非是:

表1.某某<>表2.某某

(3)自然连接:sqlserver中代表自然连接的就是等值连接(不存在natural join关键字),其它sql语句是含有自然连接: natural join关键字的

2.外连接:

通过比较运算符把多张表的数据连接在一起,与内连接不同点是,外连接不只列出与连接条件相匹配的行,而且还能列出左表、右表或两个表中所有符合搜索条件,不匹配的数据行。

想要列出以符合左表为搜索条件的,使用左连接

想要列出以符合右表为搜索条件的,使用右连接

可以看到同样的查询使用左右外连接的结果是不一样的,使用右连接时,左表(Borrow借书)如果没有与左表匹配的书编号,则说明没有人借,所以readerNo,borrowDate,bookName都为NULL

全外连接:FULL JOIN

如果左边或右边没有匹配行,则左部分或右部分显示NULL

由于我的书库表里面啥书都有,所以不存在说别人借的书是我这没有的,因此跟右外连接一样的结果,这里就不截图了。

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值