本文为博主辛苦总结,希望自己以后返回来看的时候理解更深刻,也希望可以起到帮助初学者的作用.

**转载请注明 出自 : luogg的博客园 ** 谢谢配合!

day05_集合_连接查询

集合操作符

UNION (并集 ,去除重复行)

查询工资大于8000或职位是程序员的雇员的姓名、工资、职位id --37

select first_name,salary,job_id from copy_emp where salary>4000 --37

union

select first_name,salary,job_id from copy_emp where job_id='IT_PROG'; --5

--union all(A+B,不会去除重复的行) --42

select first_name,salary,job_id from copy_emp where salary>4000 --37

union all

select first_name,salary,job_id from copy_emp where job_id='IT_PROG'; --5

--intersect 取查询结果交集C --5

--查询工资大于8000且职位是程序员的雇员的姓名、工资、职位id

select first_name,salary,job_id from copy_emp where salary>4000 --37

INTERSECT

select first_name,salary,job_id from copy_emp where job_id='IT_PROG';--5

--minus(A-B) 的用法 : 显示在A 中存在, 而在B 中不存在 --32

select first_name,salary,job_id from copy_emp where salary>4000 --37

MINUS

select first_name,salary,job_id from copy_emp where job_id='IT_PROG';--5

连接查询 :


1. 自连接 : 自己表内连接,比如员工表中员工id和上级的员工id.

--自连接的练习使用

--名字,salary,部门编码,部门的名称,工资等级,上级名称

select

worker.first_name,worker.salary,worker.department_id,department_name,grade,leader.first_name

from copy_emp worker,copy_emp leader,salgrade,copy_dept dept

where worker.manager_id=leader.employee_id

and worker.salary between losal and hisal

and worker.department_id = dept.department_id;

2. 等值连接 :

3. 非等值连接 :

--查询员工工资和等级(非等值连接 )

select first_name || ',' || last_name as "姓名",employee_id,salary,grade

from copy_emp ce,salgrade2 sg

where ce.salary BETWEEN losal AND HISAL;

4. 内连接 :

--查看部门内雇员编号、姓名、所在部门编号以及部门的名称

select employee_id,first_name,emp.department_id,department_name

from copy_emp emp INNER JOIN copy_dept dept

ON emp.department_id=dept.department_id;

5. 外连接 :

--左外连接(左边的表做了主表与右侧的表关联,右外连接相反)

--查看所有部门 (包含没有员工的部门 ) 的雇员编号、姓名、所在部门编号以及部门名称

select employee_id,first_name,emp.department_id,department_name

from copy_emp emp

LEFT JOIN copy_dept dept

ON emp.department_id=dept.department_id;

--多条件左外连接 名字,salary,部门编码,部门的名称,工资等级,上级名称

select worker.first_name,worker.salary,worker.department_id,department_name,grade,leader.first_name

from copy_emp worker

LEFT JOIN copy_emp leader

ON worker.manager_id=leader.employee_id

LEFT JOIN copy_dept dept

ON worker.department_id=dept.department_id

LEFT JOIN salgrade

ON worker.salary between losal and hisal;

--用 (+) 代替左外连接或右外连接,位置相反

select first_name,emp.employee_id

from copy_emp emp,copy_dept dept

where emp.department_id=dept.department_id(+)

6. 全连接 :

rownum 使用

--查询工资前三的员工信息

select rownum,a.* from (select rownum,emp.* from copy_emp emp) a

where rownum <=3 order by salary nulls last;

--工资6-10 的员工信息

select rownum,a.* from (select rownum,emp.* from copy_emp emp) a

where rownum <=10

minus

select rownum,a.* from (select rownum,emp.* from copy_emp emp) a

where rownum <=6

课外补充:

--1.查询没有员工的部门信息
select * from copy_dept where department_id not in(select department_id from copy_emp
where department_id is not null group by department_id) --2.查询没有部门的员工信息
select * from copy_emp where department_id is null; --思特奇 查询出只有主功夫 没有次功夫的员工信息( 信息包含 员工名字,部门名称,功夫描述,个人资产 )
select * from dept_info;
select * from kf_info;
select * from user_info;
select * from user_kongfu; select ukf.user_id,uinfo.name,dinfo.dept_name,kinfo.kf_name,uinfo.user_asset,ukf.main_kf_flag
from user_kongfu ukf,user_info uinfo,dept_info dinfo,kf_info kinfo
where uinfo.user_id=ukf.user_id
and dinfo.dept_no=uinfo.dept_id
and kinfo.kf_id = ukf.kf_id
and ukf.user_id not in(select user_id from user_kongfu where main_kf_flag=0 group by user_id)

