外连接分为左外连接、右外连接、全外连接。对应sql语句是:table 1 left/right/full outer join table2,通常我们省略outer。
利用一个例子说明数据库的外连接问题:
首先建2张表,outj1和outj2,分别只有2个字段:
create table outj1(
o1_id varchar2(4),
o1_name varchar2(10)
)
create table outj2(
o2_id varchar2(4),
o2_name varchar2(10)
)
向2个表里插入一些数据:
insert into outj2 values('3','另一个3')
select * from outj1
select * from outj2
outj1的数据为:
outj2的数据为:
outj1为左表,outj2为右表:
----左外连接(outj1为左表,outj2为右表)
select * from outj1 left outer join outj2 on outj1.o1_id=outj2.o2_id --注意这里是用on关键字
select * from outj1,outj2 where outj1.o1_id = outj2.o2_id(+); --注意这里是用where关键字,+位置
左外连接结果: 左表的所有行记录都显示,右表中id(条件)相同的元组显示,不匹配的为null
----右外连接
select * from outj1 right outer join outj2 on outj1.o1_id=outj2.o2_id
select * from outj1,outj2 where outj1.o1_id(+) = outj2.o2_id;
右外连接结果:右表的所有行记录都显示,左表中id(条件)相同的元组显示,不匹配的为null
----全外连接
select * from outj1 full outer join outj2 on outj1.o1_id=outj2.o2_id
select * from outj1,outj2 where outj1.o1_id(+) = outj2.o2_id(+); --错误的写法
全外连接结果:左右两表的所有元组都显示,相同id(条件)的在一行上,不同id(条件)单独显示,不匹配的为null
(+)的用法:
1.(+)操作符只能出现在where子句中,并且不能与outer join语法同时使用。
2. 当使用(+)操作符执行外连接时,如果在where子句中包含多个条件,必须在所有条件中包含(+)操作符
3.(+)操作符只适用于列,而不能用在表达式上。
4.(+)操作符不能与or和in操作符一起使用。
5.(+)操作符只能用于实现左外连接和右外连接,而不能用于实现完全外连接。
内连接:
----内连接,使用inner join 关键字
select * from outj1 inner join outj2 on outj1.o1_id=outj2.o2_id
查询结果:相同的属性值才显示
- 大小: 8.9 KB
- 大小: 10 KB
- 大小: 16.9 KB
- 大小: 13.8 KB
- 大小: 19.1 KB
- 大小: 11.7 KB
分享到:
相关推荐
2. 左外连接(Left Outer Join):包含左边表的全部行(不管右边的表中是否存在与它们匹配的行),以及右边表中全部匹配的行。 3. 右外连接(Right Outer Join):包含右边表的全部行(不管左边的表中是否存在与它们...
本篇文章将深入探讨四种基本的JOIN类型:LEFT JOIN(左连接)、RIGHT JOIN(右连接)、INNER JOIN(内连接)以及OUTER JOIN(外连接)。我们将详细解释这些概念,它们的工作原理以及在实际数据库操作中的应用。 1. ...
- **Outer Join**(外部连接)可以分为 Left Outer Join、Right Outer Join 和 Full Outer Join。 - 这种类型的连接不仅返回满足连接条件的行,还返回一个表中所有行(对于 Left 或 Right)或两个表中所有行(对于 ...
数据库管理与应用 5.3.2使用外连接(OUTER JOIN)进行多表查询.pdf 学习资料 复习资料 教学资源
#### 左外连接(LEFT JOIN 或 LEFT OUTER JOIN) **定义与特点:** - **定义:** 左外连接返回左表(第一个表)中的所有记录,以及右表(第二个表)中匹配的记录。如果右表中没有匹配,则返回NULL。 - **特点:** ...
在这个主题中,我们将深入探讨INNER JOIN和OUTER JOIN,它们是JOIN的两种主要类型。 首先,我们来看INNER JOIN。INNER JOIN返回两个表中匹配的行。这意味着只有当第一个表中的某行与第二个表中的另一行在指定的关联...
左外连接使用 LEFT JOIN 或 LEFT OUTER JOIN 关键字来指定。 例如,在 authors 表和 publishers 表中,使用左外连接可以检索所有作者的信息,并显示他们所在的城市。 ```sql SELECT a.au_fname, a.au_lname, p.pub...
根据不同的连接方式,`JOIN`可以分为几种类型,包括`INNER JOIN`、`OUTER JOIN`(左外联接`LEFT JOIN`、右外联接`RIGHT JOIN`以及全外联接`FULL JOIN`)和`CROSS JOIN`。每种类型的`JOIN`都有其独特的应用场景和特点。...
外连接分为三种类型:左外连接(Left Outer Join)、右外连接(Right Outer Join)和全外连接(Full Outer Join)。本篇文章将深入探讨这三种外连接的概念、语法以及它们在实际应用中的作用。 1. 左外连接(Left ...
外连接分三类:左外连接(Left Outer Join)、右外连接(Right Outer Join)和全外连接(Full Outer Join)。 外连接的共同点是都返回符合连接条件和查询条件的数据行。不同点是: 左外连接还返回左表中不符合连接...
外连接分为三种类型:左外连接(LEFT OUTER JOIN)、右外连接(RIGHT OUTER JOIN)和全外连接(FULL OUTER JOIN)。 **语法**: - **左外连接**: ```sql SELECT column_name(s) FROM table1 LEFT OUTER JOIN ...
外连接分为LEFT JOIN(左外连接)、RIGHT JOIN(右外连接)和FULL OUTER JOIN(全外连接)。它们会返回所有满足连接条件的记录,以及其中一个表中的所有不满足条件的记录。如果某条记录在另一个表中没有匹配项,...
内连接操作的结果只输出两个...外连接分为左外连接(Left Outer Join)和右外连接(Right Outer Join)和完全外连接(Full Outer Join)。SQL标准规定外连接必须使用OUTER JOIN关键字,不存在类似于旧式内连接的语法。
左连接(LEFT JOIN 或 LEFT OUTER JOIN) 左连接返回左表中的所有记录,即使在右表中没有匹配的记录也会返回左表中的记录,并在右表对应的字段填充 NULL 值。例如,在投票系统中,如果使用左连接以投票主表为准,...
- **右外连接(Right Outer Join)**:与左外连接相反,优先显示右侧表的所有记录,左侧表中未找到匹配项时显示为`NULL`。 - 示例代码: ```sql SELECT t.*, s.* FROM teacher t RIGHT JOIN student s ON t.id ...
左外连接返回左表(在`LEFT JOIN`或`LEFT OUTER JOIN`之后指定的表)的所有行,即使在右表中没有匹配的行。对于右表中没有匹配的行,结果集中相应列的值将为NULL。例如,如果在`authors`和`publishers`表中,`LEFT ...
- **左外连接(LEFT OUTER JOIN 或 LEFT JOIN)**: 左外连接返回左表(在这里是`table1`)的所有行,即使在右表(`table2`)中没有匹配的行。对于右表中没有匹配的左表行,结果将显示为NULL。 - **右外连接...
文章目录SQL 连接(JOIN)不同的 SQL JOINSQL INNER JOIN 关键字SQL LEFT JOIN 关键字SQL RIGHT JOIN 关键字SQL FULL OUTER JOIN 关键字 SQL 连接(JOIN) SQL join 用于把来自两个或多个表的行结合起来。 下图展示了 ...
右外连接(RIGHT OUTER JOIN)则是以右表为基础进行操作,与左外连接类似,但方向相反。`SELECT * FROM t1 RIGHT JOIN t2 ON t1.id = t2.id` 会返回所有右表 t2 的记录,以及与左表 t1 匹配的记录。在这个例子中,t2...