--查询出当前用户下的所有表

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-多表查询和子查询的更多相关文章

  1. ORACLE 多表连接与子查询

    Oracle表连接 SQL/Oracle使用表连接从多个表中查询数据 语法格式: select 字段列表from table1,table2where table1.column1=table2.co ...

  2. Oracle笔记_多表查询

    1 执行sql文件 @文件地址名 --执行某个sql文件: 2 多表查询 想要的数据不在同一张表,就需要多个表进行联查. 多表查询也叫做表连接查询,其中的where条件就是连接条件. 可以使用join ...

  3. oracle多表关联查询和子查询

    oracle多表关联查询和子查询 一.多表关联查询 例子: SQL> create table student1 ( sid ), sname ), sage )); Table created ...

  4. Mysql基础语法-建库-建表(增、删、改、查、表关联及子查询)

    前言:MySQL是一个数据库管理系统,也是一个关系数据库.它是由Oracle支持的开源软件,MySQL可以在各种平台上运行UNIX,Linux,Windows等.可以将其安装在服务器甚至桌面系统上. ...

  5. MS sql server 基础知识回顾(二)-表连接和子查询

    五.表连接 当数据表中存在许多重复的冗余信息时,就要考虑将这些信息建在另一张新表中,在新表中为原表设置好外键,在进行数据查询的时候,就要使用到连接了,表连接就好像两根线,线的两端分别连接两张表的不同字 ...

  6. Oracle的关于建表,约束,查询等的练习

    从建立一个简单表,到实现一些复杂查询的例子, DROP TABLE grade;DROP TABLE item;DROP TABLE sporter;CREATE TABLE sporter( spo ...

  7. MySQL多表查询之外键、表连接、子查询、索引

    MySQL多表查询之外键.表连接.子查询.索引 一.外键: 1.什么是外键 2.外键语法 3.外键的条件 4.添加外键 5.删除外键 1.什么是外键: 主键:是唯一标识一条记录,不能有重复的,不允许为 ...

  8. MySQL开发——【联合查询、多表连接、子查询】

    联合查询 所谓的联合查询就是将满足条件的结果进行拼接在同一张表中. 基本语法: select */字段 from 数据表1 union [all | distinct] select */字段 fro ...

  9. MySQL之多表查询一 介绍 二 多表连接查询 三 符合条件连接查询 四 子查询 五 综合练习

    MySQL之多表查询 阅读目录 一 介绍 二 多表连接查询 三 符合条件连接查询 四 子查询 五 综合练习 一 介绍 本节主题 多表连接查询 复合条件连接查询 子查询 首先说一下,我们写项目一般都会建 ...

  10. mysql查询语句 和 多表关联查询 以及 子查询

    原文地址: http://blog.csdn.net/github_37767025/article/details/67636061 1.查询一张表: select * from 表名: 2.查询指 ...

随机推荐

  1. P4799 [CEOI2015 Day2]世界冰球锦标赛

    \(\color{#0066ff}{题目描述}\) 今年的世界冰球锦标赛在捷克举行.Bobek 已经抵达布拉格,他不是任何团队的粉丝,也没有时间观念.他只是单纯的想去看几场比赛.如果他有足够的钱,他会 ...

  2. log4j配置文件及java调用 每个级别输出到不同的文件

    #配置根Logger log4j.rootLogger = DEBUG , RollingFile,CONSOLE #文件大小达到一定尺寸的时候创建一个新的文件 log4j.appender.Roll ...

  3. [USACO06NOV]糟糕的一天Bad Hair Day BZOJ 1660 单调栈

    农民John的某 N 头奶牛 (1 <= N <= 80,000) 正在过乱头发节!由于每头牛都 意识到自己凌乱不堪的发型, FJ 希望统计出能够看到其他牛的头发的牛的数量. 每一头牛 i ...

  4. Kibana问题记录:yarn test 运行报错 error Trailing spaces not allowed no-trailing-spaces

    这个错误就是说,在指定的代码后面有太多无用空格了,你只要把那些空格删掉就行了. 如果你用的是vscode,推荐安装一个ESLint插件,格式话一下你的代码就可以了.

  5. P1111 修复公路(并查集)

    题目背景 AA地区在地震过后,连接所有村庄的公路都造成了损坏而无法通车.政府派人修复这些公路. 题目描述 给出A地区的村庄数NN,和公路数MM,公路是双向的.并告诉你每条公路的连着哪两个村庄,并告诉你 ...

  6. hdu4081 秦始皇修路(次小生成树)

    题目ID:hdu4081   秦始皇修路 题目链接:点击打开链接 题目大意:给你若干个坐标,每个坐标表示一个城市,每个城市有若干个人,现在要修路,即建一个生成树,然后有一个魔法师可以免费造路(不消耗人 ...

  7. ubuntu同时装有MXNet和Caffe框架

    我阐述一下我遇到的问题:因为之前装过caffe,最近装了MXNet.MXNet可以运行,但import caffe就不行了,找不到模块. 那应该怎么处理呢??? 参考了一下这个网站:https://i ...

  8. hadoop "startdfs.sh" WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable

    这个waring 信息是可以忽略的.下面是解决方案 在hadoop-env.sh中添加 export HADOOP_OPTS="$HADOOP_OPTS -Djava.library.pat ...

  9. SQL SERVER LEFT JOIN, INNER JOIN, RIGHT JOIN

    JOIN: 如果表中有至少一个匹配,则返回行 LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行 RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行 FULL JOIN: 只 ...

  10. vue--钩子函数1

    最近在学习自定义指令,这里做个整理 vue允许注册自定义指令,在2.0中,代码复用和抽象的主要形式是组件.然而有的情况下仍需要对普通DOM元素进行底层操作,这时就会用到自定义指令. 全局指令direc ...