内连接、外连接多表联合查询

          内连接与外连接(全网最详细)-CSDN博客文章浏览阅读2.9w次,点赞80次,收藏303次。全面剖析 内外连接查询文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言在学习内连接与外连接之前,你不妨思考为什么要引入这两种连接方式,带着问题去学习,更有助于我们对知识的学习。 其实在单表查询中,我们是不会接触到这两种查询方式,这两种查询方式只是针对我们对于多表的查询,只是这两种方式在实际应用中的方式会根据不同业务需求去使用不同的方式来查询多表。..._内连接https://blog.csdn.net/qq_44419734/article/details/124501484

        内外连接查询的方式只是针对我们对于多表的查询,只不过这种方式在实际应用中的方式会根据不同业务需求去使用不同的方式来查询多表。

1.内连接

        内连接: 合并具有同一列的两个以上的表的行, 结果集中不包含一个表与另一个表不匹配的行

        关键字:INNER JOIN 

语法:

        SELECT 字段列表
        FROM A表 INNER JOIN B表
        ON 关联条件
        WHERE 等其他子句;

可以把INNER JOIN 想成两个集合的交集

                                                   

例子:

-- mytable--主表,another_table--要连接的表
SELECT column, another_table_column FROM mytable INNER JOIN another_table
ON mytable.id = another_table.id
WHERE ORDER BY column ASC/DESC
LIMIT num_limit OFFSET num_offset;



-- 方式一:
SELECT e.employee_id, e.last_name, e.department_id,
d.department_id, d.location_id
FROM employees e JOIN departments d
ON (e.department_id = d.department_id);
 
-- 方式二:
SELECT employee_id,department_name
FROM employees e,departments d
WHERE e.department_id = d.department_id;
 

说明: INNER JOIN 先将两个表数据连接到一起. 两个表中如果通过ID互相找不到的数据将会舍弃,INNER JOIN 可以简写做 JOIN. 两者是相同的意思

2. 外连接

        外连接:两个表在连接过程中除了返回满足连接条件的行以外,还返回左(或右)表中不满足条件的行 ,这种连接称为左(或右) 外连接。没有匹配的行时, 结果表中相应的列为空(NULL)。

外连接包括:左连接LEFT JOIN,右连接RIGHT JOIN 和 全连接FULL JOIN。

 左连接语法:
        SELECT 字段列表
        FROM A表 LEFT JOIN B表
        ON 关联条件
        WHERE 等其他子句;

右连接语法:

        SELECT 字段列表
        FROM A表 RIGHT JOIN B表
        ON 关联条件
        WHERE 等其他子句;

例子: 

--左连接
SELECT e.last_name, e.department_id, d.department_name
FROM employees e
LEFT OUTER JOIN departments d
ON (e.department_id = d.department_id) ;


--右连接
SELECT e.last_name, e.department_id, d.department_name
FROM employees e
RIGHT OUTER JOIN departments d
ON (e.department_id = d.department_id) ;

 

在表A 连接表B, 左连接LEFT JOIN保留A的所有行,不管有没有能匹配上B,右连接RIGHT JOIN则保留所有B里的行。全连接FULL JOIN 不管有没有匹配上,同时保留A和B里的所有行,如果某一行在另一个表不存在,会用 NULL来填充结果数据。如下图:

注意:

LEFT OUTER JOIN 等价 LEFT JOIN

RIGHT OUTER JOIN 等价 RIGHT JOIN

FULL OUTER JOIN 等价 FULL JOIN

全外连接的结果 = 左右表匹配的数据 + 左表没有匹配到的数据 + 右表没有匹配到的数据。

由于mysql不支持FULL JOIN,于是我们需要用 LEFT JOIN UNION RIGHT JOIN代替。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值