sql 连接oracle的几种方式

 我来答
大别山的蜗牛
高粉答主

推荐于2018-04-04 · 一只互联网搬运的蜗牛
大别山的蜗牛
采纳数:6928 获赞数:12024

向TA提问 私信TA
展开全部
1、相等连接
  通过两个表具有相同意义的列,可以建立相等连接条件。
  只有连接列上在两个表中都出现且值相等的行才会出现在查询结果中。
  例 查询员工信息以及对应的员工所在的部门信息;
  SELECT * FROM EMP,DEPT;
  SELECT * FROM EMP,DEPT
  WHERE EMP.DEPTNO = DEPT.DEPTNO;
  REM 显示工资超过2000的员工信息以及对应的员工的部门名称。
2、
外连接
  对于外连接,Oracle中可以使用“(+)”来表示,9i可以使用LEFT/RIGHT/FULL OUTER JOIN,下面将配合实例一一介绍。除了显示匹配相等连接条件的信息之外,还显示无法匹配相等连接条件的某个表的信息。
  外连接采用(+)来识别。
  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 ON EMP.DEPTNO = DEPT.DEPTNO;
  REM 显示员工信息以及所对应的部门信息,显示没有员工的部门信息
  --SELECT * FROM EMP,DEPT WHERE EMP.DEPTNO(+) = DEPT.DEPTNO;
  SELECT * FROM EMP RIGHT OUTER JOIN DEPT ON EMP.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..
  REM SALGRADE
  --DESC SALGRADE;
  --SELECT * FROM SALGRADE;
  REM 显示员工的编号,姓名,工资,以及工资所对应的级别。
  SELECT EMPNO,ENAME,SAL,SALGRADE.* FROM SALGRADE,EMP
  WHERE EMP.SAL BETWEEN LOSAL AND HISAL;
  REM 显示雇员的编号,姓名,工资,工资级别,所在部门的名称;
  SELECT EMPNO,ENAME,SAL,GRADE,DNAME FROM EMP,DEPT,SALGRADE
  WHERE EMP.DEPTNO = DEPT.DEPTNO AND EMP.SAL BETWEEN LOSAL AND HISAL;

4、自连接
  自连接是数据库中经常要用的连接方式,使用自连接可以将自身表的一个镜像当作另一个表来对待,从而能够得到一些特殊的数据。下面介绍一下自连接的方法:
  将原表复制一份作为另一个表,两表做笛卡儿相等连接。
  例:显示雇员的编号,名称,以及该雇员的经理名称
  SELECT WORKER.ENAME,WORKER.MGR,MANAGER.EMPNO,MANAGER.ENAME FROM EMP WORKER,EMP MANAGER
  WHERE WORKER.MGR = MANAGER.EMPNO;
TableDI
2024-07-18 广告
仅需3步!不写公式自动完成Excel vlookup表格匹配!Excel在线免,vlookup工具,点击70步自动完成表格匹配,无需手写公式,免费使用!... 点击进入详情页
本回答由TableDI提供
仁高翰6B
2016-01-08 · 超过15用户采纳过TA的回答
知道答主
回答量:130
采纳率:0%
帮助的人:42.4万
展开全部
一般有pl/sql开发工具
sql*plus
以及其他的第三方工具
比如toad,myeclipse,
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
成长的小码农
推荐于2016-05-01 · TA获得超过1842个赞
知道小有建树答主
回答量:872
采纳率:66%
帮助的人:1009万
展开全部
SQL SERVER连接oracle数据库几种方法

--1 方式
--查询oracle数据库中的表
SELECT *
FROM OPENDATASOURCE(

'MSDAORA',
'Data Source=GE160;User ID=DAIMIN;Password=DAIMIN'

)..DAIMIN.JOBS

--在sqlserver中创建与oracle数据库中的表同名的表
select * into JOBS from

OPENDATASOURCE(
'MSDAORA',
'Data Source=GE160;User
ID=daimin;Password=daimin'
)..DAIMIN.JOBS

select * from JOBS

--2、方式
--在master数据库中查看已经存在的链接服务器
select * from sysservers

EXEC sp_addlinkedserver
@server = 'GE160',
@srvproduct = 'Oracle',

@provider = 'MSDAORA',
@datasrc = 'GE160'

exec sp_addlinkedsrvlogin 'GE160', false, 'sa', 'daimin', 'daimin'

--要在企业管理器内指定登录帐号

exec sp_dropserver GE160

select * from GE160..DAIMIN.JOBS

delete from GE160..DAIMIN.JOBS

--备注:引用ORACLE服务器上的表时,用户名称与表名一定要大写字母。

SELECT *
FROM OPENQUERY(GE160, 'SELECT * FROM DAIMIN.JOBS')

--3、方式
SELECT a.*
FROM OPENROWSET('MSDAORA',

'GE160';'DAIMIN';'DAIMIN',
DAIMIN.JOBS) AS a
ORDER BY a.JOB_ID

--4、方式 ODBC
--ODBC方式比较好办
SELECT A.*
FROM
OPENROWSET('MSDAORA','GE160';'DAIMIN';'DAIMIN', --GE160是数据源名
DAIMIN.JOBS) AS
A
ORDER BY A.JOB_ID
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
forrestneo
2014-02-20
知道答主
回答量:42
采纳率:0%
帮助的人:20.9万
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式