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语句向两个表中添加数据。
```mysqlINSERT 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表,语句如下:
```mysqlSELECT students.student_id, students.student_name, courses.course_name
FROM coursesRIGHT OUTER JOIN students ON courses.course_id = students.course_id;
结果如下:
+------------+--------------+-------------+
| student_id | student_name | course_name |+------------+--------------+-------------+
| 1 | 张三 | 语文 || 2 | 李四 | 数学 |
| 3 | 王五 | 英语 || NULL | NULL | 物理 |
+------------+--------------+-------------+
本文介绍了MySQL中外部查询的两种常见类型和使用方法。希望这篇文章能够帮助大家更好地理解MySQL查询的方法。