MySQL两表关联简单实现代码(mysql两表关联的代码)

MySQL两表关联简单实现

在数据库设计及操作中,常常需要将两个或多个表进行关联,以获取更多有用的数据。在 MySQL 中,通过使用 JOIN 操作符可以实现两个表的关联。本文将介绍两个表关联的实现方法,并附有相关代码演示。

1. 内联结(INNER JOIN)

内联结又称为等值连接,是最基本的连接方式之一。它可以将两个表根据某列相同的记录关联起来。语法如下:

SELECT *
FROM table1
JOIN table2
ON table1.column1 = table2.column2;

其中,table1 和 table2 是待关联的两个表名,column1 和 column2 是这两个表需要关联的列名。关联后,将返回符合条件的记录(两表列匹配的行),如果没有匹配到任何记录,则不返回任何结果。

下面是一个简单的内联结示例,其中包含两个表——客户表和订单表:

客户表(customer):

| id | name |

| — | ——– |

| 1 | Alice |

| 2 | Bob |

| 3 | Charlie |

订单表(orders):

| id | customer_id | order_date |

| — | ———–| ———-|

| 1 | 1 | 2020-01-01|

| 2 | 1 | 2020-02-01|

| 3 | 2 | 2020-02-15|

我们可以使用下面的 SQL 语句执行这个关联操作:

SELECT *
FROM customer
JOIN orders
ON customer.id = orders.customer_id;

执行后的结果如下:

| id | name | id | customer_id | order_date |

| — | ——– | — | ———–| ———-|

| 1 | Alice | 1 | 1 | 2020-01-01|

| 1 | Alice | 2 | 1 | 2020-02-01|

| 2 | Bob | 3 | 2 | 2020-02-15|

可以看出,返回了两个表中已匹配的行。

2. 左联结(LEFT JOIN)

左联结也称为左外连接,它返回的记录集包含左表中的所有记录,以及右表中匹配左表中相应记录的记录集(如果有的话)。如果右表中没有匹配的行,将返回 NULL 值。

语法如下:

SELECT *
FROM table1
LEFT JOIN table2
ON table1.column1 = table2.column2;

和内联结类似,table1 和 table2 是待关联的两个表名,column1 和 column2 是这两个表需要关联的列名。

下面是一个左联结的示例,在客户表(customer)和订单表(orders)的基础上,新增加了一个订单状态表(order_status):

订单状态表(order_status):

| id | status |

| — | ————|

| 1 | In Progress |

| 2 | Completed |

接下来,我们需要关联三个表,获取每个客户的订单的状态信息(如果有的话):

SELECT *
FROM customer
LEFT JOIN orders
ON customer.id = orders.customer_id
LEFT JOIN order_status
ON orders.status_id = order_status.id;

执行后的结果如下:

| id | name | id | customer_id | order_date | status_id | status |

| — | ——– | — | ———–| ———-| ———| ———–|

| 1 | Alice | 1 | 1 | 2020-01-01| 1 | In Progress|

| 1 | Alice | 2 | 1 | 2020-02-01| NULL | NULL |

| 2 | Bob | 3 | 2 | 2020-02-15| 2 | Completed |

| 3 | Charlie | NULL| NULL | NULL | NULL | NULL |

可以看出,左联接的结果包含左表的所有行,以及右表中匹配左表中某些行的行,还包括左表中没有匹配的行的 NULL 值。因此,在上例中,Alice 的第二笔订单没有状态,因此状态列返回了 NULL 值。

本文提供了两个基本的 MySQL 关联表方式(内联结和左联结)的实现代码演示,可以帮助初学者更好地掌握如何使用 JOIN 操作符来关联两个表。


数据运维技术 » MySQL两表关联简单实现代码(mysql两表关联的代码)