数据库原理之多表查询——使用Mysql进行内连接和外连接

作者:CSDN-PleaSure乐事

欢迎大家阅读我的博客 希望大家喜欢

使用环境:Idea

目录

1.内连接

1.1隐式内连接

1.1.1定义

1.1.2举例

1.1.3优缺点

1.2显式内连接

1.2.1定义

1.2.2举例

1.2.3优缺点

2.外连接

2.1左外连接

2.1.1定义

2.1.2举例

2.2右外连接

2.2.1定义

2.2.2举例


1.内连接

1.1隐式内连接

1.1.1定义

在多表查询当中,隐式内连接是指没有显式使用JOIN关键字来进行表连接的一种方式,隐式内连接可以通过在SELECT语句中列出多个表,并在 WHERE 子句中指定连接条件来实现。具体格式如下:

select 字段列表 from 表1,表2 where 条件 ...;

1.1.2举例

假设我们有两个表 employees 和 departments,并且想要获取每个员工及其所在部门的信息,可以使用以下查询:

SELECT employees.emp_id, employees.name, departments.dept_name
FROM employees, departments
WHERE employees.dept_id = departments.dept_id;

若其中有数据,我们可以得到如下结果:

1.1.3优缺点

对于非常简单的查询,隐式内连接可以让查询看起来更简洁。

但是代码可读性差,没有明确指出连接类型,使得查询更难理解。如果没有合适的WHERE子句,可能会导致笛卡尔积。

1.2显式内连接

1.2.1定义

在多表查询中,显式内连接是一种明确指定两个或多个表如何连接的方法。它使用JOIN关键字,使得连接条件和连接类型更加明显,从而提高了查询的可读性和可维护性。具体格式如下:

select 字段列表 from 表1 [inner] join 表2 on 连接条件 ...;

1.2.2举例

假设我们有两个表:employees 和 departments,其中 employees 表包含员工信息,departments 表包含部门信息。我们想获取每个员工及其所在的部门名称,代码如下:

SELECT employees.emp_id, employees.name, departments.dept_name
FROM employees
INNER JOIN departments
ON employees.dept_id = departments.dept_id;

其中的结果与上述的隐式内连接一致。

1.2.3优缺点

式内连接使连接逻辑更加明显,易于理解,且可以通过明确指定连接条件,可以避免因遗漏连接条件而导致的笛卡尔积问题。


2.外连接

2.1左外连接

2.1.1定义

左外连接返回所有左侧表中的记录,并且只返回右侧表中匹配的记录。如果右侧表中没有匹配的记录,则右侧表的列将显示为NULL。

格式如下:

select 字段列表 from 表1 left [ outer] join 表2 on 连接条件 ...;

2.1.2举例

假设我们有两个表:employees 和 departments,我们希望获取所有员工的信息以及他们所在的部门名称。如果某个员工没有分配到部门,我们仍然希望显示该员工的信息,并在部门列中显示 NULL。代码如下:

SELECT employees.emp_id, employees.name, departments.dept_name
FROM employees
LEFT JOIN departments
ON employees.dept_id = departments.dept_id;

2.2右外连接

2.2.1定义

右外连接与左外连接相反,它返回所有右侧表中的记录,并且只返回左侧表中匹配的记录。如果左侧表中没有匹配的记录,则左侧表的列将显示为 NULL。

2.2.2举例

如果要求如上,我们可以这样写:

SELECT employees.emp_id, employees.name, departments.dept_name
FROM employees
RIGHT JOIN departments
ON employees.dept_id = departments.dept_id;

作者:CSDN-PleaSure乐事

希望我的博客对您有帮助,也希望在对您有帮助时您可以为我留下点赞收藏与关注,这对我真的很重要,谢谢!

  • 34
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值