01.查询员工表所有数据,并说明使用*的缺点
select * from emp

02.查询职位(JOB)为'PRESIDENT'的员工的工资
select sal from emp where job='PRESIDENT'

03.查询佣金(COMM)为0或为NULL的员工信息
select * from emp where COMM=0 or comm=null

04.查询入职日期在1982-5-1到1981-12-31之间的所有员工信息
select * from emp where HIREDATE between to_date('1981-12-31','yyyy-mm-dd') AND to_date('1982-05-01','yyyy-mm-dd')

select * from emp where to_char (HIREDATE,'yyyy-mm-dd') between '1981-12-31' and '1982-05-01'
 
 05.查询所有名字长度为4的员工的员工编号,姓名
select empno,ename  from emp where ename like '____'
select empno,ename from emp where length(ename)=4;

06.显示10号部门的所有经理('MANAGER')和20号部门的所有职员('CLERK')的详细信息
select * from emp where (deptno=10  and job= 'MANAGER') or (deptno=20 job='CLERK')

07.显示姓名中没有'L'字的员工的详细信息或含有'SM'字的员工信息
select * from emp where ename  not like '%L%' or ename like '%SM%'

08.显示各个部门经理('MANAGER')的工资
select SAL from emp where job='MANAGER'

09.显示佣金(COMM)收入比工资(SAL)高的员工的详细信息
select * from emp where comm > sal

10.把hiredate列看做是员工的生日,求本月过生日的员工(考察知识点:单行函数)
 select * from emp where to_char(hiredate,'mm') = to_char(sysdate,'mm')

11.把hiredate列看做是员工的生日,求下月过生日的员工(考察知识点:单行函数)
 select * from emp where to_char(hiredate,'mm') = to_char(add_months(sysdate,1),'mm')
 
 12.求1982年入职的员工(考察知识点:单行函数)
 select * from emp where  to_char(hiredate,'yyyy') > '1982'
 
 13.求1981年下半年入职的员工(考察知识点:单行函数) 
 select * from emp where  to_char(hiredate,'mm') >=6
 
 14.求1981年各个月入职的员工个数(考察知识点:组函数)
 select to_char(hiredate,'mm')  ,count(*)   from emp where to_char(hiredate,'yyyy')='1981' group by to_char(hiredate,'mm')

15.查询各个部门的平均工资
 select deptno ,avg(sal) from emp group by deptno

16.显示各种职位的最低工资
select job ,min(sal) from emp group by job;
 
 17.按照入职日期由新到旧排列员工信息
select * from emp order by hiredate desc
 
 18.查询员工的基本信息,附加其上级的姓名(内连接)
select t1.* ,t2.ename  上级 from emp  t1 join emp t2 on t1.empno= t2.mgr;
 
 19.显示工资比'ALLEN'高的所有员工的姓名和工资

select ename ,sal from emp where sal> (select sal from emp where ename='ALLEN');

select t1.* from emp t1 join emp t2 on nvl(t1.sal,0)> nvl(t2.sal,0) where t2.ename='ALLEN';
 
 20.显示与'SCOTT'从事相同工作的员工的详细信息
select t1.* from emp t1 join emp t2 on t1.job = t2.job where t2.ename='SCOTT'
 
 21.显示销售部('SALES')员工的姓名
select ename from emp e, dept d where e.deptno = d.deptno and d.dname='SALES';
 
 22.显示与30号部门'MARTIN'员工工资相同的员工的姓名和工资
select t1.ename ,t1.sal from emp t1 join emp t2 on t1.sal= t2.sal where t2.ename='MARTIN'
 
 23.查询所有工资高于平均工资的销售人员('SALESMAN')
select * from emp where sal > (select nvl(avg(sal),0) from emp)
 
 24.显示所有职员的姓名及其所在部门的名称和工资
select ename ,dname,sal  from emp e,dept d where e.deptno=e.deptno
 
 25查询在研发部('RESEARCH')工作员工的编号,姓名,工作部门,工作所在地
select empno, ename ,dname , loc from emp e,dept d where e.deptno=e.deptno and dname='RESEARCH'
 
 26.查询各个部门的名称和员工人数
select d.dname,count(*) from emp e,dept d where e.deptno=d.deptno group by d.dname
 
 27.查询 各个职位 员工工资大于平均工资(平均工资包括所有员工)的人数 和员工职位
select count(*) ,job from emp where sal >(select nvl(avg(sal),0) from emp) group by job
 
 28.查询工资相同的员工的工资和姓名 (去重复)

select t1.ename ,t1.sal from emp  t1 join emp t2 on t1.sal=t2.sal where t1.empno!=t2.empno
  
 29.查询工资最高的3名员工信息(先排序再选前三个)
select *  from emp where empno in ( select empno from ( select empno from emp order by sal desc)t
where rownum<=3);
 
 30.按工资进行排名,排名从1开始,工资相同排名相同(如果两人并列第1则没有第2名,从第3名继续排)
select e.*,(select count(*) from emp where sal>e.sal)+1 rank from emp e order by rank;
 
 31.求入职日期相同的(年月日相同)的员工
select t1.* from emp t1 join emp t2 on  to_char(t1.hiredate,'yyyy-mm-dd')= to_char(t2.hiredate,'yyyy-mm-dd') where t1.empno != t2.empno;
 
 32.查询每个部门的最高工资
 select deptno,max(sal) from emp group by deptno order by deptno;

 33.查询每个部门,每种职位的最高工资
