Oralce中各种连接的使用
2006-06-23 15:12
295 查看
在这里说说最常用的几种连接的使用:内连接,外连接 ,左外连接,右外连接
以上几种连接一般用于多表之间复杂的查询,
下面先说说内连接,也即相等连接,如右两张表 dept ,employee,
dept里有字段deptid,deptname,employee有字段empno,deptid,ename,sal,age等
那连接查询语句如下:select A.* ,B.* from dept A,employee B where A.deptid=B.deptid
一般出现这种情况的是一张是主表,另一张是子表,主表的主键作为子表的外键,显示结果按照子表的显示, 内连接简单,这里就不多说了
外连接在oralce里用(+)表示,先看例子
select empno,ename,sal,emp.deptno,dept.deptno from emp,dept where emp.deptno(+) =dept.deptno
这是一个右连接
看下面的例子
select empno,ename,sal,emp.deptno,dept.deptno from emp,dept where dept.no=emp.deptno(+)
这是一个左连接
两个查询显示的查询结果是一样的,刚开始学oracle的时候很多人都很难明白这个,现在有个笨办法,
大家不防记下来,(+)出现查询条件的左边即右连接,出现在右边即左连接。(+)可以放在左边也可以
放在右边,但是一定要放在缺少条件的那一边,如上面的例子中,如果公司最近准备成立一个新的部门,
测试部门,但现在还没有招新员工,而现在Boss想知道公司有知道公司的员工在那个部门并且想知道
没有员工的部门,我们可以用上面的查询语句实现。
左外连接(left outer join)和右外连接(reght outer join)如同上面的外连接,查询的结果是一样的。
左外连接:select empno,ename,sal,emp.deptno,dept.deptno from dept left outer join emp on (emp.deptno=dept.deptno)
右外连接:select empno,ename,sal,emp.deptno,dept.deptno from emp reight outer join dept on (emp.deptno=dept.deptno)
以上显示的结果和外连接查询出来的结果是一样的 ,只是写法不一样而已,实际工作中外连接用的比较多,没有必要都要去用它,但是概念大家一定要了解。
全外关联 :FULL OUTER JOIN
SELECT e.last_name, e.department_id, d.department_name
FROM employees e
FULL OUTER JOIN departments d
ON (e.department_id = d.department_id);
结果为:所有员工及对应部门的记录,包括没有对应部门编号department_id的员工记录和没有任何员工的部门记录。
以上几种连接一般用于多表之间复杂的查询,
下面先说说内连接,也即相等连接,如右两张表 dept ,employee,
dept里有字段deptid,deptname,employee有字段empno,deptid,ename,sal,age等
那连接查询语句如下:select A.* ,B.* from dept A,employee B where A.deptid=B.deptid
一般出现这种情况的是一张是主表,另一张是子表,主表的主键作为子表的外键,显示结果按照子表的显示, 内连接简单,这里就不多说了
外连接在oralce里用(+)表示,先看例子
select empno,ename,sal,emp.deptno,dept.deptno from emp,dept where emp.deptno(+) =dept.deptno
这是一个右连接
看下面的例子
select empno,ename,sal,emp.deptno,dept.deptno from emp,dept where dept.no=emp.deptno(+)
这是一个左连接
两个查询显示的查询结果是一样的,刚开始学oracle的时候很多人都很难明白这个,现在有个笨办法,
大家不防记下来,(+)出现查询条件的左边即右连接,出现在右边即左连接。(+)可以放在左边也可以
放在右边,但是一定要放在缺少条件的那一边,如上面的例子中,如果公司最近准备成立一个新的部门,
测试部门,但现在还没有招新员工,而现在Boss想知道公司有知道公司的员工在那个部门并且想知道
没有员工的部门,我们可以用上面的查询语句实现。
左外连接(left outer join)和右外连接(reght outer join)如同上面的外连接,查询的结果是一样的。
左外连接:select empno,ename,sal,emp.deptno,dept.deptno from dept left outer join emp on (emp.deptno=dept.deptno)
右外连接:select empno,ename,sal,emp.deptno,dept.deptno from emp reight outer join dept on (emp.deptno=dept.deptno)
以上显示的结果和外连接查询出来的结果是一样的 ,只是写法不一样而已,实际工作中外连接用的比较多,没有必要都要去用它,但是概念大家一定要了解。
全外关联 :FULL OUTER JOIN
SELECT e.last_name, e.department_id, d.department_name
FROM employees e
FULL OUTER JOIN departments d
ON (e.department_id = d.department_id);
结果为:所有员工及对应部门的记录,包括没有对应部门编号department_id的员工记录和没有任何员工的部门记录。
相关文章推荐
- Oralce中各种连接的使用
- 各种数据库使用JDBC连接的方式
- .NET平台下使用C#连接各种数据库
- 使用PL/SQL连接别人数据库(Oralce)
- java连接各种数据库(Oralce,MySQL,SQLServer,DB2,Infomix,SyBase,PostgreSQL)方法
- 使用JDBC连接各种数据库
- 各种常用数据库使用JDBC连接的方式
- 在Visual Basic.NET使用ADO访问数据库(转for各种数据库连接)
- 【共享打印机遇到的各种问题】局域网内连接共享打印机—如何不用打印机路由,在多台电脑使用打印机
- 使用JDBC建立各种数据库的连接方式集萃
- 使用PL/SQL连接别人数据库(Oralce)
- 使用Java程序连接各种数据库的方法介绍
- 使用OLE DB连接各种类型的数据库的连接字符串
- 使用JDBC连接各种数据库
- java使用jdbc连接各种数据库
- JDBC连接数据库速查(Oracle8/8i/9i,DB2,MySQL各种数据库使用JDBC连接的方式)
- 使用Java程序连接各种数据库的方法
- [Sqlite]-->Java使用jdbc连接Sqlite数据库进行各种数据操作的详细过程
- 各种连接的使用示例
- 使用VB.NET时的几种数据提供者连接各种数据库