12.SQL必知必会第13课 创建高级联结(inner join &left outer join )

本文介绍了SQL中的内联结(Inner Join)和左外联结(Left Outer Join)的概念与用法。通过使用表别名简化查询,展示了内联结与上一节内容的联系,并解释了内联结如何筛选匹配的数据。同时,对比了内联结和外联结的区别,特别是在处理不同数量数据记录时的情况。最后,提供了课后习题以巩固学习效果。
摘要由CSDN通过智能技术生成

一、知识

使用表别名

不仅可以用as给列取名,还可以用as给表命别名方便缩写,举例如下

select cust_name,order_num
from 
tyqsl2.customers as c,tyqsl2.orders as o
where c.cust_id=
o.cust_id

inner join

举例
在这里插入图片描述
其实内联结就是上一讲(链接: 地址)所讲的内容。我们在上一讲这么写

select 成绩,姓名,地址 
from 表一,表二
where 表一.学号 = 表二.学号

现在我们换一种标准的内联结的写法

select 成绩,姓名,地址 
from 表一
inner join 表二
on 表一.学号 = 表二.学号

这两个操作是完全一致的。这一讲讲高级联结,我们用第二种。注意 inner join … on …的用法。

left outer join

考虑下这种情况,假设我们要对AB两张表(不妨设为学生名册)进行操作,A中有张三李四王五三个人,B中有李四王五马六三个人,那么我们如果用inner join ,势必只会筛选出李四王五两个人的数据。这种筛选关系和下图类似:
在这里插入图片描述
如果我们想要A表的完全信息,再以B表信息作为补充,这时就需要使用 outer join。outer join 筛选关系如下:
在这里插入图片描述
outer join 分为left & right。我们人为认定在如下语法,表一为左,表二为右。

select 成绩,姓名,地址 
from 表一
inner join 表二
on 表一.学号 = 表二.学号

还有不懂可以参考这篇博客,比对参考。(链接: 地址

二、课后习题

select  cust_name,order_num
from tyqsl2.customers as c
inner join tyqsl2.orders as o
on c.cust_id = o.cust_id

在这里插入图片描述
2.

select  cust_name,order_num
from tyqsl2.customers as c
left join tyqsl2.orders as o
on c.cust_id = o.cust_id

在这里插入图片描述
3.

select  prod_name,order_num
from tyqsl2.orderitems as o
right join tyqsl2.products as p
on o.prod_id=p.prod_id

在这里插入图片描述
4.这里出现code error 1055,这里解决链接: 地址

select  prod_name,sum(quantity) as total
from tyqsl2.orderitems 
right  join tyqsl2.products 
on orderitems.prod_id = products.prod_id
group by orderitems.prod_id

在这里插入图片描述
5.

SELECT v.vend_id,count(prod_id) as total
FROM tyqsl2.vendors as v
left join tyqsl2.products as p
on v.vend_id = p.vend_id
group by vend_id

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值