MySQL 将数据插入连接表中
在MySQL中,INNER JOIN关键字被用于在两个或多个表之间建立连接,并根据指定的条件检索相关行。 INNER JOIN返回匹配的数据,它的语法如下所示:
SELECT column_name(s) FROM table1 INNER JOIN table2 ON table1.column_name = table2.column_name;
在内部连接语句中,on子句包含了我们连接表所需的逻辑。 通常,这确保了我们在任何使用SQL的地方都必须使用内部连接作为任何连接的首选选项。但是,我们通常会面临将来必须插入到连接表中的情况,而不是仅仅从这些连接表中检索数据。 这时,我们可以使用“insert into”语句,将数据插入到已连接的表中。
阅读更多:MySQL 教程
插入数据到内部连接表
内部连接语句可以用于同时检索两个或多个表中的数据。 INSERT INTO语句,另一方面,用于将数据插入数据库表中。在MySQL中,您可以使用INSERT INTO内部连接表,以便将数据插入其相关表中。
例如,我们假设有两个表:一个是country表,包含主键,同时存在一个country_id列。另一个是city表,包含主键,同时存在一个country_id列,该列与另一个表中的country_id列相关联。我们可以使用INNER JOIN将两个表连接在一起,如下所示:
SELECT c.name, ci.city_name FROM country c INNER JOIN city ci ON c.country_id = ci.country_id;
上面的语句将返回一个由country姓名和city城市名组成的结果集。如果我们想在INNER JOIN表中插入数据,我们可以使用类似如下的INSERT INTO语句:
INSERT INTO country_city (name, city_name)
SELECT c.name, ci.city_name FROM country c
INNER JOIN city ci ON c.country_id = ci.country_id;
以上语句把结果集插入到country_city表中的相关列。country_city表包含两个列,分别是country的name和city城市名。 这就使得我们插入了带有 INNER JOIN的表中。
示例代码
以下是一个完整的示例代码,演示如何将数据插入内部连接表中。我们将用一个示例表(名为“employees”和“employees_departments”)作为例子。在这个示例中,“employees”和“employees_departments”表被INNER JOIN在一起,这样就可以将数据插入到内部连接表中:
-- 创建员工表
CREATE TABLE employees (
employee_id INT PRIMARY KEY,
full_name VARCHAR(255),
email VARCHAR(255),
phone VARCHAR(50),
hire_date DATE,
department_id INT
);
-- 创建员工-部门表
CREATE TABLE employees_departments (
department_id INT,
employee_id INT,
FOREIGN KEY (department_id) REFERENCES departments(department_id),
FOREIGN KEY (employee_id) REFERENCES employees(employee_id)
);
-- 向“employees”和“employees_departments”插入数据
INSERT INTO employees (employee_id, full_name, email, phone, hire_date, department_id)
VALUES
(101, 'John Doe', 'john.doe@company.com', '555-555-1212', '2020-06-01', 1),
(102, 'Jane Smith', 'jane.smith@company.com', '555-555-1313', '2020-06-01', 1),
(103, 'Bob Johnson', 'bob.johnson@company.com', '555-555-1414', '2020-06-02', 2),
(104, 'Sarah Lee', 'sarah.lee@company.com', '555-555-1515', '2020-06-02', 2),
(105, 'Tom Anderson', 'tom.anderson@company.com', '555-555-1616', '2020-06-03', 3),
(106, 'Alice Johnson', 'alice.johnson@company.com', '555-555-1717', '2020-06-03', 3);
INSERT INTO employees_departments (department_id, employee_id)
SELECT d.department_id, e.employee_id FROM departments d
INNER JOIN employees e ON d.department_name = 'IT' AND e.department_id = d.department_id;
上述代码中,我们首先创建了两个表:employee和employees_departments。employee表包含员工名称、电子邮件地址、电话号码和雇佣日期等列,同时有一个主键列employee_id。employees_departments表链接了employee表,并包含两个列:一个是employee_id列,另一个是department_id列。
接下来,我们使用INSERT INTO语句将数据插入到employees表中。我们可以看到,在插入数据时,我们提供了所有的列名和所有的相关值。在这种情况下,可以使用VALUES子句,为employees表的每个列提供一个插入值。
最后,我们使用INSERT INTO和INNER JOIN语句将数据插入到连接表employees_departments中。我们使用SELECT语句来检索与IT部门相关的所有employee_id,并使用INNER JOIN操作将其连接到department_id。在这种情况下,我们只是在 INNER JOIN表上运行一个查询,并将结果插入到另一个表中,这很方便!
总结
在MySQL中,INNER JOIN是将两个或多个表链接在一起的最常用方式之一。要将数据插入连接表中,我们可以使用INSERT INTO语句。使用INNER JOIN和INSERT INTO语句,可以轻松地插入数据到已连接的表中,并以多种方式处理相关的数据。您现在应该已掌握如何使用INNER JOIN和INSERT INTO,这些工具可以在您使用MySQL时提供强大和灵活的解决方案。