Oracle学习总结_day05_集合_连接查询的更多相关文章

  1. mysql学习之路_连接查询

    回顾 列属性:主键,自增长,唯一键. 关系:一对一,一对多,多对多 三层范式: 1NF:字段设计必须符合原子性 2NF:不存在部分依赖(没有复合主键) 3NF:不存在传递依赖(实体单独成表) 逆规范化 ...

  2. 【学习笔记】Hibernate HQL连接查询和数据批处理 (Y2-1-7)

    HQL连接查询 和SQL查询一样 hql也支持各种链接查询 如内连接 外连接 具体如下 左外连接 left (outer) join 迫切左外连接 left (outer) join fetch 右外 ...

  3. mysql_数据查询_连接查询

    连接查询 1.连接(join) 也称θ连接,从两个关系的笛卡尔积中选择属性间满足一定条件的元组. 等值连接:θ为“=”的连接运算称为等值连接.从关系R和S的广义笛卡尔积中选取A.B属性值相等的元组. ...

  4. MySQL学习(四) SQL连接查询

    更多情况下,我们查询的数据来源于多张表,所有有必要了解一下MySQL中的连接查询. SQL中将连接查询分成四类:交叉连接,内连接,外连接和自然连接. 数据准备 student表 -- -------- ...

  5. MySQL学习笔记(十二)__连接查询(一)

    连接查询含义:又称多表查询,当查询的字段来自多个表时,就会用到连接查询 笛卡尔乘积现象:表1 有 m 行,表2 有 n 行,结果 = m*n 行发生原因:没有有效的连接条件如何避免:添加有效的连接条件 ...

  6. 【Java EE 学习 28 上】【oracle学习第二天】【子查询】【集合运算】【几种数据库对象】

    一.子查询 1.为什么要使用子查询:问题不能一步求解或者一个查询不能通过一步查询得到. 2.分类:单行子查询和多行子查询. 3.子查询的本质:一个查询中包含了另外一个或者多个查询. 4.使用子查询的规 ...

  7. Oracle 学习笔记 14 -- 集合操作和高级子查询

    Oracel提供了三种类型的集合操作:各自是并(UNION) .交(INTERSECT). 差(MINUS) UNION :将多个操作的结果合并到一个查询结果中,返回查询结果的并集,自己主动去掉反复的 ...

  8. Oracle学习(二)_多表操作

    --第一部分:SQL基础 --ch1 简单查询 --ch2 查询基本概念 --ch3 数据过滤 --第二部分:多表操作 --ch4 集合理论 --ch5 内连接 --ch6 外连接 --ch7 子查询 ...

  9. Oracle学习笔记(7)——高级查询(1)

    在学习高级查询之前,我们先了解一下怎样查看Oracle数据库中的全部表.由于我们要使用到Oracle数据库中SCOTT用户下的几张表(这些表是Oracle数据库自带的表). 分组查询 分组函数的概念: ...

随机推荐

  1. 如何给CentOS安装字体库

    很多时候,我们需要做一些图像生成工作(譬如验证码之类的),这时候,我们一般都需要用到系统的字体库.但事情却总非尽善人意,我们所使用的Linux操作系统无法像Windows操作系统那样足够“旗舰”,字体 ...

  2. 大叔也学Xamarin系列

    回到占占推荐博客索引 我就是我,请叫我仓储大叔 大叔听很多客户说,xamarin的资料网上太少了,是的,大叔也相信,因为大叔在学xamarin里确实很费劲,只能看看androd for java了,呵 ...

  3. c#设计模式-组合模式

    在软件开发过程中,我们经常会遇到处理简单对象和复合对象的情况,例如对操作系统中目录的处理就是这样的一个例子,因为目录可以包括单独的文件,也可以包括文件夹,文件夹又是由文件组成的,由于简单对象和复合对象 ...

  4. Struts框架

    Struts是最早的Java开源框架之一,它是MVC设计模式的一个优秀实现. Struts定义了通用的Controller(控制器),通过配置文件(通常是 Struts -config.xml) Ec ...

  5. windows server 2008 r2 企业版 hyper v做虚拟化的相关问题处理

    windows server 2008 r2 企业版 hyper v做虚拟化的相关问题处理 今天在dell r710 上用windows server 2008 r2企业版hyper v 做虚拟化,添 ...

  6. Go 作用

    Go语句的作用是表示一个batch(多条Tsql命令)的结束,并向sql server 提交batch,由于局部变量的作用域是基于batch的,所以,go语句限制局部变量的作用域在一个batch中. ...

  7. jQuery源码分析系列(31) : Ajax deferred实现

    AJAX的底层实现都是浏览器提供的,所以任何基于api上面的框架或者库,都只是说对于功能的灵活与兼容维护性做出最优的扩展 ajax请求的流程: 1.通过 new XMLHttpRequest 或其它的 ...

  8. 虚拟文件系统(VFS)

    原文链接:http://www.orlion.ga/1008/ linux在不同的文件系统之上做了一个抽象层,使得文件.目录.读写访问等概念都成为抽象层概念,这个抽象层被称为虚拟文件系统(VFS). ...

  9. 分享一个LiteDB做的简单考试系统辅助工具

    凌晨,被安排在公司值班,因为台风“灿鸿”即将登陆,风力太大,办公楼,车间等重要部分需要关注.所以无聊,那就分享一下,今天给朋友临时做的一个小的考试系统辅助工具吧.其实非常小,需求也很简单,但是可以根据 ...

  10. Objective-C中的继承和多态

    面向对象编程之所以成为主流的编程思想和他的继承和多态是分不开的,只要是面向对象语言都支持继承和多态,当然不同的OOP语言之间都有其特点.OC中和Java类似,不支持多重继承,但OOP语言C++就支持多 ...