MySQL实现表间外部查询的方法(mysql两表外部查询)

MySQL实现表间外部查询的方法

在MySQL数据库中,有许多方法来查询多个表中的数据。其中一种方法是使用外部查询(Outer Join),它可以将两个或多个表中的数据合并在一起,从而创建一个包含各种符合条件的数据的新表。本文将介绍如何使用MySQL实现外部查询。

表的创建

我们需要创建两个表,分别是”students”和”courses”。可以在MySQL Workbench中使用以下DDL语句创建表。

“`mysql

CREATE TABLE students (

student_id INT NOT NULL,

student_name VARCHAR(45),

course_id INT,

PRIMARY KEY (student_id)

);

CREATE TABLE courses (

course_id INT NOT NULL,

course_name VARCHAR(45),

PRIMARY KEY (course_id)

);


向表中添加一些数据

要演示如何使用外部查询,我们需要向这两个表中添加一些数据。使用INSERT语句向两个表中添加数据。

```mysql
INSERT INTO students(student_id, student_name, course_id) VALUES(1, '张三', 1);
INSERT INTO students(student_id, student_name, course_id) VALUES(2, '李四', 2);
INSERT INTO students(student_id, student_name, course_id) VALUES(3, '王五', 3);
INSERT INTO students(student_id, student_name, course_id) VALUES(4, '赵六', 4);

INSERT INTO courses(course_id, course_name) VALUES(1, '语文');
INSERT INTO courses(course_id, course_name) VALUES(2, '数学');
INSERT INTO courses(course_id, course_name) VALUES(3, '英语');

内部查询

在MySQL中,有两种常见的内部查询方式:INNER JOIN和LEFT JOIN。

INNER JOIN是将两张表的记录合并起来,只有两张表里都有的数据才会被查询出来。

LEFT JOIN是左外连接,它会保留左表(即FROM子句中的第一个表)中所有数据,右表中符合条件的数据也会被查询出来。

外部查询

如果要查询两张表中所有的数据,无论是否符合条件,我们可以使用OUTER JOIN。它也有两种类型:LEFT OUTER JOIN和RIGHT OUTER JOIN。

LEFT OUTER JOIN会保留左表中所有的记录,同时将右表中符合条件的数据合并到左表中。

RIGHT OUTER JOIN则将右表中的所有记录都保留下来,并将左表中符合条件的数据合并到右表中。

下面是使用LEFT OUTER JOIN合并students和courses表的查询示例:

“`mysql

SELECT students.student_id, students.student_name, courses.course_name

FROM students

LEFT OUTER JOIN courses ON students.course_id = courses.course_id;


结果如下:

+————+————–+————-+

| student_id | student_name | course_name |

+————+————–+————-+

| 1 | 张三 | 语文 |

| 2 | 李四 | 数学 |

| 3 | 王五 | 英语 |

| 4 | 赵六 | NULL |

+————+————–+————-+


我们可以看到,左表(students)中的所有记录都被保留了下来。同时,如果right表(courses)中存在与left表(students)相关的记录,则会将它们合并在一起。

右外连接(RIGHT OUTER JOIN)使用方法与左外连接类似,只不过将student表换成courses表,语句如下:

```mysql
SELECT students.student_id, students.student_name, courses.course_name
FROM courses
RIGHT OUTER JOIN students ON courses.course_id = students.course_id;

结果如下:

+------------+--------------+-------------+
| student_id | student_name | course_name |
+------------+--------------+-------------+
| 1 | 张三 | 语文 |
| 2 | 李四 | 数学 |
| 3 | 王五 | 英语 |
| NULL | NULL | 物理 |
+------------+--------------+-------------+

本文介绍了MySQL中外部查询的两种常见类型和使用方法。希望这篇文章能够帮助大家更好地理解MySQL查询的方法。


数据运维技术 » MySQL实现表间外部查询的方法(mysql两表外部查询)