一、知识
使用表别名
不仅可以用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