5. 表连接

本文详细介绍了数据库连接中的内连接(INNER JOIN)、外连接(LEFT JOIN、RIGHT JOIN、FULL JOIN)以及如何进行多表连接。通过示例解释了连接条件在不同连接类型中的作用,并展示了连接操作如何影响结果集。内连接只返回匹配的行,外连接则会包含未匹配的行,用NULL填充。同时,文章也探讨了没有连接条件的内连接和自连接的概念。
摘要由CSDN通过智能技术生成

内连接 – INNER JOIN

mysql 内连接是指只返回两个表中共同匹配的行,不包括未匹配的行

例如:SELECT * FROM table1 INNER JOIN table2 ON table1.id = table2.id,返回的数据表会只包含table1和table2中id相同的行。

MySQL 中的 内连接(INNER JOIN) 是一种基于两个或多个表之间的共同列进行连接的方式。内连接返回两个表中所有符合条件的记录,如果没有匹配的记录,则不返回该行。下面是一些内连接的示例和结果。

假设我们有两个表 orders 和 customers,包含以下记录:

在这里插入图片描述
现在,我们想要通过 customer_id 列连接这两个表,并找到每个订单的客户名称和订单日期。我们可以使用内连接语句:

SELECT customers.name, orders.order_date
FROM customers
INNER JOIN orders
ON customers.customer_id = orders.customer_id;

在上面的查询中,INNER JOIN 子句指定 customers 和 orders 表之间的连接。

连接条件是 customers.customer_id = orders.customer_id,即两个表中的 customer_id 列相等。执行查询后,我们得到以下结果:

name order_date
Alice 2020-01-01
Bob 2020-01-02
Bob 2020-01-03
Carol 2020-01-04

我们可以看到上面查询返回了所有符合条件的记录,即 orders 表中的每一行都与 customers 表中的某一行相匹配。

最后,在这个例子中,内连接后的数据表并没有被创建,而是在查询时通过内连接语句动态地生成了结果集。

下面展示没有经过处理的内连接之后返回的数据是怎么样的

在这里插入图片描述
在这个结果集中,来自 customers 表格和 orders 表格的行通过它们之间共同的 customer_id 列连接。我们可以看到这个结果集包含了两个表格中那些满足 JOIN 条件的行,并且这些行的列值被合并在一起。

如果希望只返回特定的列而非所有列,则需要将 * 替换为所需的列名。


没有设置连接条件的内连接

如果在执行内连接时没有指定连接条件,则将会返回两个表格的笛卡尔积(Cartesian Product)。换言之,结果将会包含两个表格中的所有行,其中每一行都是来自表格A和表格B中的一行组合而成的。例如,如果表格A中有m行,表格B中有n行,则内连接的结果将会包含m x n行

以下是一个没有指定连接条件的内连接示例:

SELECT *
FROM table1
INNER JOIN table2;

table1

col1 col2
a<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值