1、连接查询的基本语法
from TABLE1 join_type TABLE2 [on (join_condition)] [where (query_condition)]
TABLE1:左表(在连接类型左边的表)
TABLE2:右表(在连接类型右边的表)
join_type:连接的类型。交叉、内连接、左外连接、右外连接
on:设置连接条件,是非必须的
where:对连接查询的结果进一步的筛选,是非必须的
2、交叉连接
cross join:不带on子句,返回连接表中所有数据的笛卡尔积
比如A表有5条数据、B表有6条数据,那他们的笛卡尔积就是30条。
select * from CUSTOMER cross join ORDERS;
或者
select * from CUSTOMER,ORDERS;
select c.name,o.order_number from CUSTOMER c,ORDERS o;
3、内连接
内连接:分为隐式内连接和显式内连接,返回连接表中符合连接条件,以及符合查询条件的数据。
隐式内连接:(不使用on关键字,使用where)
select * from CUSTOMER c,ORDERS o where c.id=o.customer_id;
显式内连接:(使用on关键字)
select * from CUSTOMER c inner join ORDERS o on c.id=o.customer_id;
4、外连接
外连接:分为左外连接和右外连接。
和内连接不同的是,外连接不光返回连接表中符合连接条件以及符合查询条件的数据
它还会返回左表(左外连接)或右表(右外连接)中仅符合查询条件的但不符合连接条件的数据
左外连接:返回符合连接条件的所有记录,同时还返回左表中其余的所有记录,left outer join也可简写为left join
select * from CUSTOMER c left outer join ORDERS o on c.id=o.customer_id;
右外连接:返回符合连接条件的所有记录,同时还返回右表中其余的所有记录,right outer join也可简写为right join
select * from CUSTOMER c right outer join ORDERS o on c.id=o.customer_id;
5、全连接
full join:和外连接不同的是,全连接不光返回连接表中符合连接条件以及符合查询条件的数据
它还会返回两张表中仅符合查询件的数据
select * from CUSTOMER c full join ORDERS o on c.id=o.customer_id;