`
kidiaoer
  • 浏览: 822132 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

oracle练习题

阅读更多
oracle练习题


/*1、选择在部门30中员工的所有信息*/
select * from scott.emp where deptno = '30'
/*2、列出职位为(MANAGER)的员工的编号,姓名 */
select empno, ename from scott.emp where job = 'MANAGER'
/*3、找出奖金高于工资的员工*/
select * from scott.emp where comm > sal
/*4、找出每个员工奖金和工资的总和 */
select ename, sal + nvl(comm, 0) from scott.emp
/*5、找出部门10中的经理(MANAGER)和部门20中的普通员工(CLERK) */
select *
  from scott.emp
 where deptno = '10'
   and job = 'MANAGER'
union
select *
  from scott.emp
 where job = 'CLERK'
   and deptno = '20'
/*6、找出部门10中既不是经理也不是普通员工,而且工资大于等于2000的员工 */
select *
  from scott.emp
 where job != 'MANAGER'
   and job != 'CLERK'
   and sal > 2000
/*7、找出有奖金的员工的不同工作 */
select distinct(job) from scott.emp where comm is not null
/*8、找出没有奖金或者奖金低于500的员工*/ 
select *
  from scott.emp
 where comm is not null
   and comm > 500
/*9、显示雇员姓名,根据其服务年限,将最老的雇员排在最前面 */
select ename
  from scott.emp
 order by (months_between(sysdate, hiredate) / 12) desc
 
 select ename,hiredate from scott.emp order by hiredate
/*10、找出每个月倒数第三天受雇的员工*/
select * from scott.emp where hiredate = last_day(hiredate) - 2
/*11、分别用case和decode函数列出员工所在的部门,deptno=10显示'部门10', 
 deptno=20显示'部门20' 
 deptno=30显示'部门30' 
 deptno=40显示'部门40' 
 否则为'其他部门'*/
 select ename,
        case deptno
          when 10 then
           '部门10'
          when 20 then
           '部门20'
          when 30 then
           '部门30'
          when 40 then
           '部门40'
          else
           '其他部门'
        end 工资情况
   from scott.emp
 
 select ename,
        decode(deptno,
               10,
               '部门10',
               20,
               '部门20',
               30,
               '部门30',
               40,
               '部门40',
               '其他部门') 工资情况
   from scott.emp
/*12、分组统计各部门下工资>500的员工的平均工资*/
select avg(sal) from scott.emp where sal > 500 group by deptno
/*13、统计各部门下平均工资大于500的部门*/
select deptno from scott.emp group by deptno having avg(sal) > 500
/*14、算出部门30中得到最多奖金的员工奖金 */
select max(comm) from scott.emp where deptno = 30
/*15、算出部门30中得到最多奖金的员工姓名*/
select ename
  from scott.emp
 where deptno = 30
   and comm = (select max(comm) from scott.emp where deptno = 30)
/*16、算出每个职位的员工数和最低工资*/
select count(ename), min(sal), job from scott.emp group by job
/*17、列出员工表中每个部门的员工数,和部门no */
select count(ename), deptno from scott.emp group by deptno
/*18、得到工资大于自己部门平均工资的员工信息*/
select *
  from scott.emp e
 where sal > (select avg(sal) from scott.emp where e.deptno = deptno)
 
  select *
    from scott.emp e1,
         (select avg(sal) sals, deptno from scott.emp group by deptno) e2
   where sal > sals
     and e1.deptno = e2.deptno
/*19、分组统计每个部门下,每种职位的平均奖金(也要算没奖金的人)和总工资(包括奖金) */
select avg(nvl(comm,0)), sum(sal + nvl(comm, 0))
  from scott.emp
 group by deptno,job
/*20、笛卡尔集*/
select * from scott.emp, scott.dept
/*21、显示员工ID,名字,直属主管ID,名字*/
select empno,
       ename,
       mgr,
       (select ename from scott.emp e1 where e1.empno = e2.mgr) 直属主管名字
  from scott.emp e2
/*22、DEPT表按照部门跟EMP表左关联*/
select *
  from scott.dept, scott.emp
 where scott.dept.deptno = scott.emp.deptno(+)
/*23、使用此语句重复的内容不再显示了*/
select distinct (job) from scott.emp
/*24、重复的内容依然显示 */
select *
  from scott.emp
UNION ALL
select * from scott.emp
/*23和24题和22题是一样的 */

/*25、只显示了两个表中彼此重复的记录。*/
select *
  from scott.dept, scott.emp
 where scott.dept.deptno(+) = scott.emp.deptno
/*26、只显示了两张表中的不同记录*/
select * from scott.emp union select * from scott.emp
minus 
(select * from scott.emp intersect select * from scott.emp)

(select * from scott.emp minus select * from scott.emp)
union 
(select * from scott.emp minus select * from scott.emp)
   表结构相同  先union 只能有 - 
/*27、列出员工表中每个部门的员工数,和部门no */
select count(ename), deptno from scott.emp group by deptno
/*28、列出员工表中每个部门的员工数(员工数必须大于3),和部门名称*/ 
select count(deptno),
       deptno,
       (select dname from scott.dept where scott.dept.deptno = e1.deptno)
  from scott.emp e1
 group by deptno having count(deptno)>3
/*29、找出工资比jones多的员工*/
select *
  from scott.emp
 where sal > (select sal from scott.emp where ename = 'JONES')
/*30、列出所有员工的姓名和其上级的姓名 */
select ename,
       (select ename from scott.emp e1 where e1.empno = e2.mgr) 上级的姓名
  from scott.emp e2
/*31、以职位分组,找出平均工资最高的两种职位 */
select job
  from scott.emp
 group by job
having avg(sal) in (select max(sal) from scott.emp group by job )

select job
  from (select job, avg(sal)
          from scott.emp
         group by job
         order by avg(sal) desc)
 where rownum <= 2
 
 最大的:
 select max(max_sal)
   from (select job, avg(sal) max_sal from scott.emp group by job)
/*32、查找出不在部门20,且比部门20中任何一个人工资都高的员工姓名、部门名称*/

select ename, dname
  from scott.emp e1, scott.dept e2
 where e1.deptno = e2.deptno
   and e1.deptno <> 20
   and sal > (select max(sal) from scott.emp where deptno = '20')
           
/*33、得到平均工资大于2000的工作职种 */
select job from scott.emp group by job having avg(sal) > 2000
/*34、分部门得到工资大于2000的所有员工的平均工资,并且平均工资还要大于2500 */
select avg(sal)
  from scott.emp
 where sal > 2000
 group by deptno
having avg(sal) > 2500
/*35、得到每个月工资总数最少的那个部门的部门编号,部门名称,部门位置 */
select deptno, dname, loc
  from scott.dept
 where deptno in (select deptno
                   from scott.emp
                  group by deptno
                 having sum(sal) = (select min(sum(sal))
                                     from scott.emp
                                    group by deptno))

select * from scott.dept
/*36、分部门得到平均工资等级为2级(等级表)的部门编号 */
select deptno
  from scott.emp
 group by deptno
having avg(sal) between (select losal from scott.salgrade where grade = 2) and (select hisal
                                                                                  from scott.salgrade
                                                                               where grade = 2)
                                                                               
select avg(sal) from scott.emp group by deptno
select * from scott.salgrade
/*37、查找出部门10和部门20中,工资最高第3名到工资第5名的员工的员工名字,部门名字,部门位置*/
select a.ename, dname, loc
  from (select *
          from (select rownum rn, deptno, empno, sal, ename
                  from (select deptno, empno, sal, ename
                          from scott.emp
                         where deptno in (10, 20)
                           and rownum <= 5
                         order by sal desc))
         where rn between 3 and 5) a,
       scott.dept b
 where a.deptno = b.deptno
           
           
select deptno, ename
  from (select empno, deptno, ename
          from (select rownum rn, deptno, empno, sal, ename
                  from (select deptno, empno, sal, ename
                          from scott.emp
                         where deptno in (10, 20)
                         order by sal desc))
         where rn between 3 and 5)
  

/*38、查找出收入(工资加上奖金),下级比自己上级还高的员工编号,员工名字,员工收入*/
select empno, ename, sal + nvl(comm, 0)
  from scott.emp e1
 where sal + nvl(comm, 0) >
       (select sal + nvl(comm, 0) from scott.emp where empno = e1.mgr)

select * from scott.emp
select ename, sal + nvl(comm, 0) from scott.emp
/*39、查找出职位和'MARTIN' 或者'SMITH'一样的员工的平均工资 */
select avg(sal)
  from scott.emp
 where job in (select job
                 from scott.emp
                where ename = 'MARTIN'
                   or ename = 'SMITH')
/*40、查找出不属于任何部门的员工 */
select * from scott.emp where deptno  is null
select * from scott.emp where deptno not in (select deptno from scott.emp)
/*41、按部门统计员工数,查处员工数最多的部门的第二名到第五名(列出部门名字,部门位置)*/
select dname, loc
  from (select *
          from (select rownum rn, deptno
                  from (select deptno, count(*)
                          from scott.emp
                         group by deptno
                         order by count(*) desc))
         where rn between 2 and 5) a,
       scott.dept b
 where a.deptno = b.deptno
  
  select count(*) from scott.emp group by deptno
/*42、查询出king所在部门的部门号\部门名称\部门人数 (多种方法)*/
select sc.deptno, dname, count(*)
  from scott.emp sc, scott.dept de
 where sc.deptno = ((select deptno from scott.emp where ename = 'KING'))
   and de.deptno = sc.deptno
 group by sc.deptno, dname


/*43、查询出king所在部门的工作年限最大的员工名字*/ 
select *
  from scott.emp
 where hiredate =
       (select min(hiredate)
          from scott.emp
         where deptno in (select deptno from scott.emp where ename = 'KING'))
   and deptno = (select deptno from scott.emp where ename = 'KING')
/*44、查询出工资成本最高的部门的部门号和部门名称 */
select deptno, dname
  from scott.dept
 where deptno = (select deptno
                   from scott.emp
                  group by deptno
                 having sum(sal) = (select max(sum(sal))
                                     from scott.emp
                                    group by deptno))

select * from scott.emp for update

分享到:
评论

相关推荐

    适合新手的oracle练习题集合

    这个“适合新手的Oracle练习题集合”旨在帮助初学者巩固理论知识,提高实践技能,同时通过解决实际问题,如安全认证和转账问题,加深对Oracle数据库的理解。 1. **SQL基础**:在Oracle中,SQL(结构化查询语言)是...

    Oracle练习题初学者适用

    这份"Oracle练习题初学者适用"的压缩包提供了一系列的DOC文件,旨在帮助初学者系统地学习和巩固Oracle的相关知识。 首先,我们可以从“Oracle习题”这个文件名推测,这些文档可能包含了各种类型的题目,如选择题、...

    oracle练习题 总结了一下几个经典的

    这些练习题涵盖了Oracle数据库的基本查询技巧,包括子查询、连接操作、聚合函数、条件判断以及各种内置函数的使用。通过解决这些问题,可以深入理解Oracle SQL和PL/SQL的用法,并提升在实际数据库管理中的技能。

    oracle练习题关于触发器的作业

    在"oracle练习题关于触发器的作业"中,你可能需要设计和实现各种类型的触发器来解决实际问题。例如,你可能需要创建一个触发器来确保表中的某个字段始终具有唯一的值,或者在更新记录时自动更新另一相关表的数据。 ...

    Oracle 练习题答案

    根据提供的Oracle练习题答案及其描述,我们可以逐一解析并总结出其中涉及的重要知识点: ### 1. 查询所有学生信息以及所有课程信息 ```sql select * from student; select * from course; ``` - **知识点**: `...

    北大数据库原理上机题 Oracle练习题与答案

    【北大数据库原理上机题 Oracle练习题与答案】 在学习数据库原理时,Oracle数据库系统是一个重要的实践平台,因其强大的功能和广泛的应用而受到重视。北京大学的数据库原理课程中,学生通常会接触到一系列针对...

    Oracle练习题很内容全面丰富

    针对"Oracle练习题很内容全面丰富"这一主题,我们可以深入探讨Oracle数据库的相关知识点,帮助学习者巩固理论知识,提升实战技能。 1. **SQL语言基础**:Oracle数据库操作主要依赖于SQL(结构化查询语言),包括DML...

    oracle 练习题一

    根据给定的Oracle练习题,我们可以提取出一系列与Oracle SQL相关的知识点。这些知识点不仅包括了基本的表结构创建、数据插入等操作,还涉及到了较为复杂的查询语句编写。接下来,我们将逐一分析并解释这些知识点。 ...

    经典资料2----Oracle练习题!

    这份“经典资料2----Oracle练习题!”显然是为了帮助学习者提升在Oracle数据库领域的技能和理解。Oracle的学习涵盖了SQL查询、数据库设计、存储结构、性能优化、安全管理等多个方面,而练习题则是检验和巩固理论...

    oracle练习题.zip

    这个"oracle练习题.zip"压缩包包含了一些关于Oracle数据库操作的练习资料,主要关注查询语句和基本的数据操作。 首先,"table.sql"文件很可能是创建数据库表的SQL脚本。在Oracle中,创建表是数据库设计的基础,它...

    经典oracle练习题

    本资料集中的“经典Oracle练习题”旨在帮助你巩固Oracle的基础知识,提高解决实际问题的能力,同时也为面试做好充分准备。 1. **SQL查询基础** - 学习如何使用SELECT语句进行数据检索,包括基本的SELECT语句,如...

    oracle练习题-好好联系

    【Oracle练习题详解】 Oracle是世界上最流行的数据库管理系统之一,它提供了强大的数据管理和处理能力。以下是一些基于Oracle的练习题及其解析,旨在帮助你更好地理解和掌握Oracle SQL。 1. Oracle not available...

    Oracle 练习题及答案

    根据提供的信息,我们可以总结出以下Oracle数据库练习题及其解析,主要涵盖了SQL查询、子查询、聚合函数等知识点。 ### 1. 查询所有员工的姓名和部门编号 ```sql SELECT ename, deptno FROM emp; ``` 这个查询非常...

    21天学通ORACLE练习题答案

    "21天学通ORACLE练习题答案"这个主题旨在帮助学习者通过一系列练习题深入理解Oracle的相关概念和技术。以下是对相关知识点的详细解释: 1. **Oracle安装配置**: - **硬件环境**:Oracle 10g的最低要求是1024MB...

    Oracle练习题及答案(二).doc

    【Oracle练习题及答案(二)】 在Oracle数据库管理中,熟悉SQL查询是至关重要的,以下是一些关于SQL查询的示例题目及其解答,涵盖了多种常见的查询技巧。 1. 列出至少有一个雇员的所有部门 这个查询使用了子查询来...

    Oracle练习题及答案(一).doc

    以下是一些基于给定Oracle练习题的知识点: 1. **子查询**:在第一题中,我们看到一个简单的子查询来选取部门30的雇员。这种用法展示了如何在WHERE子句中使用子查询来过滤数据。 2. **JOIN操作**:第二题演示了...

    oracle 练习题

    针对“Oracle练习题”的主题,我们将深入探讨Oracle数据库的关键概念、功能以及常见问题的解决策略。 1. **Oracle基础** - 数据库架构:Oracle采用客户/服务器(C/S)和浏览器/服务器(B/S)模型,包括数据库...

Global site tag (gtag.js) - Google Analytics