推荐答案
MySQL 的 JOIN 操作主要有以下几种类型:
- INNER JOIN:返回两个表中满足连接条件的记录。
- LEFT JOIN(或 LEFT OUTER JOIN):返回左表中的所有记录,即使右表中没有匹配的记录。
- RIGHT JOIN(或 RIGHT OUTER JOIN):返回右表中的所有记录,即使左表中没有匹配的记录。
- FULL JOIN(或 FULL OUTER JOIN):返回左右表中的所有记录,即使没有匹配的记录。
- CROSS JOIN:返回两个表的笛卡尔积,即所有可能的组合。
- SELF JOIN:表与自身进行连接,通常用于处理层次结构或递归关系。
本题详细解读
INNER JOIN
INNER JOIN 是最常用的连接类型,它只返回两个表中满足连接条件的记录。如果左表中的某条记录在右表中没有匹配的记录,那么这条记录不会出现在结果集中。
SELECT columns FROM table1 INNER JOIN table2 ON table1.column = table2.column;
LEFT JOIN
LEFT JOIN 返回左表中的所有记录,即使右表中没有匹配的记录。如果右表中没有匹配的记录,结果集中右表的列将包含 NULL。
SELECT columns FROM table1 LEFT JOIN table2 ON table1.column = table2.column;
RIGHT JOIN
RIGHT JOIN 与 LEFT JOIN 类似,但它返回右表中的所有记录,即使左表中没有匹配的记录。如果左表中没有匹配的记录,结果集中左表的列将包含 NULL。
SELECT columns FROM table1 RIGHT JOIN table2 ON table1.column = table2.column;
FULL JOIN
FULL JOIN 返回左右表中的所有记录,即使没有匹配的记录。如果某一边没有匹配的记录,结果集中对应的列将包含 NULL。需要注意的是,MySQL 本身不支持 FULL JOIN,但可以通过 UNION 操作来模拟。
// www.javascriptcn.com code example SELECT columns FROM table1 LEFT JOIN table2 ON table1.column = table2.column UNION SELECT columns FROM table1 RIGHT JOIN table2 ON table1.column = table2.column;
CROSS JOIN
CROSS JOIN 返回两个表的笛卡尔积,即左表中的每一行与右表中的每一行进行组合。结果集的行数等于左表的行数乘以右表的行数。
SELECT columns FROM table1 CROSS JOIN table2;
SELF JOIN
SELF JOIN 是表与自身进行连接的操作,通常用于处理层次结构或递归关系。例如,可以用来查找员工的上级。
SELECT e1.employee_name, e2.employee_name AS manager_name FROM employees e1 INNER JOIN employees e2 ON e1.manager_id = e2.employee_id;