Oracle数据库习题

以下习题都已Oracle数据库中默认表为主体

1、列出至少有一个员工的所有部门。

SELECT DISTINCT D.DNAME FROM EMP E,DEPT D WHERE E.DEPTNO=D.DEPTNO;

SELECT * FROM DEPT WHERE DEPTNO IN(SELECT DISTINCT DEPTNO FROM EMP);

SELECT DISTINCT D.DNAME FROM EMP E JOIN DEPT D USING(DEPTNO);

2、列出薪金比“SMITH”多的所有员工。(大于最大薪水SMITH员工)

SELECT ENAME FROM EMP WHERE SAL>(SELECT SAL FROM EMP WHERE ENAME =‘SMITH‘);

3、列出所有员工的姓名及其直接上级的姓名。
SELECT E.ENAME,M.ENAME FROM EMP E,EMP M WHERE E.MGR=M.EMPNO;

SELECT E.ENAME,M.ENAME FROM EMP E JOIN EMP M ON(E.MGR=M.EMPNO);

4、列出受雇日期早于其直接上级的所有员工。

SELECT E.ENAME FROM EMP E,EMP M WHERE E.MGR=M.EMPNO AND E.HIREDATE<M.HIREDATE;
SELECT E.ENAME FROM EMP E JOIN EMP M ON(E.MGR=M.EMPNO AND E.HIREDATE<M.HIREDATE);

5、列出部门名称和这些部门的员工信息,包括那些没有员工的部门。

SELECT D.DNAME,E.ENAME FROM EMP E FULL OUTER JOIN DEPT D USING(DEPTNO);

6、列出所有job为“CLERK”(办事员)的姓名及其部门名称。

SELECT E.ENAME,D.DNAME FROM EMP E FULL OUTER JOIN DEPT D USING(DEPTNO) WHERE JOB=‘CLERK‘;

SELECT E.ENAME,D.DNAME FROM EMP E,DEPT D WHERE E.DEPTNO=D.DEPTNO AND JOB =‘CLERK‘;

7、列出最低薪金大于1500的各种工作。

SELECT JOB,MIN(SAL) FROM EMP GROUP BY JOB HAVING MIN(SAL)>1500;

8、列出在部门“SALES”(销售部)工作的员工的姓名,假定不知道销售部的部门编号。

SELECT * FROM EMP E JOIN DEPT D USING (DEPTNO) WHERE D.DNAME=‘SALES‘;

9、列出薪金高于公司平均薪金的所有员工。
SELECT ENAME,SAL FROM EMP WHERE SAL>(SELECT AVG(SAL) FROM EMP);

10、列出与“SCOTT”从事相同工作的所有员工。

SELECT JOB FROM EMP WHERE ENAME=‘SOCTT‘;

SELECT ENAME FROM EMP WHERE ENAME<>‘SCOTT‘AND JOB=(SELECT JOB FROM EMP WHERE ENAME=‘SCOTT‘);

11、列出薪金等于部门30中员工的薪金的所有员工的姓名和薪金。

SELECT ENAME,SAL FROM EMP WHERE SAL IN (SELECT SAL FROM EMP WHERE DEPTNO=30)AND DEPTNO<>30;

12、列出薪金高于在部门30工作的所有员工的薪金的员工姓名和薪金。

SELECT ENAME,SAL FROM EMP WHERE SAL>ALL(SELECT SAL FROM EMP WHERE DEPTNO=30);

13、列出在每个部门工作的员工数量、平均工资和平均服务期限。
SELECT D.DNAME,COUNT(E.ENAME),AVG(SAL),AVG(MONTHS_BETWEEN(SYSDATE,HIREDATE)/12)FROM EMP E,DEPT D WHERE E.DEPTNO=D.DEPTNO GROUP BY D.DNAME;

14、列出所有员工的姓名、部门名称和工资。

SELECT E.ENAME,D.DNAME,SAL FROM EMP E,DEPT D WHERE E.DEPTNO=D.DEPTNO;

15、列出从事同一种工作但属于不同部门的员工的一种组合。

select distinct M.ename from emp e,emp m where e.job=m.job and e.deptno<>m.deptno;

16、列出所有部门的详细信息和部门人数。

SELECT d.DNAME,COUNT(E.ENAME) FROM EMP E ,DEPT D WHERE E.DEPTNO=D.DEPTNO GROUP BY D.DNAME;

17、列出各种工作的最低工资。
SELECT JOB,MIN(SAL) FROM EMP E,DEPT D WHERE E.DEPTNO=D.DEPTNO GROUP BY E.JOB;

SELECT JOB,MIN(SAL) FROM EMP E JOIN DEPT D ON(E.DEPTNO=D.DEPTNO) GROUP BY E.JOB;

18、列出各个部门的MANAGER(经理)的最低薪金(job为MANAGER)。

SELECT DEPTNO,MIN(SAL) FROM EMP WHERE JOB=‘MANAGER‘GROUP BY DEPTNO;

19、列出所有员工的年工资,按年薪从低到高排序。

SELECT ENAME,(SAL*12+nvl(comm,0)*12)年薪 FROM EMP ORDER BY 年薪;

SELECT ENAME,(SAL*12+nvl(comm,0)*12)年薪 FROM EMP ORDER BY 1;

时间: 2024-07-30 12:29:39

