ORACLE 高级查询

---- oracle 高级查询

 

-- 1.集合操作(并集、交集、补集)

----  <1> union (并集 不重复)

SELECT dept_code,dept_name from base_dept
UNION
SELECT dept_code,dept_name FROM geyy_dept;


----  <2> union all (并集 重复)

SELECT dept_code,dept_name from base_dept
UNION ALL
SELECT dept_code,dept_name FROM geyy_dept;

INSERT INTO geyy_dept(ID,dept_code,dept_name)
SELECT 'E1266A92FCDB813EE040A8C09B006E84','aa','aaa' FROM dual
UNION
SELECT 'E1266A92FCDB813EE040A8C09B006E8y','bb','bbb' FROM dual

 

----  <3> intersect (交集 返回两个查询共有的记录 .查询的每个字段都必须相等。包括空值)
-------  例如:如果dept_code 相等。但是dept_name不想等,就查不出来。必须这两个字段都相等。

SELECT dept_code,dept_name from base_dept
INTERSECT
SELECT dept_code,dept_name FROM geyy_dept;

----  <4> MINUS(返回第一个查询检索出的记录减去第二个查询检索出的记录之后剩余的记录)

SELECT dept_code,dept_name from base_dept
MINUS
SELECT dept_code,dept_name FROM geyy_dept;

--- 2. 连接查询

----- <1> 内连接 (inner join)
--------- 以下三种结果都是一样的。

SELECT * from base_dept JOIN  geyy_dept ON base_dept.id=geyy_dept.id;

SELECT * from base_dept INNER JOIN  geyy_dept ON base_dept.id=geyy_dept.id;

SELECT * from base_dept,geyy_dept WHERE base_dept.id=geyy_dept.id;


----- <2> 外连接  (outer join)

--------- Oracle中对两个表或者若干表之间的外联接用(+)表示。

--------- 以下三种结果都是一样的。
SELECT * from base_dept LEFT JOIN geyy_dept ON  base_dept.id=geyy_dept.id;

SELECT * from base_dept LEFT OUTER JOIN geyy_dept ON  base_dept.id=geyy_dept.id;

SELECT * from base_dept,geyy_dept WHERE base_dept.id=geyy_dept.id(+);

--------- 以下三种结果都是一样的。

SELECT * from base_dept RIGHT JOIN geyy_dept ON  base_dept.id=geyy_dept.id;

SELECT * from base_dept RIGHT OUTER JOIN geyy_dept ON  base_dept.id=geyy_dept.id;

SELECT * from base_dept,geyy_dept WHERE base_dept.id(+)=geyy_dept.id;

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值