oracle笔记2-多表查询和子查询
--查询出当前用户下的所有表
select table_name from user_tables;
--执行顺序原则: from where group by having select order by
--书写顺序原则: select from where group by having order by
select * from dept;
select * from emp;
select * from bonus;
select * from salgrade;
--查询出雇员的编号,姓名,部门的编号和名称,地址
select e.empno, e.ename, d.deptno, d.dname, d.loc
from emp e, dept d
where e.deptno = d.deptno
--范例:查询出每个员工的上级领导 --自连接 自关联 自查询
--(员工编号、员工姓名、员工部门编号、员工工资、领导编号、领导姓名、领导工资)
select e.empno, e.ename, e.deptno, e.sal, m.empno, m.ename, m.sal
from emp e, emp m
where e.mgr = m.empno;
--范例: 查询员工编号、员工姓名、员工部门编号、部门名称,领导编号、领导姓名、领导工资
select e.empno, e.ename, e.deptno, d.dname, m.empno, m.ename, m.sal
from emp e, emp m, dept d
where e.mgr = m.empno
and e.deptno = d.deptno;
--范例:查询出员工编号、员工姓名、员工部门编号、部门名称,员工工资,工资等级,领导编号、领导姓名、领导工资,领导工资等级
--三张表 emp e/m, dept d, salgrade s
select e.empno,
e.ename,
e.deptno,
d.dname,
e.sal,
s.grade,
m.empno,
m.ename,
m.sal,
a.grade
from emp e, emp m, dept d, salgrade s, salgrade a
where e.mgr = m.empno
and e.deptno = d.deptno
and e.sal between s.losal and s.hisal
and m.sal between a.losal and a.hisal;
--范例:查询出所有员工的上级领导
--方式一:left join on
select e.empno, e.ename, m.empno, m.ename
from emp e
left join emp m
on e.mgr = m.empno;
--方式二: +
select e.empno, e.ename, m.empno, m.ename
from emp e, emp m
where e.mgr = m.empno(+);
--范例:查询出所有的部门下的员工,要求把没有员工的部门也展示出来
--方式一:left join on
select *
from emp e
right join dept d
on e.deptno = d.deptno
order by e.empno;
--方式二: +
select * from emp e, dept d where e.deptno(+) = d.deptno order by e.empno;
--查询比SCOTT工资高的员工
select * from emp where emp.sal >= (select e.sal from emp e where e.ename = 'SCOTT');--自己也查出来了???
--查询职位是经理并且工资比7782号员工高的员工
select *
from emp
where job = 'MANAGER'
and sal > (select sal from emp e where e.empno = '7782');
--查询工资最低的员工
select * from emp where sal = (select min(e.sal) from emp e);
--查询部门最低工资 大于 30号部门最低工资 的部门
select deptno, min(sal)
from emp
group by deptno
having min(sal) > (select min(sal) from emp where deptno = 30)
--查询出和scott同部门并且同职位的员工
select * from emp where deptno = (select deptno from emp where ename = 'SCOTT') and
job = (select job from emp where ename = 'SCOTT');
SELECT * FROM emp WHERE (deptno,job) = (SELECT deptno, job FROM emp WHERE ename = 'SCOTT');
--查询每个部门的最低工资 和最低工资的雇员和部门名称
SELECT e.*,d.dname
FROM emp e, dept d,
(SELECT deptno, MIN(sal) minsal FROM emp GROUP BY deptno) t
WHERE e.sal = t.minsal AND
e.deptno = d.deptno AND
e.deptno = t.deptno
--查询出不是领导的员工
SELECT *
FROM EMP
WHERE EMPNO NOT IN (SELECT DISTINCT MGR FROM EMP WHERE MGR IS NOT NULL)
--查询员工表中工资最高的前三名
SELECT T.*, ROWNUM
FROM (SELECT * FROM EMP ORDER BY SAL DESC) T
WHERE ROWNUM <= 3;
--找到员工表中薪水大于本部门平均薪水的员工
SELECT *
FROM EMP E,
(SELECT ROUND(AVG(SAL)) AVGSAL, DEPTNO FROM EMP GROUP BY DEPTNO) T
WHERE E.DEPTNO = T.DEPTNO
AND E.SAL > T.AVGSAL
ORDER BY E.DEPTNO DESC;
--统计每年入职的员工个数
SELECT count(*) counts, to_char(hiredate,'yyyy') years FROM emp GROUP BY to_char(hiredate,'yyyy')
--行转列
SELECT SUM(counts) "Total",
SUM(decode(years,'1980',counts)) "1980",
SUM(DECODE(years,'1981',counts)) "1981",
SUM(DECODE(years,'1982',counts)) "1982",
SUM(DECODE(years,'1987',counts)) "1987"
FROM (SELECT count(*) counts, to_char(hiredate,'yyyy') years FROM emp GROUP BY to_char(hiredate,'yyyy'))
--范例:工资大于1500,或者是20号部门下的员工
SELECT * FROM emp WHERE sal > 1500 OR deptno = 20;
--范例:工资大于1500,并且是20号部门下的员工
SELECT * FROM emp WHERE sal > 1500 AND deptno = 20;
--范例:1981年入职的普通员工(不包括总裁和经理)
SELECT * FROM emp WHERE to_char(hiredate,'yyyy') = 1981 AND job NOT IN ('MANAGER','PRESIDENT');
--查询没有员工的部门
SELECT * FROM dept d WHERE NOT EXISTS (SELECT * FROM emp e WHERE e.deptno = d.deptno );
oracle笔记2-多表查询和子查询的更多相关文章
- ORACLE 多表连接与子查询
Oracle表连接 SQL/Oracle使用表连接从多个表中查询数据 语法格式: select 字段列表from table1,table2where table1.column1=table2.co ...
- Oracle笔记_多表查询
1 执行sql文件 @文件地址名 --执行某个sql文件: 2 多表查询 想要的数据不在同一张表,就需要多个表进行联查. 多表查询也叫做表连接查询,其中的where条件就是连接条件. 可以使用join ...
- oracle多表关联查询和子查询
oracle多表关联查询和子查询 一.多表关联查询 例子: SQL> create table student1 ( sid ), sname ), sage )); Table created ...
- Mysql基础语法-建库-建表(增、删、改、查、表关联及子查询)
前言:MySQL是一个数据库管理系统,也是一个关系数据库.它是由Oracle支持的开源软件,MySQL可以在各种平台上运行UNIX,Linux,Windows等.可以将其安装在服务器甚至桌面系统上. ...
- MS sql server 基础知识回顾(二)-表连接和子查询
五.表连接 当数据表中存在许多重复的冗余信息时,就要考虑将这些信息建在另一张新表中,在新表中为原表设置好外键,在进行数据查询的时候,就要使用到连接了,表连接就好像两根线,线的两端分别连接两张表的不同字 ...
- Oracle的关于建表,约束,查询等的练习
从建立一个简单表,到实现一些复杂查询的例子, DROP TABLE grade;DROP TABLE item;DROP TABLE sporter;CREATE TABLE sporter( spo ...
- MySQL多表查询之外键、表连接、子查询、索引
MySQL多表查询之外键.表连接.子查询.索引 一.外键: 1.什么是外键 2.外键语法 3.外键的条件 4.添加外键 5.删除外键 1.什么是外键: 主键:是唯一标识一条记录,不能有重复的,不允许为 ...
- MySQL开发——【联合查询、多表连接、子查询】
联合查询 所谓的联合查询就是将满足条件的结果进行拼接在同一张表中. 基本语法: select */字段 from 数据表1 union [all | distinct] select */字段 fro ...
- MySQL之多表查询一 介绍 二 多表连接查询 三 符合条件连接查询 四 子查询 五 综合练习
MySQL之多表查询 阅读目录 一 介绍 二 多表连接查询 三 符合条件连接查询 四 子查询 五 综合练习 一 介绍 本节主题 多表连接查询 复合条件连接查询 子查询 首先说一下,我们写项目一般都会建 ...
- mysql查询语句 和 多表关联查询 以及 子查询
原文地址: http://blog.csdn.net/github_37767025/article/details/67636061 1.查询一张表: select * from 表名: 2.查询指 ...
随机推荐
- P1452 Beauty Contest 旋转卡壳
\(\color{#0066ff}{题目描述}\) 贝茜在牛的选美比赛中赢得了冠军"牛世界小姐".因此,贝西会参观N(2 < = N < = 50000)个农场来传播善 ...
- C++ 标准库智能指针
整理一下c++中shared_ptr,weak_ptr,unique_ptr三种指针的使用案例和注意事项,让程序资源更加案例,在标准库中,需要包含<memory>,在boost库中, 一. ...
- 添加fping监控
第一步:安装fping服务 yum -y install fping 第二步:在zabbix-server服务端上启用fping服务 重启zabbix-server 第三步:在主机上添加fping监控 ...
- hdu6299 Balanced Sequence 贪心
题目传送门 题目大意:给出n个字符串,定义了平衡字符串,问这些字符串组合之后,最长的平衡字符子序列的长度. 思路: 首先肯定要把所有字符串先处理成全是不合法的,记录右括号的数量为a,左括号的数量为b, ...
- codeforces 985C Liebig's Barrels(贪心)
题目 题意: 有n * k块木板,每个木桶由k木板组成,每个木桶的容量定义为它最短的那块木板的长度. 任意两个木桶的容量v1,v2,满足|v1-v2| <= d. 问n个木桶容量的最大的和为多少 ...
- CF 520 B. Two Buttons(bfs)
/*题意:一个数,就是输入的第一个数,让它变成第二个数最少用几步.可以点红色按钮,蓝色按钮来改变数字,红色:*2,蓝色:-1,如果变成负数,就变成原来的数.CF 520 B. Two Buttons思 ...
- Python练习六十:网页分析,找出里面的正文与链接
网页分析,找出里面的正文与链接 代码如下: from urllib import request from bs4 import BeautifulSoup request = request.url ...
- nc工具详解
nc 安装 yum install -y nc参数: Command Summary: - Use IPv4 - Use IPv6 -D Enable the debug socket opti ...
- java——线段树 SegmentTree
应用: 区间染色 区间查询 线段树不是完全二叉树,线段树是平衡二叉树 使用数组来实现线段树:存储空间为4n 以下是使用数组实现的静态线段树: public class SegmentTree<E ...
- 数据库迁移expdp impdp 与 OGg 搭建
1.long 字段的无法使用OGG 同步 2.clob字段的导入导出Bug , 生产使用network-link 导入导出太慢了,本地导入导出速度会快3到4倍 .但是测试环境的情况却相反 测试环境和生 ...