数据表的连接有:
1、内连接(自然连接): 只有两个表相匹配的行才能在结果集中出现
2、外连接: 包括
(1)左外连接(左边的表不加限制)
(2)右外连接(右边的表不加限制)
(3)全外连接(左右两表都不加限制)
3、自连接(连接发生在一张基表内)
select a.studentno, a.studentname, b.classname
from students a, classes b
where a.classid(+) = b.classid;
STUDENTNO STUDENTNAM CLASSNAME
---------- ---------- ------------------------------
1 aa 一年级一班
2 bb 一年级二班
一年级三班
以上语句是右连接:
即"(+)"所在位置的另一侧为连接的方向,右连接说明等号右侧的所有记录均会被显示,无论其在左侧是否得到匹配。也就是说上例中,无论会不会出现某个班级没有一个学生的情况,这个班级的名字都会在查询结构中出现。
即"(+)"表示所在的列的值,如果没有匹配的值,则加入null值,并显示出来。.
//通常将全量集合与部分集合连接时,在部分集合的列后面带上(+),以达到没有匹配时,也要显示出一个null的效果。
反之:
select a.studentno, a.studentname, b.classname
from students a, classes b
where a.classid = b.classid(+);
STUDENTNO STUDENTNAM CLASSNAME
---------- ---------- ------------------------------
1 aa 一年级一班
2 bb 一年级二班
3 aa
则是左连接,无论这个学生有没有一个能在一个班级中得到匹配的部门号,这个学生的记录都会被显示。
select a.studentno, a.studentname, b.classname
from students a, classes b
where a.classid = b.classid;
这个则是通常用到的内连接,显示两表都符合条件的记录
总之,
左连接显示左边全部的和右边与左边相同的
右连接显示右边全部的和左边与右边相同的
内连接是只显示满足条件的!
例子:
select p.*,g.state from process_card_procedure p,group_task g where p.process_card_procedure_id=g.process_card_procedure_id(+) and p.process_card_id=431 and p.procedure_no not like '%C%' order by cast(p.procedure_no as int)
表示process_card_procedure表和group_task表的左连接。查询结果部分如下:
上表中的state字段是在group_task表中,连接过程中后面三条记录没有state字段,显示为null,如果不左连接:
select p.*,g.state from process_card_procedure p,group_task g where p.process_card_procedure_id=g.process_card_procedure_id and p.process_card_id=431 and p.procedure_no not like '%C%' order by cast(p.procedure_no as int)
查询结果如下:
相关推荐
右连接与左连接类似,但它返回右表中的所有记录,并将左表中的记录匹配到右表中。如果左表中没有匹配的记录,将以 null 值代替。 内连接(Inner Join) 内连接返回两个表中公共的记录,即两表中的交集。例如: ...
右连接与左连接相反,它返回右表的所有记录,即使在左表中没有匹配的记录。对于左表中没有匹配的右表记录,结果集将显示为NULL。右连接在你需要保留所有右表数据,同时获取与之关联的左表数据时很有用。以同样的员工...
### Oracle左连接与右连接详解 #### 一、概述 在数据库操作中,表与表之间的连接是非常重要的操作之一。连接操作可以将多个表的数据整合在一起,形成更完整的信息视图。根据不同的需求,Oracle提供了多种连接方式...
右连接与左连接相反,它返回右表的所有记录,以及与之匹配的左表记录。如果左表中没有匹配的记录,结果将显示右表记录和左表的NULL值。右连接在需要确保右表所有数据都被包含时非常有用。 SQL语法示例: ```sql ...
本文将详细介绍Oracle中的左连接(Left Join)、右连接(Right Join)、内连接(Inner Join)、全连接(Full Join)以及交叉连接(Cross Join)的方法,并通过示例来帮助理解每种连接的特点。 ### 一、左连接(Left...
本篇文章将详细讲解左连接、右连接和全连接的概念、区别和应用。 左连接(LEFT JOIN) 左连接也称为左外连接,用于从左侧表中检索记录,返回左侧表中的所有记录,并将右侧表中的匹配记录附加到左侧表中。如果右侧...
左连接和右连接的区别在于基准表的选择,左连接将左边的表作为基准表,全表数据都要显示,而右连接将右边的表作为基准表,全表数据都要显示。例如: `SELECT e.empno, e.ename, d.dname FROM emp e LEFT JOIN dept ...
"SQL语句.pdf"可能包含了更广泛的SQL语句类型,包括各种JOIN操作,如左连接、右连接、全连接和内连接,以及子查询、联接查询等。通过这些练习,你可以提升SQL编写能力,更好地处理复杂的数据关系。 "Oracle_01.pdf...
Oracle左连接返回多条记录中一条记录的查询语句,更具指定条件分组排序,返回各组中第一条记录
sql左连接,右连接,内连接,全连接详细讲解
右(外)连接与左(外)连接相反,它返回右表的所有记录,即使在左表中没有匹配项也会返回,对于左表中没有匹配的行,其字段将显示为NULL。 ```sql SELECT * FROM A RIGHT OUTER JOIN B ON A.id = B.id; ``` #### ...
本文将详细介绍Oracle中常见的几种表连接方式及其应用场景,包括内连接(Inner Join)、外连接(Outer Join)、左连接(Left Join)、右连接(Right Join)等,并通过具体的例子来帮助理解每种连接的特点与区别。...
右连接与左连接相反,它返回右表的所有记录及左表中匹配的记录。如果左表没有与右表相匹配的记录,则结果集中相应的列将显示为NULL。同样地,右连接可以通过`RIGHT JOIN`或`RIGHT OUTER JOIN`来实现。 示例中的另一...
oracle中左右连接left /right join 貌似不起作用,使用(+)代替。
右外连接与左外连接类似,但它返回的是右表的所有记录,即使在左表中没有匹配项也会返回。如果左表中没有匹配项,则结果集中的这些字段为NULL。 #### 示例 ```sql SELECT a.user_name, b.dev_no FROM user_info a ...
右外连接与左外连接相反,返回右表的所有记录,即使在左表中没有匹配的记录。左表中没有匹配项时,结果集中的相应列将填充为NULL。这在需要查看右边数据源完整信息时很有用。 语法示例: ```sql SELECT columns ...