Oracle学习总结_day05_集合_连接查询
本文为博主辛苦总结,希望自己以后返回来看的时候理解更深刻,也希望可以起到帮助初学者的作用.
**转载请注明 出自 : 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_集合_连接查询的更多相关文章
- mysql学习之路_连接查询
回顾 列属性:主键,自增长,唯一键. 关系:一对一,一对多,多对多 三层范式: 1NF:字段设计必须符合原子性 2NF:不存在部分依赖(没有复合主键) 3NF:不存在传递依赖(实体单独成表) 逆规范化 ...
- 【学习笔记】Hibernate HQL连接查询和数据批处理 (Y2-1-7)
HQL连接查询 和SQL查询一样 hql也支持各种链接查询 如内连接 外连接 具体如下 左外连接 left (outer) join 迫切左外连接 left (outer) join fetch 右外 ...
- mysql_数据查询_连接查询
连接查询 1.连接(join) 也称θ连接,从两个关系的笛卡尔积中选择属性间满足一定条件的元组. 等值连接:θ为“=”的连接运算称为等值连接.从关系R和S的广义笛卡尔积中选取A.B属性值相等的元组. ...
- MySQL学习(四) SQL连接查询
更多情况下,我们查询的数据来源于多张表,所有有必要了解一下MySQL中的连接查询. SQL中将连接查询分成四类:交叉连接,内连接,外连接和自然连接. 数据准备 student表 -- -------- ...
- MySQL学习笔记(十二)__连接查询(一)
连接查询含义:又称多表查询,当查询的字段来自多个表时,就会用到连接查询 笛卡尔乘积现象:表1 有 m 行,表2 有 n 行,结果 = m*n 行发生原因:没有有效的连接条件如何避免:添加有效的连接条件 ...
- 【Java EE 学习 28 上】【oracle学习第二天】【子查询】【集合运算】【几种数据库对象】
一.子查询 1.为什么要使用子查询:问题不能一步求解或者一个查询不能通过一步查询得到. 2.分类:单行子查询和多行子查询. 3.子查询的本质:一个查询中包含了另外一个或者多个查询. 4.使用子查询的规 ...
- Oracle 学习笔记 14 -- 集合操作和高级子查询
Oracel提供了三种类型的集合操作:各自是并(UNION) .交(INTERSECT). 差(MINUS) UNION :将多个操作的结果合并到一个查询结果中,返回查询结果的并集,自己主动去掉反复的 ...
- Oracle学习(二)_多表操作
--第一部分:SQL基础 --ch1 简单查询 --ch2 查询基本概念 --ch3 数据过滤 --第二部分:多表操作 --ch4 集合理论 --ch5 内连接 --ch6 外连接 --ch7 子查询 ...
- Oracle学习笔记(7)——高级查询(1)
在学习高级查询之前,我们先了解一下怎样查看Oracle数据库中的全部表.由于我们要使用到Oracle数据库中SCOTT用户下的几张表(这些表是Oracle数据库自带的表). 分组查询 分组函数的概念: ...
随机推荐
- js模块化历程
这是一篇关于js模块化历程的长长的流水账,记录js模块化思想的诞生与变迁,展望ES6模块化标准的未来.经历过这段历史的人或许会感到沧桑,没经历过的人也应该知道这段历史. 无模块时代 在ajax还未提出 ...
- YY一下淘宝商品模型
淘宝的电商产品种类非常丰富,必然得力于其商品模型的高度通用性和扩展性. 下面我将亲自操作淘宝商品的发布过程,结合网上其他博客对淘宝网商品库的分析,简单谈谈我的理解. 注:下面不特殊说明,各个表除主键外 ...
- Nokia 920板砖自救(理论上通用,升级Win10成板砖也可以用这个恢复)
异常处理汇总 ~ 修正果带着你的Net飞奔吧! http://www.cnblogs.com/dunitian/p/4599258.html 个人博客:http://dnt.dkill.net 下载下 ...
- 瀑布流StaggeredGridView 下拉刷新
1.项目中用到了瀑布流,之前用的是PinterestLikeAdapterView这个控件 然后上拉加载更多跟下拉刷新用的是XListView ,但是加载更多或者下拉刷新的时候闪屏,对用户体验很不好 ...
- T-SQL:毕业生出门需知系列(六)
第6课 用通配符进行过滤 6.1 LIKE 操作符 前面介绍的所有操作符都是针对已知值进行过滤.但是,这种过滤方法并不是任何时候都好用. 例如:怎样搜索产品名中包含文本 bean bag 的所有产品? ...
- 修改ibdata1大小的验证以及如何使用mysqld_multi管理多实例
修改ibdata1大小的验证 ibdata是共享表空间,在MySQL初始化的时候就生成了. 但很多童鞋会看到网上各种大神的调优建议,在MySQL已经初始化的情况下,修改配置文件中innodb_data ...
- 用jekyll制作高大上的网站(二)——实际应用
最近公司要制作个文档库,直接就可以将jekyll应用到实际中. 模版使用了Jekyll Clean,这么模版相对内部简单一点,学习成本不会很大,而复杂的Minimal Mistakes就当作参考. 模 ...
- js的并行加载以及顺序执行
重新温习了下这段内容,发现各个浏览器的兼容性真的是搞大了头,处理起来很是麻烦. 现在现总结下并行加载多个js的方法: 1,对于动态createElement('script')的方式,对所有浏览器都是 ...
- 关于Java中的transient关键字
Java中的transient关键字是在序列化时候用的,如果用transient修饰变量,那么该变量不会被序列化. 下面的例子中创建了一个Student类,有三个成员变量:id,name,age.ag ...
- 由项目浅谈JS中MVVM模式
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/. 1. 背景 最近项目原因使用了durandal.js和knock ...