MySQL多表查询分类

1.连接查询

内连接:查询多张表的交集部分,只有在两个表中都有匹配的字段值时,记录才会返回。

以下是一个简单的MySQL内连接查询示例:

假设我们有两个表,一个是员工表 employees 和一个是部门表 departments

employees 表:

employee_idemployee_namedepartment_id
1John Doe1
2Jane Smith2
3Anne Brown1

departments 表:

department_iddepartment_name
1HR
2IT
3Marketing

如果我们想要查询所有员工及其部门信息,我们可以使用内连接:

SELECT employees.employee_name, departments.department_name

FROM employees

INNER JOIN departments ON employees.department_id = departments.department_id;

这将返回所有在 employees 表中有对应 department_id 的员工及其在 departments 表中的部门名称。

结果可能如下:

employee_namedepartment_name
John DoeHR
Anne BrownHR

2.外连接:

MySQL外连接包括左外连接(LEFT JOIN)、右外连接(RIGHT JOIN)和全外连接(FULL JOIN)。外连接用于查询两个或多个表中有相关联的行,同时返回其中一边表中的所有记录,即使另一边表中没有相应匹配。

左外连接(LEFT JOIN)会返回左表中的所有记录,即使右表中没有匹配。右外连接(RIGHT JOIN)会返回右表中的所有记录,即使左表中没有匹配。全外连接(FULL JOIN)会返回两个表中的所有记录,无论它们之间是否匹配,但MySQL不直接支持FULL JOIN,需要通过UNION来模拟。

以下是使用左外连接的示例代码:

SELECT a.*, b.*

FROM a

LEFT JOIN b ON a.id = b.a_id;

这将返回表a的所有记录,以及表b中与表a的id字段匹配的a_id字段的记录。如果b中没有匹配的记录,则结果中b的部分会包含NULL。

右外连接和全外连接的使用方法类似,只是从另一个表的角度来返回结果。由于MySQL不支持直接的FULL JOIN,全外连接可以通过以下方式模拟

SELECT *

FROM a

LEFT JOIN b ON a.id = b.a_id

UNION

SELECT *

FROM a

RIGHT JOIN b ON a.id = b.a_id;

这将返回左外连接和右外连接的结果的并集,从而模拟全外连接的效果。

2.联合查询:

union查询,就是把多次查询的结果合并起来,形成一个新的查询结果。

3.子查询

嵌套查询

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值