`
帅得被人看
  • 浏览: 18012 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

oracle题目1

阅读更多
==================================================================
使用scott/tiger用户下的emp表完成下列练习,表的结构说明如下

emp员工表 字段内容如下:

empno 员工号
ename 员工姓名
job 工作
mgr 上级编号
hiredate 受雇日期
sal 薪金
comm 佣金
deptno 部门编号


1.选择部门30中的所有员工.
select empno,ename,deptno from emp where deptno=30;
2.列出所有办事员(CLERK)的姓名,编号和部门编号.
select ename,empno,deptno from emp where job='CLERK';
3.找出佣金高于薪金的员工.
select ename,comm,sal from emp where comm>sal;
4.找出佣金高于薪金的60%的员工.
select ename,comm,sal,sal*0.6 from emp where comm>sal*0.6;
5.找出部门10中所有经理(MANAGER)和部门20中所有办事员(CLERK)的详细资料.
select * from emp where deptno=10 and job='MANAGER'or deptno=20 and job='CLERK';
6.找出部门10中所有经理(MANAGER),部门20中所有办事员(CLERK),既不是经理又不是办事员但其薪金大于或等于2000的所有员工的详细资料.
select * from emp where deptno=10 and job='MANAGER'or deptno=20 and job='CLERK' or job not in ('MANAGER','CLERK') and sal>=2000;
7.找出收取佣金的员工的不同工作.
select distinct(job) from emp where comm is not null;
8.找出不收取佣金或收取的佣金低于100的员工.
select ename,comm from emp where comm is null or comm<100;
9.找出各月倒数第3天受雇的所有员工.
select ename,hiredate from emp where hiredate=last_day(hiredate)-2;
10.找出早于12年前受雇的员工.('1984'-'1986'有一个先把字符串转换成数字的过程!所以结果是-2)
select ename,to_char(hiredate,'yyyy') from emp where to_number(to_char(hiredate,'yyyy'))<to_number(to_char(sysdate,'yyyy'))-12;
11.以首字母大写的方式显示所有员工的姓名.
select initcap(ename) from emp;
12.显示正好为5个字符的员工的姓名.
select ename from emp where length(ename)=5;
13.显示不带有"R"的员工的姓名.
select  ename from emp where  ename not like '%R%';
*select ename from emp where instr(ename,'R',1,1)=0;
14.显示所有员工姓名的前三个字符.
select substr(ename,1,3) from emp;

substr(字段,起始位置(第一位是1),截取长度 )

15.显示所有员工的姓名,用a替换所有"A"
replace(字段,原,后)
* select ename,replace(ename,'A','a') from emp;
16.显示满10年服务年限的员工的姓名和受雇日期.
select ename ,hiredate from emp where (sysdate-hiredate)/365 >=10;

*select ename,to_char(hiredate,'YYYY mm dd')  , to_char(sysdate,'YYYY mm dd')  from emp where (select to_char(sysdate,'YYYY') from dual) to_char(hiredate,'YYYY') >=10
17.显示员工的详细资料,按姓名排序.
select * from emp order by ename;
18.显示员工的姓名和受雇日期,根据其服务年限,将最老的员工排在最前面.
select ename,to_char(hiredate,'yyyy mm dd') from emp order by hiredate;
19.显示所有员工的姓名、工作和薪金,按工作的降序排序,若工作相同则按薪金排序.
* select ename,job,sal from emp order by job desc,sal; 
20.显示所有员工的姓名、加入公司的年份和月份,按受雇日期所在月排序,若月份相同则将最早年份的员工排在最前面.
*select ename,to_char(hiredate,'YYYY-mm') from emp order by to_char(hiredate,'mm'),to_char(hiredate,'YYYY') ;
21.显示在一个月为30天的情况所有员工的日薪金,忽略余数.
*select trunc(sal/30) from emp; 
22.找出在(任何年份的)2月受聘的所有员工。
*select ename,hiredate from emp where to_char(hiredate,'mm') ='02';  //效率高
select ename,hiredate ,to_char(hiredate,'mm') from emp  where to_char(hiredate,'mm')=2;
23.对于每个员工,显示其加入公司的天数.
*select ename,trunc(sysdate - hiredate) from emp;
24.显示姓名字段的任何位置包含"A"的所有员工的姓名.

        select ename from  emp where ename like '%A%';
25.以年月日的方式显示所有员工的服务年限. (大概)
select hiredate,sysdate,years,months,
       trunc(sysdate-add_months(hiredate,years*12+months)) days
   from (
         select hiredate,
                trunc(months_between(sysdate, hiredate)/12) years,
                 mod(trunc(months_between( sysdate, hiredate )),12) months
         from emp
        );

==================================================================

使用scott/tiger用户下的emp表和dept表完成下列练习,表的结构说明如下

emp员工表(empno员工号/ename员工姓名/job工作/mgr上级编号/hiredate受雇日期/sal薪金/comm佣金/deptno部门编号)

dept部门表(deptno部门编号/dname部门名称/loc地点)

工资 = 薪金 + 佣金

1.列出至少有一个员工的所有部门。
      select   dname  from  emp,dept where  emp.deptno=dept.deptno  group by dname;
      select   distinct  dname from  emp ,dept where  emp.deptno=dept.deptno;
     说明:      (1)如果   select 中出现的字段一定要出现在group by 中, 即  group   by  里出现的字段  一定要出现的在 select 中,
                 (2)如果 select 中出现的字段不出现在group by 中,则一定要出现在聚合函数中。
                 (3)默认的情况是按group by 中的字段来排序的,如果要用order  by  来自己排序,则order by 后的字段一定是 group  by  后                           的字段,不能是聚合函数  的字段
                 (4)对于想出现的字段,可用max()或min();
2.列出薪金比“SMITH”多的所有员工。
      select  ename , sal  from    emp   where  sal> (select  sal  from  emp  where upper (ename)='SMITH')
       说明:
                 子查询一定要用"( )" 扩起来。 
3.列出所有员工的姓名及其直接上级的姓名。

select a.ename,
(select ename from emp where empno= a.mgr) mgrname from emp a;

自连接
select a.ename,b.ename mgrname from emp a,emp b
where a.mgr = b.empno;


4.列出受雇日期早于其直接上级的所有员工。
      select  e.ename ,m.ename from  emp   e,  emp   m
      where e.mgr=m.empno and ( e.hiredate< m.hiredate);

5.列出部门名称和这些部门的员工信息,同时列出那些没有员工的部门。
      select   dname   ,emp.*   from  dept , emp
      where  emp.deptno(+)=dept.deptno
      order by  dname;
      说明:
           外连接(使一个都不能少,(+)对面的表里的字段都不能少)       
    
6.列出所有“CLERK”(办事员)的姓名及其部门名称。
      select  distinct  emp.ename,  dept.deptno  from   emp, dept
      where   emp.deptno=dept.deptno and upper(emp.job)='CLERK';


*7.列出最低薪金大于1500的各种工作。
     select   job   from   emp   group  by  job  having  min(sal)>1500;
 
8.列出在部门“SALES”(销售部)工作的员工的姓名,假定不知道销售部的部门编号。
     select  ename  from  emp,dept
     where  emp.deptno=dept.deptno and  dname='SALES';
9.列出薪金高于公司平均薪金的所有员工。
       select  ename ,sal  from emp
        where   sal>(select  avg(sal)  from emp );
10.列出与“SCOTT”从事相同工作的所有员工。

假定SCOTT从事一种工作:
select  ename  from  emp
where   job = ( select job  from  emp  where  ename='SCOTT');
假定SCOTT从事多种工作
        select  ename, job  from emp
        where  job   in( (select  job   from  emp where  upper(ename)='SCOTT')); 
11.列出薪金等于部门30中员工的薪金的所有员工的姓名和薪金。
        select  ename, sal  from emp
        where  sal   in ( select  sal  from  emp  where  deptno=30  );
12.列出薪金高于在部门30工作的所有员工的薪金的员工姓名和薪金。
         select  ename, sal  from emp
          where  sal  > ( select  max(sal)  from  emp  where  deptno=30  ); 
13.列出在每个部门工作的员工数量、平均工资和平均服务期限。
       select deptno "部门号" ,count(ename) "员工数量" ,avg(sal+nvl(comm,0))   "平均工资" ,trunc(avg(sysdate-hiredate)) "平均服务期限(天)"
       from emp
       group by deptno;
14.列出所有员工的姓名、部门名称和工资。
        select ename  姓名  ,dname  部门名称 ,sal+nvl(comm,0)  工资
        from emp,dept
        where emp.deptno=dept.deptno;
        from emp  e;
15.列出从事同一种工作但属于不同部门的员工的一种组合。
 
        select  distinct  e.deptno,e.job from emp e,emp m
        where e.deptno!=m.deptno and e.job=m.job
        order by  e.job;

16.列出所有部门的详细信息和部门人数。
        select a.*,(select count(*) from emp where deptno = a.deptno)   部门人数    from dept a;

17.列出各种工作的最低工资。
     select job ,min(sal+nvl(comm,0)) "最低工资"
     from emp
     group by job;
18.列出各个部门的MANAGER(经理)的最低薪金。
select min(sal+nvl(comm,0))
from emp
where job='MANAGER'
group by  deptno

//要求显示部门名称
         select dname,min(sal)
         from emp,dept
        where emp.deptno=dept.deptno and  upper(job)='MANAGER'
        group    by  dname

19.列出所有员工的年工资,按年薪从低到高排序。
       select ename,to_char((sal+nvl(comm,0))*12,'9999,9999.00') "年工资"
      from emp
      order by 2;


-----orcle的等连接
SELECT * FROM EMP E ,DEPT D WHERE E.DEPTNO=D.DEPTNO;
-----orcla的外连接
SELECT * FROM EMP E ,DEPT D WHERE E.DEPTNO(+)=D.DEPTNO;
+放在没有匹配行的表一侧,所以dept表的记录完全显示
分享到:
评论

相关推荐

    oracle面试题目及答案

    ### Oracle 面试题目详解 #### 1. 创建表空间 **题目描述:** 创建一个名为`neuspace`的表空间,其中包含一个数据文件`neudata.dbf`,该文件位于`D:\data`目录下,并且初始大小为200MB。配置该数据文件可以自动扩展...

    oca oracle 11g 题目

    1. **数据库安装与配置**:了解如何在不同操作系统上安装Oracle 11g,包括选择正确的安装类型(如企业版、标准版),配置数据库实例,设置初始化参数文件(init.ora或spfile)。 2. **SQL基础**:掌握SQL语言,包括...

    oracle考试题目.docx

    根据提供的文档内容,我们可以归纳出一系列关于Oracle数据库的基础知识点及相关操作。下面将详细解析文档中的问题及答案: ### 一、理论部分 1. **为什么要给表指定主键?** - 主键确保了表中每一行记录的唯一性...

    Oracle Goldengate考试题目

    根据提供的文件信息,我们可以归纳出以下关于Oracle GoldenGate考试的关键知识点: ...以上是基于题目描述总结的关键知识点,希望能够帮助考生更好地理解和准备Oracle GoldenGate相关的考试内容。

    Oracle题目及答案

    这个"Oracle题目及答案"的压缩包很可能包含了关于Oracle数据库的各种技术问题及其解决方案,旨在帮助学习者或专业人士提升Oracle技能。下面,我们将深入探讨Oracle数据库的一些核心概念和技术点。 1. **SQL语言**:...

    初级程序员面试的oracle题目

    ### 初级程序员面试的Oracle题目解析 #### 颈椎题目概述 本文档提供了一组针对初级程序员的Oracle数据库面试题目,旨在帮助求职者更好地准备面试中的技术环节。题目涵盖了基本的SQL操作,包括更新记录、筛选重复...

    45道Oracle 题目,及答案。。

    1. **SQL基础**:Oracle数据库操作主要依赖SQL(结构化查询语言),包括SELECT语句用于查询数据,INSERT用于插入数据,UPDATE用于更新数据,以及DELETE用于删除数据。在"sql查询练习问题部分.doc"和"SQLSelect.sql...

    oracle数据库面试题目汇总.pdf

    Oracle 数据库面试题目汇总 本资源摘要信息将涵盖 Oracle 数据库面试题目汇总的关键知识点,涵盖字符串操作函数、事务概念、查询系统时间、触发器的作用、数字函数、关系数据库系统与文件数据库系统的区别、触发器...

    极详细oracle数据库面试题目汇总

    极详细oracle数据库面试题目汇总,按照这个思路去复习就可以了

    oracle 笔试面试题目

    以下是对Oracle笔试面试题目中涉及的一些关键知识点的详细解释: 1. **冷备份与热备份**: - **冷备份**:在数据库关闭后进行,简单且适用于所有模式,但不能在备份过程中使用数据库。 - **热备份**:在数据库...

    Oracle内部机试题目

    根据给定的文件信息,以下是对“Oracle内部机试题目”的详细解析,涵盖了北大青鸟Oracle内部机试中涉及的关键知识点: ### 1. Oracle连接与权限 在Oracle数据库环境中,连接与权限管理是基础而重要的操作。题目中...

    Oracle SQL 测试题目

    Oracle SQL 是一种强大的数据库查询语言...以上是对测试题目中涉及的Oracle SQL知识的详细解释,涵盖了统计、联接、子查询、排序、转换函数、序列和约束等核心概念。这些知识点对于理解并有效使用Oracle SQL至关重要。

    unix 和oracle的题目

    1. **查看系统信息** - **CPU信息**:通过`sar -u t n`可以查看CPU利用率,其中%usr、%sys、%wio和%idle分别表示用户进程、系统进程、等待I/O和空闲时间的比例。 - **内存和交换区**:`vmstat`可以报告内存统计...

    Oracle相关的题目及答案

    这个压缩包文件包含的"Oracle相关的题目及答案"很可能是一系列关于Oracle数据库管理、SQL查询、数据库设计以及性能优化等方面的问题和解答,这对于学习和提升Oracle技能非常有帮助。下面将详细解释这些知识点。 1. ...

    ORACLE面试测试题目

    根据提供的信息,我们可以总结出以下详细的Oracle知识点: ### 1....以上是对给定Oracle面试测试题目的详细解答。这些知识点涵盖了Oracle数据库的基础操作、高级功能以及常见面试问题的解决方案。

    Oracle习题集..

    1. SQL基础:SQL(Structured Query Language)是用于管理和处理关系型数据库的语言。习题可能涉及选择(SELECT)、插入(INSERT)、更新(UPDATE)、删除(DELETE)等基本操作,以及联合(UNION)、子查询、连接...

    Oracle 考试题目

    1. 数据库基础:Oracle考试通常会涵盖数据库的基本概念,如关系型数据库模型、ACID属性(原子性、一致性、隔离性、持久性)、SQL语言等。考生需要理解表、视图、索引、存储过程、触发器等数据库对象。 2. SQL查询:...

    Oracle面试题集锦

    以下是对题目中涉及的一些关键知识点的详细解释: 1. **冷备份与热备份**:冷备份是在数据库关闭状态下进行的,它简单、快速,适用于所有模式的数据库,但无法做到在线恢复。热备份则在数据库运行时进行,支持归档...

    oracle 10G经典面试题目

    以下是一些Oracle 10G面试中可能会遇到的经典题目及详细解释: 1. **什么是Oracle数据库?** Oracle数据库是一款关系型数据库管理系统(RDBMS),由甲骨文公司开发,广泛应用于企业级数据存储与管理,支持多种操作...

Global site tag (gtag.js) - Google Analytics