📜  通过连接 2 个不同的表向新表插入值 - SQL (1)

📅  最后修改于: 2023-12-03 15:42:03.875000             🧑  作者: Mango

通过连接 2 个不同的表向新表插入值 - SQL

在SQL中,使用JOIN关键字可以连接两个或更多表,从而将它们的数据合并到一起。当我们需要从不同的表中检索数据时,连接操作就派上用场了,其中可能需要从多个表中依据某些关系抽取数据。通过连接各个表,可以在一个新表中插入这些值。在本文中,我们将介绍如何使用连接操作,向一个新表中插入来自不同表的数据。

SQL语句

在SQL中,以下是连接操作中最常用的三种:

  1. 内连接(INNER JOIN)

内连接也可以称为等值连接(Equi-Join),这种连接要求两个表之间至少存在一个匹配的行,否则将不返回任何数据。SQL的INNER JOIN关键字可以用于执行内联接。以下是基本语法:

SELECT column_name(s)
FROM table1
INNER JOIN table2
ON table1.column_name = table2.column_name;
  1. 左链接(LEFT JOIN)

左连接返回左侧表中的所有行以及右侧表中的所有匹配行。如果右侧表中不存在匹配行,则结果集中将包括NULL值。SQL的LEFT JOIN关键字可以用于执行左连接。以下是基本语法:

SELECT column_name(s)
FROM table1
LEFT JOIN table2
ON table1.column_name = table2.column_name;
  1. 右连接(RIGHT JOIN)

右连接则是左连接的反向操作。右连接返回右侧表中的所有行及左侧表中的所有匹配行。如果左侧表中不存在匹配行,则结果集中将包括NULL值。SQL的RIGHT JOIN关键字可以用于执行右连接。以下是基本语法:

SELECT column_name(s)
FROM table1
RIGHT JOIN table2
ON table1.column_name = table2.column_name;

这些代码片段可以自由地设置表和列名,同时需要根据自己的要求来添加WHERE条件,以过滤所需的数据。

插入语句

完成连接操作后,我们可以使用INSERT INTO语句将连接后的表中的数据插入到另一个指定的表中。以下是基本的INSERT INTO语法:

INSERT INTO table_name (column1, column2, column3, ...)
SELECT column_name(s)
FROM table1
INNER JOIN table2
ON table1.column_name = table2.column_name;

需要注意的是,所有要插入到目标表中的列,必须在INSERT INTO语句中列出。

示例

我们假设有两个表:customersorders。表customers包含客户的信息,如客户编号(customer_id),客户姓名(customer_name)和客户地址(customer_address),而表orders包含订单信息,如订单编号(order_id),订单日期(order_date),订单金额(order_total)和客户编号(customer_id)。

我们要将这两个表中的信息合并到一个新表customer_orders中。以下是我们要执行的SQL语句:

INSERT INTO customer_orders (customer_id, customer_name, order_id, order_date, order_total)
SELECT customers.customer_id, customers.customer_name, orders.order_id, orders.order_date, orders.order_total
FROM customers
INNER JOIN orders
ON customers.customer_id = orders.customer_id;

此语句使用内连接从两个表中检索数据,并将结果插入到目标表customer_orders中。结果集将包含具有以下列的行:customer_id,customer_name,order_id,order_date和order_total。

结论

在SQL中,使用JOIN关键字可以连接两个或更多表,并将它们的数据合并到一起。通过连接各个表,我们可以在一个新表中插入来自不同表的数据。通过本文所介绍的三种JOIN类型和INSERT INTO语句,可以非常轻松地完成此操作。