📜  SQL中JOIN和UNION的区别(1)

📅  最后修改于: 2023-12-03 14:47:40.374000             🧑  作者: Mango

SQL中JOIN和UNION的区别

在SQL中,JOIN和UNION是两个重要的关键字,用于在不同表格中检索数据。虽然两者都可以帮助我们从多个表格中检索数据,但它们的工作方式和功能是不同的。

JOIN

JOIN是通过连接两个或多个表格中的列来检索数据的机制。它可以将不同表格中的数据关联在一起,并生成一个包含所有相关信息的结果集。JOIN操作可以分为以下几类:

  1. INNER JOIN INNER JOIN返回两个表格中共同符合特定条件的记录。意味着只会返回那些满足两个表中都具有相同值的行。

    SELECT *
    FROM table1
    INNER JOIN table2
    ON table1.column_name = table2.column_name;
    
  2. LEFT JOIN LEFT JOIN会返回左侧表格中所有记录以及与右侧表格中符合特定条件的记录。如果没有匹配项,右侧表格中的列会显示NULL值。

    SELECT *
    FROM table1
    LEFT JOIN table2
    ON table1.column_name = table2.column_name;
    
  3. RIGHT JOIN RIGHT JOIN与LEFT JOIN相反,它返回的是右侧表格中所有记录以及与左侧表格中符合特定条件的记录。如果没有匹配项,左侧表格中的列会显示NULL值。

    SELECT *
    FROM table1
    RIGHT JOIN table2
    ON table1.column_name = table2.column_name;
    
  4. FULL OUTER JOIN FULL OUTER JOIN 返回所有的记录,包括左侧表格和右侧表格中所有的行。如果连接条件不匹配,则会在缺失的行处填充NULL。

    SELECT *
    FROM table1
    FULL OUTER JOIN table2
    ON table1.column_name = table2.column_name;
    
UNION

UNION用于将两个或多个SELECT语句的结果集合并在一起,并返回一个不包含重复数据行的单一结果集。它需要两个或多个表格有相同的列和数据类型。UNION操作可以分为以下几类:

  1. UNION UNION操作返回两个或多个表格中的唯一记录。如果两个表格有相同的记录,则只返回一次。

    SELECT column_name(s) FROM table1
    UNION
    SELECT column_name(s) FROM table2;
    
  2. UNION ALL UNION ALL操作返回两个或多个表格中所有的记录,包括有重复的记录。

    SELECT column_name(s) FROM table1
    UNION ALL
    SELECT column_name(s) FROM table2;
    
总结

JOIN和UNION都是SQL中常用的关键字,用于检索多个表格中的数据。JOIN用于连接两个或多个表格中的列来检索数据,而UNION则用于合并两个或多个SELECT语句的结果集。JOIN和UNION操作的结果集不同,应根据实际需要进行选择。