Oracle数据库习题的相关文章

Oracle数据库——触发器的创建与应用

一.涉及内容 1.理解触发器的概念.作用和类型. 2.练习触发器的创建和使用. 二.具体操作 (实验) 1.利用触发器对在scott.emp表上执行的DML操作进行安全性检查,只有scott用户登录数据库后才能向该表中执行DML操作.(第1题中,user是系统函数,返回当前用户.字符串中使用两个单引号表示一个单引号.) 要求:分别以system用户和scott用户对emp 表执行DML操作,试验触发器的运行效果. (1)在scott用户下创建触发器 语句: create or replace t

Oracle数据库——SQL高级查询

一.涉及内容 1.掌握SELECT语句的多表连接查询. 2.掌握SELECT语句的子查询. 二.具体操作 (一)根据Oracle数据库scott方案下的emp表和dept表,完成下列操作: 1.查询所有工种为CLERK的员工的姓名及其部门名称. select ename,dname from scott.emp t1 inner join scott.dept t2 on t1.deptno=t2.deptno where job='CLERK'; 2.查询所有部门及其员工信息,包括那些没有员工

win7 64位系统 PB连接oracle数据库出现“oracle library oci.dll could not be loaded”问题的解决方法

今天与大家分享一个自己的学习笔记,希望能给遇到同样问题的人带来帮助. 不知道大家在win7 64位系统下用 PB连接oracle数据库时,是否遇到过“oracle library oci.dll could not be loaded”问题. 今天,在win7 64位系统下用 PB连接oracle数据库时,一直出现上述错误,在百度上找了很久,都没有找到一个完整的解决方案,咨询了很多人,(他们都说是我的PB和oracle没装好,但我装的时候没出现任何问题,一切都很顺利,而且PB和oracle都能正

使用PL/SQL连接oracle数据库,并将数据进行导出备份和导入恢复

这种操作百度一搜一大片,今天整理以前做的项目时自己备份了一下数据库,试着将数据进行导出备份和导入恢复了一下:下面是操作过程: 1 开启服务 2 配置监听 找到下面文件: 记事本打开 在导航器的下拉菜单中选择:将数据库添加到树, 然后点击确定 然后使用PL/SQL就可以登录了: 3 建立新表空间和新用户 使用system用户登录:执行如下sql语句建立表空间和新用户,以及给用户授权 建立表空间 Create tablespace myyyjc datafile 'D:\app\Administra

利用SHELL脚本来验证Oracle数据库RMAN备份集的有效性

利用SHELL脚本来验证Oracle数据库RMAN备份集的有效性 作者:赵全文  网名:guestart 我们生产环境的Oracle数据库都做了RMAN备份,是采用了一周的RMAN备份保留策略:除了使用RMAN备份以外,我们还使用了爱数(Eisoo)备份软件来进行备份,可以说是做到了有备无患.可是,如果有一天,Oracle数据库由于主机层面硬件原因或是数据库层面的原因不能对外提供高可用服务的时候,假设数据丢了一大部分,我们只有用RMAN备份来进行恢复,再如果发现,RMAN备份失效了,那就往地缝里

PL/SQLDeveloper导入导出Oracle数据库方法

前一篇博客介绍了Navicat工具备份Oracle的方法,这篇博客介绍一下使用PL/SQL Developer工具导入导出Oracle数据库的方法. PL/SQL Developer是Oracle数据库用于导入导出数据库的主要工具之一,本文主要介绍利用PL/SQL导入导出Oracle数据库的过程. 1.Oracle数据库导出步骤 1.1 Tools→Export User Objects...选项,导出.sql文件. 说明:此步骤导出的是建表语句(包括存储结构). 1.2 Tools→Expor

Linux环境下Oracle数据库启动停止命令

切换root至oracle数据库账号 su – oracle 查看数据库服务状态: ps -ef |grep oracle netstat –an|grep 1521 查看数据库监听状态: [[email protected] ~]$ lsnrctl status LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 25-NOV-2016 03:36:45 Copyright (c) 1991, 2009, Oracle. All righ

Oracle数据库中文乱码问题

最近碰到Oracle乱码问题,刚开始甚是头疼,以前在合肥出差的时候,这种问题也碰到过,当时直接抛给了“乌压压一片”(一个搞数据的同事儿),这次没办法躲过,只好硬着头皮上.虽然我这次碰到的是Oracle乱码问题中的一个,但是我决定将这个乱码问题整理清楚(不整清楚,就觉得身边有个定时炸弹,怕下次整数据库的时候会突然又爆炸). 解决这个问题的关键在于理解字符集的概念,所以在正文开始之前,有必要先提一下字符集的相关知识!(这部分知识,对于解决j2ee中文参数传递过程中出现的乱码,也非常具有参考意义) 一

Oracle数据库语句大全

转自:http://blog.sina.com.cn/s/blog_b5d14e2a0101c56z.html ORACLE支持五种类型的完整性约束 NOT NULL (非空)--防止NULL值进入指定的列,在单列基础上定义,默认情况下,ORACLE允许在任何列中有NULL值. CHECK (检查)--检查在约束中指定的条件是否得到了满足. UNIQUE (唯一)--保证在指定的列中没有重复值.在该表中每一个值或者每一组值都将是唯一的. PRIMARY KEY (主键)--用来唯一的标识出表的每