select deptno,job,max(sal) from emp group by deptno,job order by deptno,job; 
 
 34.查询每个部门有多少人
select deptno,count(*) from emp group by deptno;

Oracle数据库 常见的SQL题,复习的更多相关文章

  1. Oracle数据库之PL/SQL异常处理

    Oracle数据库之PL/SQL异常处理 异常指的是在程序运行过程中发生的异常事件,通常是由硬件问题或者程序设计问题所导致的. PL/SQL程序设计过程中,即使是写得最好的程序也可能会遇到错误或未预料 ...

  2. Oracle数据库之PL/SQL流程控制语句

    Oracle数据库之PL/SQL流程控制语句 在任何计算机编程语言(如C,Java,C#等)都有各种流程控制语句,同样,在PL/SQL中也存在这样的流程控制结构. 几种常见的流程控制结构: 一.条件结 ...

  3. Oracle数据库之动态SQL

    Oracle数据库之动态SQL 1. 静态SQLSQL与动态SQL Oracle编译PL/SQL程序块分为两个种:一种为前期联编(early binding),即SQL语句在程序编译期间就已经确定,大 ...

  4. Oracle数据库之PL/SQL触发器

    Oracle数据库之PL/SQL触发器 1. 介绍 触发器(trigger)是数据库提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是 ...

  5. Oracle数据库之PL/SQL包

    Oracle数据库之PL/SQL包 1. 简介 包(PACKAGE)是一种数据对象,它是一组相关过程.函数.变量.常量和游标等PL/SQL程序设计元素的组合,作为一个完整的单元存储在数据库中,用名称来 ...

  6. Oracle数据库之PL/SQL过程与函数

    Oracle数据库之PL/SQL过程与函数 PL/SQL块分为匿名块与命名块,命名块又包含子程序.包和触发器. 过程和函数统称为PL/SQL子程序,我们可以将商业逻辑.企业规则写成过程或函数保存到数据 ...

  7. Oracle数据库常见版本

    Oracle数据库常见版本 在Oracle数据库的发展中,数据库一直处于不断升级状态,有以下几个版本: Oracle 8,Oracle 8i:Oracle 8i表示Oracle正式向Internet上 ...

  8. oracle数据库查询日期sql语句(范例)、向已经建好的表格中添加一列属性并向该列添加数值、删除某一列的数据(一整列)

    先列上我的数据库表格: c_date(Date格式)     date_type(String格式) 2011-01-01                   0 2012-03-07         ...

  9. Oracle数据库常用的Sql语句整理

    Oracle数据库常用的Sql语句整理 查看当前用户的缺省表空间 : select username,default_tablespace from user_users; 2.查看用户下所有的表 : ...

随机推荐

  1. FPGA 内部详细架构你明白了吗?

    FPGA 芯片整体架构如下所示,大体按照时钟域划分的,即根据不同的工艺.器件速度和对应的时钟进行划分: FPGA 内部详细架构又细分为如下六大模块: 1.可编程输入输出单元(IOB)(Input Ou ...

  2. 为elastic的索引做快照并恢复快照到新集群

    1. 为指定的所有做快照 curl -XPUT "192.168.1.1:9200/_snapshot/my_backup/testindex_20170803?wait_for_compl ...

  3. 【呕心总结】python如何与mysql实现交互及常用sql语句

    9 月初,我对 python 爬虫 燃起兴趣,但爬取到的数据多通道实时同步读写用文件并不方便,于是开始用起mysql.这篇笔记,我将整理近一个月的实战中最常用到的 mysql 语句,同时也将涉及到如何 ...

  4. SPSS学习笔记参数检验—两配对样本t检验

    目的:检验两个有联系的正态总体的均值是否存在显著差异. 适用条件:有联系,正态总体,样本量要一样.一般可以分为一下四种: ①同一受试对象处理前后的对比:如对于糖尿病人,对同一组病人在使用新治疗方法前测 ...

  5. 夯实Java基础系列22:一文读懂Java序列化和反序列化

    本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutorial 喜欢的话麻烦点下 ...

  6. MongoDB 学习笔记之 $or与索引关系

    $or与索引关系: 对leftT集合的timestamp创建索引 执行$or语句:db.leftT.find({$or: [{ "timestamp" : 5},{"ag ...

  7. TCP/UDP的小事情

    UDP: 没有复杂的控制机制,面向无连接的通信服务. 常用于: 包总量少的通信 音视频传输(即时通信) TCP: 对传输.发送.通信.进行控制的协议.面向有连接的协议,只有在确认通信对端存在时才会发送 ...

  8. [Windows内核分析]KPCR结构体介绍 (CPU控制区 Processor Control Region)

    Windows内核分析索引目录:https://www.cnblogs.com/onetrainee/p/11675224.html 逆向分析操作系统内核代码至少需要具备两项技能: 段页汇编代码非常懂 ...

  9. Spring Boot (十四): 响应式编程以及 Spring Boot Webflux 快速入门

    1. 什么是响应式编程 在计算机中,响应式编程或反应式编程(英语:Reactive programming)是一种面向数据流和变化传播的编程范式.这意味着可以在编程语言中很方便地表达静态或动态的数据流 ...

  10. RMAN详细教程(二):备份、检查、维护、恢复

    RMAN详细教程(一):基本命令代码 一.创建增量备份 增量备份级别为0-4,但为方便备份管理,oracle建议只限于0级和1级. 1.差异增量备份(differential incremental ...