`

sql之left join、right join、inner join full join,union,union all的区别

 
阅读更多
left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录
right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录
inner join(等值连接) 只返回两个表中联结字段相等的行
full join 返回两张表中的行 left join+right join
UNION在进行表链接后会筛选掉重复的记录
UNION ALL操作只是简单的将两个结果合并后就返回

create table test(
sid number primary key not null,
sname varchar2(200),
scode varchar2(200)
);
commit;

create table test_bak(
sid number primary key not null,
sname varchar2(200),
scode varchar2(200)
);
commit;

BEGIN
  FOR I IN 1 .. 4 LOOP
    INSERT INTO test VALUES (I,'jason','1000'+i);
  END LOOP;
END;

BEGIN
  FOR I IN 3 .. 5 LOOP
    INSERT INTO test_bak VALUES (I,'jason','1000'+i);
  END LOOP;
END;

select * from test;
sid sname scode
1 1 jason 1001
2 2 jason 1002
3 3 jason 1003
4 4 jason 1004
select * from test_bak;
sid sname scode
1 3 jason 1003
2 4 jason 1004
3 5 jason 1005
select * from test union    select * from test_bak;--UNION在进行表链接后会筛选掉重复的记录
sid sname scode
1 1 jason 1001
2 2 jason 1002
3 3 jason 1003
4 4 jason 1004
5 5 jason 1005

select * from test union  all  select * from test_bak;--UNION ALL操作只是简单的将两个结果合并后就返回
sid sname scode
1 1 jason 1001
2 2 jason 1002
3 3 jason 1003
4 4 jason 1004
5 3 jason 1003
6 4 jason 1004
7 5 jason 1005

select test.*,test_bak.* from test  inner join test_bak on test.sid = test_bak.sid  ;--只返回两个表中联结字段相等的行
1 3 jason 1003 3 jason 1003
2 4 jason 1004 4 jason 1004

select test.*,test_bak.* from test left join test_bak on test.sid = test_bak.sid  ;--返回包括左表中的所有记录和右表中联结字段相等的记录
1 1 jason 1001 null null null
2 2 jason 1002 null null null
3 3 jason 1003 3 jason 1003
4 4 jason 1004 4 jason 1004

select test.*,test_bak.* from test right join test_bak on test.sid = test_bak.sid  ;--返回包括右表中的所有记录和左表中联结字段相等的记录

1 3 jason 1003 3 jason 1003
2 4 jason 1004 4 jason 1004
3 null null null 5 jason 1005

select test.*,test_bak.* from test full join test_bak on test.sid = test_bak.sid  ;--返回左右两表中的所有记录,相同的记录会同行显示

1 1 jason 1001 null null null
2 2 jason 1002 null null null
3 3 jason 1003 3 jason 1003
4 4 jason 1004 4 jason 1004
5 null null null 5 jason 1005
分享到:
评论

相关推荐

    MySQL JOIN 语法说明与 INNER JOIN 语法用法实例.docx

    6. MySQL 没有提供 SQL 标准中的 FULL JOIN(全连接),可以使用 UNION 关键字来合并 LEFT JOIN 与 RIGHT JOIN,达到模拟 FULL JOIN 的目的。 7. CROSS JOIN 是一种特殊的 JOIN 类型,在不指定 ON 条件下,CROSS ...

    SQL 语法 SQL 总结 SQL教程

    SQL Inner Join SQL Left Join SQL Right Join SQL Full Join SQL Union SQL Select Into SQL Create DB SQL Create Table SQL Constraints SQL Not Null SQL Unique SQL Primary Key SQL Foreign Key ...

    PL/SQL Join实例分析

    在PL/SQL中,全连接可以通过UNION操作结合左连接和右连接来实现,但请注意,这并不完全等同于直接使用FULL OUTER JOIN,因为顺序可能影响结果列的标题。 示例: ``` SELECT * FROM a Aa FULL OUTER JOIN b Bb ON...

    SQL中JOIN和UNION区别、用法及示例介绍

    在SQL中,JOIN和UNION是两种非常重要的操作,它们用于处理多个表的数据结合,但它们的作用和原理有所不同。 JOIN操作主要用于将两个或更多表的数据根据特定条件进行合并。JOIN有四种基本类型: 1. INNER JOIN(内...

    Which SQL statement is the trump card to the senior software developer

    在SQL的世界里,众多的数据操作语言(DML)语句中,有四种是数据库开发者必须掌握的:CASE WHEN、LEFT JOIN/LEFT OUTER JOIN、RIGHT JOIN/RIGHT OUTER JOIN、INNER JOIN以及WITH AS和UNION/UNION ALL。这些语句对于...

    MySQL中union和join语句使用区别的辨析教程

    `JOIN`可以是INNER JOIN(只返回两个表中匹配的行)、LEFT JOIN(返回左表的所有行,即使在右表中没有匹配项,右表的缺失值用NULL填充)、RIGHT JOIN(反之)或FULL OUTER JOIN(返回所有匹配和不匹配的行)。`JOIN`...

    MySQL JOIN之完全用法

    首先,JOIN操作主要分为三类:内联接(INNER JOIN)、外联接(OUTER JOIN)以及全外联接(FULL OUTER JOIN)。 1. **内联接(INNER JOIN)**:内联接返回的是两个表中匹配的行。如果某个表的某行在另一个表中找不到匹配的行...

    SQL语句生成及分析器

    内连接(inner join)和外连接(left join/right join/full join) 排序(Order By) 条件(Where) 分组(Group By) 分组条件(Having) 计算字段 SQL查询表 SQL查询子句 丰富的函数 表别名 字段别名 联合(Union...

    Join on 连接

    MySQL不直接支持`FULL OUTER JOIN`,但可以通过结合`UNION ALL`和`LEFT JOIN`或`RIGHT JOIN`来实现。例如: ``` SELECT A.*, B.* FROM A FULL OUTER JOIN B ON A.ID = B.ID ``` 在MySQL中,这可能需要写成: ``...

    MySQL: Data Join

    在MySQL中,主要有四种类型的联接:内联接(INNER JOIN)、左联接(LEFT JOIN)、右联接(RIGHT JOIN)和全联接(FULL JOIN)。这些联接方式依据它们如何处理不同表之间的匹配记录而有所不同。 1. **内联接(INNER ...

    Task04:集合运算 - 表的加减法和 join 等.pdf

    常见的 Join 运算包括 INNER JOIN、LEFT JOIN、RIGHT JOIN 和 FULL OUTER JOIN。 INNER JOIN 运算是指将两个表中的数据结合起来,以获得一个新的结果集。例如: ```sql SELECT product_id, product_name, sale_...

    sql语句技巧小demo

    - **注意:** MySQL 不支持 FULL JOIN,可以通过 `LEFT JOIN UNION ALL RIGHT JOIN` 实现类似效果。 - **实现示例:** ```sql SELECT column_name(s) FROM table1 LEFT JOIN table2 ON table1.column_name = ...

    SQL查询语句使用简要(很经典)

    主要有四种类型的连接:INNER JOIN(内连接)、LEFT JOIN(左连接)、RIGHT JOIN(右连接)和FULL JOIN(全连接)。 1. INNER JOIN:返回两个表中匹配的行:`SELECT column_name FROM table1 INNER JOIN table2 ON ...

    万里长城第一步-先来学好数据库之MySQL上.docx

    在这个学习资源中,我们将学习七种基本的Join查询类型:inner join、left join、right join、full join、left outer join、right outer join和cross join。 3. 创建表: 在学习Join查询之前,我们需要了解如何创建...

    SQL语句生成及分析器(中文绿色)

    3.7.1 SQL 92 标准:Inner Join、Left Join、Right Join、Full Join, 3.7.2 特殊语法:*=、=*、*=*(MS_SQL,Sybase),(+)(Oracle) 3.8 联合 (Union [All],Minus,Intersect) 3.9 字段别名,数据表别名 ...

    SQL代码 sql练习

    可能还有JOIN操作,用于合并多个表的数据,如INNER JOIN、LEFT JOIN、RIGHT JOIN和FULL OUTER JOIN。此外,可能还涉及了聚合函数,如COUNT、SUM、AVG、MIN和MAX,用于计算总数、总和、平均值、最小值和最大值。 而...

    sqlserver语法大全

    包括 INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL OUTER JOIN 等连接方式。例如,使用 LEFT JOIN 连接两个表: ```sql SELECT a.col1, a.col2, b.col3, b.col4 FROM mytab a LEFT JOIN yourtab b ON a.col1 = b.col1; ...

    SQL之SELECT FROM

    - `UNION ALL`(19):用于组合两个查询的结果集,包括所有匹配和不匹配的行,这里展示了如何用LEFT JOIN和UNION ALL模拟一个FULL OUTER JOIN。 这些基本的SQL查询语句构成了数据库操作的基础,熟练掌握它们对于...

Global site tag (gtag.js) - Google Analytics