MySQL 连接表格的两种方法有什么区别
在 MySQL 数据库中,有两种不同的方法可以使用连接表格。分别是:INNER JOIN 和 LEFT JOIN。在处理数据查询时,这两种方法可以帮助我们进行不同的数据处理。
阅读更多:MySQL 教程
INNER JOIN
INNER JOIN(又称为Join)是指两个数据表格中只选择匹配的记录进行输出。具体来说就是,输出两个表格中都包含的记录。 INNER JOIN 的语法格式如下:
SELECT column_name(s)
FROM table1
INNER JOIN table2
ON table1.column_name = table2.column_name;
比如说,我们有两个数据表格——学生表格和成绩表格。
在学生表格中包含了全部学生信息,而成绩表格中包含了每个学生的各科成绩。如果我们想查询所有有数学成绩的学生信息,就可以用 INNER JOIN 连接两个表格查询。命令如下:
SELECT *
FROM students
INNER JOIN grades
ON students.id = grades.student_id
WHERE grades.subject = 'math';
其中,我们指定了两个表格,students 和 grades,并比较了两个表格中的对应字段(student_id 和 id)。最后我们使用 WHERE 筛选出匹配的数据,即成绩表格中的主题是数学的学生。
LEFT JOIN
LEFT JOIN(又称为 LEFT OUTER JOIN)是指输出主要表格中的全部数据,和次要表格中的匹配数据。具体来说,如果次要表格中没有匹配的数据,则输出 NULL。LEFT JOIN 的语法格式如下:
SELECT column_name(s)
FROM table1
LEFT JOIN table2
ON table1.column_name = table2.column_name;
比如说,我们依然使用上述的学生表格和成绩表格。这次我们想查询所有学生的成绩状况,包括一些在成绩表格中没有对应记录的学生。我们不使用 WHERE 语句限制查询条件,而是直接左连接两个表格。命令如下:
SELECT *
FROM students
LEFT JOIN grades
ON students.id = grades.student_id;
其中,我们指定了两个表格,students 和 grades,并比较了两个表格中的对应字段(student_id 和 id)。由于我们使用的是 LEFT JOIN,因此输出结果保留了主要表格中所有的学生,同时也包括没有匹配记录的成绩数据。
总结
MySQL 数据库中,INNER JOIN 和 LEFT JOIN 连接表格的两种方法各有优缺点。
对于 INNER JOIN 来说,它只会输出两个表格中全部匹配的字段记录。因此,它比较适用于要对多个表格进行联合查询的情况。如果你的查询的返回结果涉及到了多个数据表格的内容,建议优先选择使用 INNER JOIN。
而对于 LEFT JOIN 来说,它则允许我们输出全部主表格信息,同时也可以输出次表格的信息。使用 LEFT JOIN 的一个重要场景是查找表格中具有对应信息的所有记录。在表格中使用了外键,且希望将包含该外键的主表格的所有信息输出时,LEFT JOIN 是一个很好的选择。
极客教程