内连接与外连接(全网最详细)-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代替。