MySQL之连接

时间:2020-05-17
本文章向大家介绍MySQL之连接,主要包括MySQL之连接使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

一、UNION连接

MySQL UNION 操作符用于连接两个以上的 SELECT 语句的结果组合到一个结果集合中。多个 SELECT 语句会删除重复的数据。

语法:

SELECT expression1, expression2, ... expression_n
FROM tables
[WHERE conditions]
UNION [ALL | DISTINCT]
SELECT expression1, expression2, ... expression_n
FROM tables
[WHERE conditions];
  • expression1, expression2, ... expression_n: 要检索的列。

  • tables: 要检索的数据表。

  • WHERE conditions: 可选, 检索条件。

  • DISTINCT: 可选,删除结果集中重复的数据。默认情况下 UNION 操作符已经删除了重复数据,所以 DISTINCT 修饰符对结果没啥影响。

  • ALL: 可选,返回所有结果集,包含重复数据。

示例:

SELECT name FROM man
UNION ALL
SELECT name FROM woman
ORDER BY name;

下面的 SQL 语句使用 UNION ALL 从 "man" 和 "woman" 表中选取所有的name。

二、JOIN内连接

JOIN(INNER JOIN)称作内连接,或等值连接:获取两个表中字段匹配关系的记录。

示例:

SELECT a.name,  b.city FROM student a JOIN people b ON a.name= b.name;

内连接相当于数学里面的交集。

三、LEFT JOIN左连接

left join 与 join 有所不同。

LEFT JOIN称作左连接:获取左表所有记录,即使右表没有对应匹配的记录。

示例:

SELECT a.runoob_id, a.runoob_author, b.runoob_count FROM runoob_tbl a LEFT JOIN tcount_tbl b ON a.runoob_author = b.runoob_author;

以上实例中使用了 LEFT JOIN,该语句会读取左边的数据表 runoob_tbl 的所有选取的字段数据,即便在右侧表 tcount_tbl中 没有对应的 runoob_author 字段值。

四、RIGHT JOIN右连接

RIGHT JOIN称作右连接: 与 LEFT JOIN 相反,用于获取右表所有记录,即使左表没有对应匹配的记录。

示例:

SELECT a.runoob_id, a.runoob_author, b.runoob_count FROM runoob_tbl a RIGHT JOIN tcount_tbl b ON a.runoob_author = b.runoob_author;

以上实例中使用了 RIGHT JOIN,该语句会读取右边的数据表 tcount_tbl 的所有选取的字段数据,即便在左侧表 runoob_tbl 中没有对应的runoob_author 字段值。

注意:左连接和右连接只是主表不同,要明确主表是谁,在什么位置。若主表在左侧则使用左连接,反之则使用右连接。

原文地址:https://www.cnblogs.com/lavender1221/p/12903991.html