表的连接是指在一个SQL语句中通过表与表之间的关连,从一个或多个表中检索相关的数据,大体上表与表之间的连接主要可分四种,分别为相等连接,外连接,不等连接和自连接,本文将主要从以下几个典型的例子来分析Oracle表的四种不同连接方式:
1.相等连接
通过两个表具有相同意义的列,可以建立相等连接条件。
只有连接列上在两个表中都出现且值相等的行才会出现在查询结果中。
例查询员工信息以及对应的员工所在的部门信息;
SELECT * FROM EMP,DEPT;
SELECT * FROMEMP,DEPT
WHERE EMP.DEPTNO = DEPT.DEPTNO;
REM显示工资超过2000的员工信息以及对应的员工的部门名称。
2.外连接
对于外连接,Oracle中可以使用“(+)”来表示,9i可以使用LEFT/RIGHT/FULL OUTERJOIN,下面将配合实例一一介绍。除了显示匹配相等连接条件的信息之外,还显示无法匹配相等连接条件的某个表的信息。
外连接采用(+)来识别。
A)左条件(+) =右条件;
代表除了显示匹配相等连接条件的信息之外,还显示右条件所在的表中无法匹配相等连接条件的信息。
此时也称为"右外连接".另一种表示方法是:
SELECT... FROM 表1 RIGHT OUTER JOIN 表2 ON 连接条件
B) 左条件 =右条件(+);
代表除了显示匹配相等连接条件的信息之外,还显示左条件所在的表中无法匹配相等连接条件的信息。
此时也称为"左外连接".
SELECT... FROM 表1 LEFT OUTER JOIN 表2 ON 连接条件
例显示员工信息以及所对应的部门信息
--无法显示没有部门的员工信息
--无法显示没有员工的部门信息
--SELECT *FROM EMP,DEPT WHERE EMP.DEPTNO =DEPT.DEPTNO;
--直接做相等连接:
SELECT * FROM EMP JOIN DEPT ONEMP.DEPTNO = DEPT.DEPTNO;
REM显示员工信息以及所对应的部门信息,显示没有员工的部门信息
--SELECT * FROM EMP,DEPT WHEREEMP.DEPTNO(+) = DEPT.DEPTNO;
SELECT * FROM EMP RIGHT OUTER JOIN DEPT ONEMP.DEPTNO = DEPT.DEPTNO;
REM显示员工信息以及所对应的部门信息,显示没有部门的员工信息
--SELECT * FROM EMP,DEPT WHERE EMP.DEPTNO= DEPT.DEPTNO(+);
SELECT * FROM EMP LEFT OUTER JOIN DEPT ON EMP.DEPTNO =DEPT.DEPTNO;
3.不等连接
两个表中的相关的两列进行不等连接,比较符号一般为>,<,...,BETWEEN.. AND..
REMSALGRADE
--DESC SALGRADE;
--SELECT * FROM SALGRADE;
REM显示员工的编号,姓名,工资,以及工资所对应的级别。
SELECT EMPNO,ENAME,SAL,SALGRADE.* FROMSALGRADE,EMP
WHERE EMP.SAL BETWEEN LOSAL AND HISAL;
REM显示雇员的编号,姓名,工资,工资级别,所在部门的名称;
SELECT EMPNO,ENAME,SAL,GRADE,DNAME FROMEMP,DEPT,SALGRADE
WHERE EMP.DEPTNO = DEPT.DEPTNO AND EMP.SAL BETWEEN LOSALAND HISAL;
4.自连接
自连接是数据库中经常要用的连接方式,使用自连接可以将自身表的一个镜像当作另一个表来对待,从而能够得到一些特殊的数据。下面介绍一下自连接的方法:
将原表复制一份作为另一个表,两表做笛卡儿相等连接。
例显示雇员的编号,名称,以及该雇员的经理名称
SELECTWORKER.ENAME,WORKER.MGR,MANAGER.EMPNO,MANAGER.ENAME FROM EMP WORKER,EMPMANAGER
WHERE WORKER.MGR = MANAGER.EMPNO;来源:考试大网来
分享到:
相关推荐
一步一步讲解my eclipse数据库
ADO连接oracle数据库 的dll ,c++,详细讲解请到博客 http://blog.csdn.net/wangchao712217?ref=toolbar
讲解了oracle中数据库表的各种连接方式,不懂的朋友可以参考一下。或许对你有帮助。
上述两种方法都存在一定的缺点,本文介绍一种Oracle提供的解决oracle数据库与异种数据源的连接问题的解决方案—Oracle的异构服务(Heterogeneous Services)。并就异构服务作了详细的讲解,给了一个连接的实例。
《构建最高可用Oracle数据库系统:Oracle 11gR2 RAC管理、维护与性能优化》从硬件和软件两个维度系统且全面地讲解了Oracle 11g R2 RAC的架构、工作原理、管理及维护的系统理论和方法,以及性能优化的技巧和最佳实践...
数据库实战精讲本套Java视频中讲解了Oracle数据库基础、搭建Oracle数据库环境、SQL*Plus命令行工具的使用、标准SQL、Oracle数据核心-表空间、Oracle数据库常用对象,数据库性能优化,数据的导出与导入,索引,视图,...
文档详细讲解windows Server2008 64位PHP如何连接Oracle数据库
其中包涵源代码及视频讲解,还有pdf文档说明。
要连接到Oracle数据库,用户必须安装 Ruby/Oracle 调用接口 (OCI8) 库——一个基于 Ruby/DBI (数据库接口模块)的数据库驱动程序。RubyDBI 提供了一个与数据库无关的、类似于 JDBC 或 ODBC 的接口,来实现 Ruby 和...
学习ORACLE时的一些资料,分享给大家,共勉! 上一篇文章讲解了深入了解单表执行计划,单表执行计划是理解多表执行计划的基础,文章中主要讲解嵌套循环连接。
本书讲解了基于Oracle数据库的JSP动态网站开发技术,在介绍了JSP动态网站开发与Oracle数据库的基础知识后,以4个实际应用网站为例,详细讲述了JSP结合JavaBean和Servlet开发动态网站的过程。为了适应网站开发的...
本资源详细讲解了PowerDesigner利用逆向工程的方法,将Oracle数据库表结构反转到PowerDesigner里面,生成物理模型。 包含了从PowerDesigner连接数据库开始讲起,一直到表格逆向工程完成。里面在各个关键环节配置截图...
2.本编译生产的脱平台SDK,支持生产环境无需再次安装Oracle客户端及一切产品——可通过配置本地化ini(db.ini)文件、或代码中实现目标数据库链路。 3.本运行库(SDK)内的文件除testOracle测试demo外,其他文件及...
主要介绍了JavaScript中连接操作Oracle数据库实例,本文讲解了运行环境、代码实例、运行结果等一系列完整步骤,需要的朋友可以参考下
手把手视频详细讲解项目开发全过程,需要的小伙伴自行百度网盘下载,链接见附件,永久有效。...(7)能够使用JDBC连接Oracle数据库并完成数据的新增、修改、删除操作 (8)能够完成Oracle数据库的备份和还原操作
屏蔽了1521端口 Oracle远程连接数据库总结 注:本文讲述了oracle数据库实例连接的配置过程,三个重要的配置文件位于C:\oracle\product\10.1.0\Db_1\NETWORK\ADMIN目录下 1. sqlplus sys/oracle@orcl sqlnet.ora 文件...
oracle中sql语句(+)符号代表连接 (+)在=前边为右连接 (+)在=后边为左连接 SELECT a.*, b.* from a(+) = b就是一个右连接,等同于select a.*, b.* from a right join b SELECT a.*, b.* from a = b(+)就是一个左连接...
讲解了oracle数据库的基础知识和sql语句的练习,讲解了oracle的基础,oracle的基本sql语句,连接查询和子查询,以及常用的数据库对象和数据库的设计原则等。mysql的入门和使用包含触发器。