Oracle左右全连接总结
--建立测试数据
create table a(id number);
create table b(id number);
insert into a values(1);
insert into a values(2);
insert into a values(3);
insert into b values(1);
insert into b values(2);
insert into b values(4);
commit;
--左:
--主流数据库通用的方法
select * from a left join b on a.id=b.id;
--Oracle特有的方法
select * from a, b where a.id=b.id(+);
ID ID
---------- ----------
1 1
2 2
3
--右:
--主流数据库通用的方法
select * from a right join b on a.id=b.id;
--Oracle特有的方法
select * from a, b where a.id(+)=b.id;
ID ID
---------- ----------
1 1
2 2
4
--内
--主流数据库通用的方法
select * from a join b on a.id=b.id;
--where关联
select * from a, b where a.id=b.id;
ID ID
---------- ----------
1 1
2 2
--全外
--主流数据库通用的方法
select * from a full join b on a.id=b.id;
--Oracle特有的方法
select *
from a, b
where a.id = b.id(+)
union
select *
from a, b
where a.id(+) = b.id;
ID ID
---------- ----------
1 1
2 2
3
4
--完全,也叫交叉连接或者笛卡尔积
--主流数据库通用的方法
select * from a,b;
--或者
select * from a cross join b;
ID ID
---------- ----------
1 1
1 2
1 4
2 1
2 2
2 4
3 1
3 2
3 4
连接无非是这几个
--内连接和where相同
inner join
--左向外连接,返回左边表所有符合条件的
left join
--右向外连接,返回右边表所有符合条件的
right join
--完整外部连接,左向外连接和右向外连接的合集
full join
--交叉连接,也称笛卡儿积。返回左表中的每一行与右表中所有行的组合
cross join
--补充:
--左向外连接,返回左边表所有符合条件的,
--注意这里没有第二个加号,会直接过滤掉数据,只显示符合条件的记录
select *
from a, b
where a.id = b.id(+)
and b.id = 2;
ID ID
---------- ----------
2 2
--左向外连接,返回左边表所有符合条件的
--注意where上第二个加号,它的作用是修改右边表记录的显示,例如如果b.id(+) = 2,显示为2,否则显示null
select *
from a, b
where a.id = b.id(+)
and b.id(+) = 2;
ID ID
---------- ----------
2 2
3
1
==================转自 http://www.iteye.com/topic/462119================
分享到:
相关推荐
全连接是指左右连接的全部表示,根据连接条件在任意一方表中出现无法匹配的情况,不满足条件的部分均用空值代替。例如: `SELECT e.empno, e.ename, d.dname FROM emp e FULL JOIN dept d ON e.deptno = d.deptno;`...
本文将详细介绍Oracle中的左连接(Left Join)、右连接(Right Join)、内连接(Inner Join)、全连接(Full Join)以及交叉连接(Cross Join)的方法,并通过示例来帮助理解每种连接的特点。 ### 一、左连接(Left...
这在需要查看所有可能的组合,而不仅仅是匹配项时很有用,但并不是所有数据库系统都支持全外连接。 ```sql SELECT Employees.*, Departments.* FROM Employees FULL OUTER JOIN Departments ON Employees....
- `FULL OUTER JOIN`: 全外联合,返回两个表的所有行。 - `SELF JOIN`: 自身联合,即表与自身进行联合操作。 ##### 第六天:子查询 - **目标**:掌握子查询的概念及其应用场景。 - **内容概述**: - 子查询可以...
7. 全外连接(full outer join):包含内连接的所有元组,以及左右关系中所有不匹配的元组,缺失部分都用NULL填充。 8. 交叉连接(cross join):两个关系的笛卡尔积,即每个左关系的元组与右关系的每个元组组合。 9...
总结来说,理解数据库的基本原理,如关系型与非关系型的区别、MySQL语句的执行流程、索引的使用与优化,对于优化数据库性能和设计高效的数据存储方案至关重要。正确地利用这些知识,能够帮助我们构建更稳定、高效的...
4. **全连接(Full Join)**:全连接会返回左表和右表的所有记录,无论是否匹配。 #### 三、示例分析 假设我们有两个表`a`和`b`: - 表`a`包含字段`id`和`name`。 - 表`b`包含字段`id`、`bid`和`job`。 表`a`的...
- **全外连接(FULL JOIN)**:返回左右两表的所有记录,如果某条记录在另一表中没有匹配项,则相应位置填充NULL。 3. **存储过程**: - **概念**:存储过程是一组预先编译的SQL语句,可以作为一个单元执行,提供...
- 查询优化:避免全表扫描,使用合适的连接类型,减少子查询,优化WHERE子句。 9. 触发器和存储函数: - 触发器:在特定事件(如INSERT、UPDATE、DELETE)发生时自动执行的SQL代码。 - 存储函数:用户自定义的...
11.2.5 三大表连接的特性总结 317 11.3 从案例学表连接优化要点 (三刀三斧四式走天下) 317 11.3.1 一次Nested Loops Join的优化全过程 318 11.3.2 一次Hash Join 的 优化全过程 320 11.3.3 一次 Merge Sort ...
总结一下,CI框架提供了一个易于使用的接口来进行数据库join操作,包括不同类型的join,以及处理多表连接。理解这些概念和用法对于有效利用CI框架进行数据查询至关重要。同时,确保对SQL的最佳实践有一定了解,比如...
3. **max_connections**:定义了数据库的最大并发连接数,根据应用的并发需求调整。过高可能导致资源过度消耗,过低可能无法满足业务需求。 4. **max_user_connections**:限制单个用户可以建立的最大连接数,防止...
"源码及资源在中有网盘链接,1个G左右"提示我们,除了源代码外,可能还包括数据库脚本、静态资源、依赖库等其他项目所需文件。 【标签解析】 "实习报告"标签明确了这个项目是一个实习生完成的,可能会包含对于初学...
- FULL OUTER JOIN(全连接):返回左右两表的所有记录,如果某一方没有匹配的记录,则结果为NULL。 掌握这些基本的SQL语句和操作,能帮助我们有效地管理和操作SQL Server数据库,实现数据的存储、检索、更新和安全...
11.2.5 三大表连接的特性总结 317 11.3 从案例学表连接优化要点 (三刀三斧四式走天下) 317 11.3.1 一次Nested Loops Join的优化全过程 318 11.3.2 一次Hash Join 的 优化全过程 320 11.3.3 一次 Merge Sort ...
全连接则会返回所有左右两表的记录,无论是否有匹配,没有匹配的部分在结果集中都将用NULL填充。 自连接则是将一个表与自身进行连接,通常用于处理具有层级关系的数据,比如员工的上下级关系或类别之间的父子关系。...
全外连接会同时保留左右表中的所有记录,即使左右表之间没有匹配的记录也会被包含进来。 **示例代码**: ```sql SELECT * FROM EMP FULL OUTER JOIN DEPT ON EMP.DEPTNO = DEPT.DEPTNO; ``` **示例解析**: 此SQL...
此外,MySQL并不支持全连接(FULL JOIN),这在其他数据库系统中可以用于返回左右两边表的所有记录,无论是否存在匹配项。 总结一下,左连接、右连接和内连接是MySQL中处理多表数据融合的重要手段。左连接以左表为...