Oracle数据库查询练习及答案

Oracle数据库查询练习及答案
Oracle数据库查询练习及答案

1 找出佣金高于薪金60%的雇员。

SELECT * FROM emp WHERE comm>sal*0.6;

2 找出部门10中所有经理和部门20中所有办事员的详细资料。

SELECT * FROM emp WHERE deptno=10 AND JOB='MANAGER' OR deptno=20 AND job='CLERK';

3 找出部门10中所有经理,部门20中所有办事员以及既不是经理又不是办事员但其薪金大于或等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;

SELECT * FROM emp WHERE deptno=10 AND JOB='MANAGER' OR deptno=20 AND job='CLERK' OR (JOB<>'MANAGER' AND JOB<>'MANAGER' AND SAL>=2000);

4 找出收取佣金的雇员的不同工作。

SELECT DISTINCT JOB FROM EMP WHERE COMM IS NOT NULL;

5 找出不收取佣金或收取的佣金低于300的雇员。

SELECT * FROM EMP WHERE COMM IS NULL OR COMM<300;

6 找出各月最后一天受雇的所有雇员。

SELECT * FROM EMP WHERE HIREDA TE=LAST_DAY(HIREDATE);

--找出各月最后受雇的所有雇员

SELECT * FROM emp WHERE hiredate IN (SELECT maxh FROM (SELECT MAX(HIREDATE) maxh,EXTRACT(MONTH FROM hiredate)FROM EMP GROUP BY EXTRACT(MONTH FROM hiredate)));

7 找出晚于26年之前受雇的雇员。

SELECT * FROM emp WHERE months_between(SYSDA TE,hiredate)<=26*12;

8 显示只有首字母大写的的所有雇员的姓名。

SELECT * FROM emp WHERE ename=initcap(ename);

9 显示正好为5个字符的雇员的姓名。

SELECT * FROM emp WHERE length(ename)=5;

10显示不带有“R”的雇员姓名。

SELECT * FROM emp WHERE instr(ename,'R')=0;

SELECT * FROM emp WHERE ename NOT LIKE '%R%';

11显示所有雇员的姓名的前三个字符。

SELECT substr(ename,1,3) AS en3 FROM emp;

12显所有雇员的姓名,用a替换所有“A”。

SELECT REPLACE(ename,'A','a') FROM emp;

13显示所有雇员的姓名以及满10年服务年限的日期。

SELECT ENAME,HIREDA TE,ADD_MONTHS(HIREDA TE,120) AS H_10Y FROM EMP;

14显示雇员的详细资料,按姓名排序。

SELECT * FROM EMP ORDER BY ENAME;

15显示雇员姓名,根据其服务年限,将最老的雇员排在最前面。

SELECT ENAME,HIREDA TE FROM EMP ORDER BY HIREDATE;

16显示所有雇员的姓名、工作和薪金,按工作内的工作的降序顺序顺序排序,而工作按薪金排序。

SELECT ENAME,JOB,SAL FROM EMP ORDER BY JOB DESC,SAL;

17显示所有雇员的姓名和加入公司的年份和月份,按雇员受雇日所在月排序,并将最早年份的项目排在最前面。

SELECT ENAME,TO_CHAR(HIREDA TE,'YYYY-MM') AS Y_M FROM EMP ORDER BY TO_CHAR(HIREDATE,'MM'),TO_CHAR(HIREDA TE,'YYYY');

18显示在一个月为30天的情况下所有雇员的日薪金,取整。

SELECT ROUND(SAL/30) AS SAL FROM EMP;

19找出在(任何年份的)2月受聘的所有雇员。

SELECT * FROM EMP WHERE TO_CHAR(HIREDATE,'MM')='02';

20对于每个雇员,显示其加入公司的天数。

SELECT CEIL(SYSDA TE-HIREDA TE) AS DY FROM EMP;

21显示姓名字段的任何位置,包含“A”的所有雇员的姓名。

SELECT ENAME FROM EMP WHERE ENAME LIKE '%A%';

SELECT ENAME FROM EMP WHERE INSTR(ENAME,'A')>0;

22以年、月和日显示所有雇员的服务年限。

SELECT HIREDATE,FLOOR(MONTHS_BETWEEN(SYSDA TE,HIREDATE)/12) AS Y,MOD(FLOOR(MONTHS_BETWEEN(SYSDATE,HIREDA TE)),12) AS M,MOD(FLOOR(SYSDATE-HIREDATE),30) AS D FROM EMP;

23列出至少有一个雇员的所有部门。

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

24列出薪金比“SMITH”多的所有雇员。

SELECT * FROM EMP WHERE SAL>(SELECT SAL FROM EMP WHERE

ENAME='SMITH');

25列出所有雇员的姓名及其上级的姓名。

SELECT ygb.ename AS empnm,sjb.ename AS mgrnm FROM emp ygb,emp sjb WHERE ygb.mgr=sjb.empno;

26列出入职日期早于其直接上级的所有雇员。

SELECT * FROM emp ygb WHERE hiredate<(SELECT hiredate FROM emp sjb WHERE sjb.empno=ygb.mgr);

27列出部门和这些部门的雇员,同时列出那些没有雇员的部门。

SELECT * FROM dept WHERE deptno IN (SELECT DISTINCT deptno FROM emp)

UNION

SELECT * FROM dept WHERE deptno NOT IN (SELECT DISTINCT deptno FROM emp)

SELECT dname,ename FROM dept a LEFT JOIN emp b ON a.deptno=b.deptno;

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

SELECT ename,dname FROM dept a,emp b WHERE a.deptno=b.deptno AND job='CLERK';

29列出各种类型的最低薪金,并使最低薪金大于1500。

SELECT job,MIN(sal) FROM emp GROUP BY job HA VING MIN(sal)>1500;

30列出从事“SALES”(销售)工作的雇员的姓名,假定不知道销售部的部门编号。SELECT ename FROM emp WHERE deptno=(SELECT deptno FROM dept WHERE dname='SALES');

31列出薪金高于公司平均水平的所有雇员。

SELECT * FROM EMP WHERE SAL>(SELECT A VG(SAL) FROM EMP);

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

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

33列出薪金等于在部门30工作的所有雇员的姓名和薪金。

SELECT * FROM EMP WHERE SAL IN(SELECT SAL FROM EMP WHERE DEPTNO=30);

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

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

35列出在每个部门工作的雇员的经理以及其他信息。

SELECT A.*,B.* FROM DEPT A,EMP B WHERE A.DEPTNO=B.DEPTNO AND JOB='MANAGER';

SELECT A.*,B.* FROM (SELECT * FROM EMP WHERE JOB<>'MANAGER') A,(SELECT * FROM EMP WHERE JOB='MANAGER') B WHERE A.DEPTNO=B.DEPTNO AND B.JOB='MANAGER'

ORDER BY A.DEPTNO;

36列出所有雇员的雇员名称、部门名称和薪金。

SELECT ENAME,DNAME,SAL FROM DEPT A,EMP B WHERE A.DEPTNO=B.DEPTNO;

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

SELECT * FROM emp ORDER BY job,deptno;

38列出分配有雇员数量的所有部门的详细信息,即使是分配有0个雇员。

SELECT * FROM dept WHERE deptno IN (SELECT DISTINCT deptno FROM emp)

UNION

SELECT * FROM dept WHERE deptno NOT IN (SELECT DISTINCT deptno FROM emp)

39列出各种类型工作的最低工资。

SELECT job,MIN(sal) FROM emp GROUP BY job;

40列出各个部门的MANAGER(经理)的最低薪金。

SELECT MIN(sal) FROM emp WHERE job='MANAGER';

41列出按年薪排序的所有雇员的年薪。

SELECT sal*12 AS y_sal FROM emp ORDER BY sal*12;

42列出薪金水平处于第四位的雇员。

SELECT * FROM

(SELECT a.*,row_number() over(ORDER BY sal DESC) AS rn FROM emp a)WHERE rn=4;

43查找EMP表中前5条记录

SELECT * FROM emp WHERE ROWNUM<=5;

44查找EMP表中10条以后的记录

SELECT * FROM (SELECT a.*,ROWNUM AS rn FROM emp a) WHERE rn>10;

45查找EMP表中薪水第5高的员工

SELECT * FROM (SELECT a.*,row_number() over(ORDER BY sal DESC) AS rn FROM emp a) WHERE rn=5;

46查找EMP表部门30中薪水第3的员工

SELECT * FROM (SELECT a.*,row_number() over(PARTITION BY deptno ORDER BY sal DESC) AS rn FROM emp a) WHERE rn=5 AND deptno=30;

47查找EMP表中每部门薪水第3的员工

SELECT * FROM (SELECT a.*,row_number() over(PARTITION BY deptno ORDER BY sal DESC) AS rn FROM emp a) WHERE rn=3;

48统计各部门的薪水总和.

SELECT deptno,SUM(sal) AS sumsal FROM emp GROUP BY deptno;

--每个部门员工和经理的详细信息:编号,姓名,薪水,入职日期,部门编号

SELECT a.empno AS eno,a.ename AS enm,a.job AS ejob,a.sal AS esal,a.hiredate AS edate,a.deptno AS edept,b.empno AS mno,b.ename AS mnm,b.job AS mjob,b.sal AS msal,b.hiredate AS mdate,b.deptno AS mdept FROM (SELECT * FROM emp WHERE job<>'MANAGER' AND job<>'PRESIDENT') a,(SELECT * FROM emp WHERE job='MANAGER') b WHERE a.deptno=b.deptno;

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

select * from dept where deptno in(select distinct deptno from emp);

select count(*),deptno from emp group by deptno having count(*)>1;

--2.列出薪金比“SMITH”多的所有员工。

select * from emp where sal>(select sal from emp where ename='SMITH');

--3.列出所有员工的姓名及其直接上级的姓名

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

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

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

--5.列出部门名称和这些部门的员工信息,同时列出那些没有员工的部门。

select dname,ename from dept left join emp on dept.deptno=emp.deptno;

select dname,ename from dept a,emp b where a.deptno = b.deptno(+);

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

select dname,ename from dept a,emp b where a.deptno=b.deptno and job='CLERK';

select (select dname from dept where deptno=a.deptno) as dname ,ename from emp a where job='CLERK';

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

select job from emp group by job having min(sal)>1500;

select job,min(sal) msal from emp group by job having min(sal)>1500;

--8.列出在部门“SALES”(销售部)工作的员工的姓名,假定不知道销售部的部门编号。select ename from emp where deptno=(select deptno from dept where dname='SALES');

--9.列出薪金高于公司平均薪金的所有员工。

select ename from emp where sal>(select avg(sal) from emp);

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

select * from emp where job=(select job from emp where ename='SCOTT');

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

select ename,sal from emp where sal=any(select sal from emp where deptno=30);

select * from emp where sal in (select sal from emp where deptno=30);

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

select ename,sal from emp where sal>all(select sal from emp where deptno=30);

--13.列出在每个部门工作的员工数量、平均工资和平均服务期限。

select deptno,count(*),

trunc(avg(sal+nvl(comm,0))) avgsal,

trunc(avg(sysdate-hiredate)) avgday

from emp group by deptno;

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

select ename,dname,(nvl(comm,0)+sal) as 工资from emp,dept where emp.deptno=dept.deptno;

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

select distinct a.ename,a.job,a.deptno from emp a,emp b

where (a.job=b.job)and(a.deptno!=b.deptno) order by a.job;

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

select a.*,(select count(*) from emp where deptno=a.deptno) as 人数from dept a;

--17.列出各种工作的最低工资。

select job, min(sal+nvl(comm,0)) from emp group by job;

--18.列出各个部门的MANAGER(经理)的最低薪金。

select deptno,min(sal) from emp where job='MANAGER' group by deptno;

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

select empno,ename,(sal+nvl(comm,0))*12 as 年薪from emp order by 年薪;

oracle练习题及答案

WORD格式 1.找出各月倒数第3天受雇的所有员工 selectenamefromempwherelast_day(hiredate)-2=hiredate; 2.找出早于12年前受雇的员工 selectenamefromempwheremonths_between(sysdate,hiredate)>=144; 3.以首字母大写的方式显示所有员工的姓名 selectinitcap(ename)fromemp; 4.显示正好为5个字符的员工的姓名 selectenamefromempwherelength(ename)=5; 5.显示不带有“R”的员工姓名 selectenamefromempwhereinstr(ename,'R',1,1)=0; 6.显示所有员工姓名的前三个字符 selectsubstr(ename,1,3)fromemp; 7.显示所有员工的姓名,用“a”替换所有的“A” selectename,replace(ename,'A','a')fromemp; 8.显示满10年服务年限的员工的姓名和受雇日期 selectename,hiredatefromempwheremonths_between(sysdate,hiredate)>=120; 9.显示员工的详细资料,按姓名排序 select*fromemporderbyenamedesc; 10.显示员工的姓名和受雇日期,根据其服务年限,将最老的员工排在最前面selectename,hiredatefromemporderbyhiredate; 11.显示所有员工的姓名、工作和薪金,按照工作的降序排序,若工作相同则按薪金排序selectename,job,salfromemporderbyjobdesc,sal; 12.显示所有员工的姓名、加入公司的年份和月份,按受雇日期所在月排序,若月份 相同则将最早年份的员工排在最前面 selectename,to_char(hiredate,'yyyy')h,to_char(hiredate,'mm')m fromemporderbym,h; 13.显示在一个月为30天的情况所有员工的日薪金,忽略余数 selecttrunc(sal/30)fromemp; 14.找出在(任何年份的)2月受聘的所有员工 selectenamefromempwhereto_char(hiredate,'mm')=2; 15.对于每个员工显示其加入公司的天数 selectename,sysdate-hiredatefromemp; 16.显示姓名字段的任何位置包含“A”的所有员工姓名 selectenamefromempwhereinstr(ename,'A',1,1)<>0; selectenamefromempwhereenamelike'%A%'; 专业资料整理

ORACLE试题

ORACLE 选择 B52X0001ORACLE7数据库中,命令lsnrctl start用到的参数文件是:() A、tnsnames.ora B、sqlnet.ora C、listener.ora D、以上都不对 正确答案:C B52X0002在将格式化的文本文件导入ORACLE时我们经常采用的是SQLLOAD命令,请选择正确的写法() A、sqlldr username/password control=data_file B、sqlldr username/password rows=128control=data_file C、sqlldr username/password control=data_file rows=64 D、sqlldr username/password control=data_file.ctl 正确答案:D B52X0003在Oracle维护过程中,第一步应查看数据库管理系统的运行日志,其日值文件名为:() A、error_'SID'.log B、Alert_'SID'.log C、trace_'SID'.log E、logtail_'SID'.log 正确答案:B B52X0004SGA(System Global Area)是ORACLE系统为实例分配的一组共享缓冲存储区,SGA分为几个部分。() A、4 B、5 C、6 D、7 正确答案:A库缓冲区、数据字典缓冲区、数据块高速缓冲区、重做日志缓冲区 B52X0005Oracle逻辑结构可分解为:表空间、数据库块、物理块、分类段、范围。它们之间的大小关系正确的是() A、表空间≥范围≥分类段≥数据库块≥物理块 B、表空间≥范围≥分类段≥物理块≥数据库块 C、表空间≥数据库块≥物理块≥分类段≥范围 D、表空间≥分类段≥范围≥数据库块≥物理块 正确答案:D B52X0006ORACLE中模式为模式对象的集合,为一个数据库用户所占有,模式名为与该用户名同名,下列属于模式对象的有() A、表 B、视图 C、快照 D、用户环境文件

(Oracle数据库管理)玩转实战教程学习笔记最全版

(O管理)玩转实战教程(韩顺平)学习笔记

韩顺平—玩转oracle视频教程笔记 一:Oracle认证,与其它数据库比较,安装 oracle的卸载 1.停止所有与ORACLE相关的服务。 2. 使用OUI(Oracle Universal Installer)卸载Oracle软件。 “开始”->“程序”->“Oracle-OraDb110g_home1|Oracle installation product|Universal installer. 3.删除注册表内容。运行regedit命令,删除下面内容:HKEY_LOCAL_MACHINE|SOFTWARE|ORACLE注册表键,删除此键。 HKEY_LOCAL_MACHINE|SYSTEM|CurrentControlSet|Services,删除Services键下所有以oracle为首的键。 HKEY_LOCAL_MACHINE|SYSTEM|CurrentControlSet|Services|Eventlog|Application,删除此键下所有以oracle为首的键。 HKEY_CLASSES_ROOT,删除此键下所有以Ora,Oracle,Orcl,EnumOra 为前缀的键。 HKEY_CURRENT_USER|Software| Microsoft|Windows|CurrentVersion|Explorer|MenuOrder|Start Menu|Programs,删除此键下所有以oracle为首的键。 HKEY_LOCAL_MACHINE|SOFTWARE|ODBC|ODBCINST.INI注册表键,删除了

Oracle试题(含答案)

_C++_CSD/ESD1405 1. 把工资大于1000的first_name,salary 显示出来,按工资排序,工资相同按first_name降序的SQL语句是? A. select first_name,salary from s_emp order by salary,first_name B. select first_name,salary from s_emp order by salary,first_name asc C. select first_name,salary from s_emp order by salary desc,first_name D. select first_name,salary from s_emp order by salary,first_name desc 正确答案:D 2. 已知数据库中有员工表s_emp和部门表s_dept,具体字段如下: 员工表字段介绍: ID 员工编号 LAST_NAME 员工姓 FIRST_NAME 员工名 USERID 用户编号 START_DATE 入职日期 COMMENTS 员工备注信息 MANAGER_ID 员工的领导ID TITLE 员工的职位 DEPT_ID 部门的编号 SALARY 员工的月薪 COMMISSION_PCT 提成 部门表的字段介绍: ID 部门编号 NAME 部门名 REGION_ID 地区编号 注:以下所有数据库相关题目,均使用这两个表 把s_emp表中的每个人的全名和工资列出来的SQL语句是? A. select first_name|last_name ,salary from s_emp

Oracle数据库简答题-考试重点

1.简单描述Oracle数据库体系结构的组成及其关系? 答:Oracle数据库体系结构由物理存储结构、逻辑存储结构和实例组成。其中物理存储结构描述了操作系统层次数据的存储与管理,包括数据文件、日志文件、重做日志文件等组成。逻辑结构描述了数据库内部数据的组织与管理,由表空间、段、区、块组成。实例是数据库运行的软件结构,由内存结构和后台进程组成。数据库运行过程中,用户的操作在内存区中进行,最终通过后台进行转化为对数据库的操作。 2、说明Oracle数据库物理存储结构的组成? Oracle数据库物理结构包括数据文件、控制文件、重做日志文件、初始化参数文件、归档文件、口令文件等。在控制文件中记录了当前数据库所有的数据文件的名称与位置、重做日志文件的名称与位置,以及数据文件、重做日志文件的状态等。 3、说明Oracle数据库数据文件的作用? 数据文件中保存了数据库中的所有数据,包括数据字典以及用户数据。 4、说明Oracle数据库控制文件的作用? 控制文件保存数据库的物理结构信息,包括数据库名称、数据文件的名称与状态、重做日志文件的名称与状态等。在数据库启动时,数据库实例依赖初始化参数定位控制文件,然后根据控制文件的信息加载数据文件和重做日志文件,最后打开数据文件和重做日志文件。 5、说明Oracle数据库重做日志文件的作用? 重做日志文件是以重做记录的形式记录、保存用户对数据库所进行的修改操作,包括用户执行DDL、DML语句的操作。如果用户只对数据库进行查询操作,那么查询信息是不会记录到重做日志文件中的。 6、说明数据库逻辑存储结构的组成和相互关系。 Oracle9i数据库的逻辑存储结构分为数据块、区、段和表空间四种。其中,数据块是数据库中的最小I/O单元,由若干个连续的数据块组成的区是数据库中最小的存储分配单元,由若干个区形成的段是相同类型数据的存储分配区域,由若干个段形成的表空间是最大的逻辑存储单元,所有的表空间构成一个数据库。 7、说明数据库表空间的种类,以及不同类型表空间的作用。 数据库表空间分为系统表空间和非系统表空间两类,其中非系统表空间包括撤销表空间、临时表空间和用户表空间等。 SYSTEM表空间主要用于存储数据库的数据字典、PL/SQL程序的源代码和解释代码、数据库对象的定义。撤销表空间专门进行回退信息的自动管理。临时表空间是专门进行临时段管理的表空间。用户表空间用于分离不同应用的数据,而且能够减少读取数据文件时产生的I/O冲突。 8、说明数据库、表空间、数据文件以及数据库对象之间的关系。 一个数据库由一个或多个表空间构成,不同的表空间用于存放不同应用的数

数据库sql课后练习题及答案解析

数据库sql课后练习题及答案解析 (borrow 表) (reader表)1) 找出姓李的读者姓名(NAME)和所在单位(COMPANY)。2) 列出图书库中所有藏书的书名(BOOK_NAME)及出版单位(OUTPUT)。3) 查找“高等教育出版社”的所有图书名称(BOOK_NAME)及单价(PRICE),结果按单价降序排 序。4) 查找价格介于10元和20元之间的图书种类(SORT),结果按出版单位(OUTPUT)和单价(PRICE)升序排序。5) 查找书名以”计算机”开头的所有图书和作者(WRITER)。6) 检索同时借阅了总编号(BOOK_ID)为112266和449901两本书的借书证号(READER_ID)。##7)* 查找所有借了书的读者的姓名(NAME)及所在单位(COMPANY)。8)* 找出李某所借所有图书的书名及借书日期(BORROW_DATE)。9)* 无重复地查询xx年10月以后借书的读者借书证号(READER_ID)、姓名和单位。##10)* 找出借阅了一书的借书证号。11) 找出与”赵正义”在同一天借书的读者姓名、所在单位及借书日期。12) 查询xx年7月以后没有借书的读者借书证号、姓名及单位。#13) 求”科学出版社”图书的最高单价、最低单价、平均单价。##14)* 求”信息系”当前借阅图书的读者人次数。#15) 求出各个出版社图

书的最高价格、最低价格和总册数。#16) 分别找出各单位当前借阅图书的读者人数及所在单位。17)* 找出当前至少借阅了2本图书(大于等于2本)的读者姓名及其所在单位。18) 分别找出借书人次数多于1人次的单位及人次数。19) 找出藏书中各个出版单位的名称、每个出版社的书籍的总册数(每种可能有多册)、书的价值总额。20) 查询经济系是否还清所有图书。如果已经还清,显示该系所有读者的姓名、所在单位和职称。附录:建表语句创建图书管理库的图书、读者和借阅三个基本表的表结构:创建BOOK:(图书表)CREATE TABLE BOOK ( BOOK_ID int, SORT VARCHAR(10), BOOK_NAME VARCHAR(50), WRITER VARCHAR(10), OUTPUT VARCHAR(50), PRICE int); 创建READER:(读者表)CREATE TABLE READER (READER_ID int,COMPANY VARCHAR(10),NAME VARCHAR(10),SEX VARCHAR(2),GRADE VARCHAR(10),ADDR VARCHAR(50)); 创建BORROW:(借阅表)CREATE TABLE BORROW ( READER_ID int, BOOK_ID int, BORROW_DATE datetime)插入数据:BOOK表:insert into BOOK values(445501,'TP3/12','数据库导论','王强','科学出版社', 17、90);insert into BOOK values(445502,'TP3/12','数据库导论','王强','科学出版社', 17、90);insert into BOOK values(445503,'TP3/12','数据库导论','王强','科学出版社',

oracle考试试题及答案

试题一 一、填空题(每小题4分,共20分) 1、数据库管理技术经历了人工管理、文件系统、数据库系统三个阶段 2、数据库三级数据结构是外模式、模式、内模式 3、Oracle数据库中,SGA由数据库缓冲区,重做日志缓冲区,共享池组成 4、在Oracle数据库中,完正性约束类型有Primay key约束。Foreign key约束,Unique约束,check约束,not need约束 5、PL/SQL中游标操作包括声明游标,打开游标,提取游标,关闭游标 二、正误判断题(每小题2分,共20分) 1、数据库中存储的基本对象是数据(T) 2、数据库系统的核心是DBMS(T) 3、关系操作的特点是集合操作(T) 4、关系代数中五种基本运算是并、差、选择、投影、连接(F) 5、Oracle进程就是服务器进程(F) 6、oraclet系统中SGA所有用户进程和服务器进程所共享(T) 7、oracle数据库系统中数据块的大小与操作系统有关(T) 8、oracle数据库系统中,启动数据库和第一步是启动一个数据库实例(T) 9、PL/SQL中游标的数据是可以改变的(F) 10、数据库概念模型主要用于数据库概念结构设计() 三、简答题(每小题7分,共35分) 1、何谓数据与程序的逻辑独立性和物理独立性? 2、试述关系代数中等值连接与自然连接的区别与联系? 3、何谓数据库,数据库设计一般分为哪些阶段? 4、简述Oracle逻辑数据库的组成?

5、试任举一例说明游标的使用方法? 五、设有雇员表emp(empno,ename,age,sal,tel,deptno), 其中:empno-----编号,name------姓名,age -------年齡,sal-----工资,tel-----电话 deptno-----部门号。 请按下列要求分别晨SQL*PLUS下编程。(每小题3分,共15分)?1、查询家有电话的职工信息。 ?2、查询工资在500至800元之间的雇员信息 ?3、按年龄递增顺序显示雇员编号、姓名、年龄、工资 ?4、求部门号为D_01的平均工资 ?5、查找部门号为D_01的40岁以上而工资在400元以下的雇员名单。 1、SQL>SELECT * FROM emp WHERE tel NOT NULL; 2、SQL>SELECT * FROM emp WHERE BETWEEN 500 AND 800; 3、SQL>SELECT empno,ename,age,sal FROM emp ORDER BY age ASC; 4、SQL>SELECT AVG(sal) FROM emp WHERE deptno='D_01'; 5、SQL>SELECT ename FROM emp WHERE deptno='D_01' AND age>40 AND Sal<400; ? 试题一答案 一、填空题 1、人工管理、文件系统、数据库系统 2、外模式、模式、内模式 3、数据库缓冲区,重做日志缓冲区,共享池 4、Primay key约束。Foreign key约束,Unique约束,check约束,not need 约束 5、声明游标,打开游标,提取游标,关闭游标 二、正误判断题 1、T 2、T 3、T 4、F 5、F 6、T 7、T 8、T 9、F 三、(略) 五、 1、SQL>SELECT * FROM emp WHERE tel NOT NULL; 2、SQL>SELECT * FROM emp WHERE BETWEEN 500 AND 800; 3、SQL>SELECT empno,ename,age,sal FROM emp ORDER BY age ASC; 4、SQL>SELECT AVG(sal) FROM emp WHERE deptno='D_01'; 5、SQL>SELECT ename FROM emp WHERE deptno='D_01' AND age>40 AND Sal<400; 试题二

oracle数据库试题

ORACLE数据库试题 74 姓名:戴希引 一、选择题(总分50分,每题1分,*为多选)42 1.下列不属于ORACLE的逻辑结构的是(C) A 区 B 段 C 数据文件 D表空间 2. 下面哪个用户不是ORACLE缺省安装后就存在的用户( A ) A . SYSDBA B. SYSTEM C. SCOTT D. SYS 3 下面哪个操作会导致用户连接到ORACLE数据库,但不能创建表(A ) A 授予了CONNECT的角色,但没有授予RESOURCE的角色 B没有授予用户系统管理员的角色 C数据库实例没有启动 D数据库监听没有启动 4. 在Oracle中,当FETCH语句从游标获得数据时,下面叙述正确的是( C ) A 游标打开 B游标关闭 C当前记录的数据加载到变量中 D创建变量保存当前记录的数据 5. 在Oracle中,下面关于函数描述正确的是( A D)* A SYSDATE函数返回Oracle服务器的日期和时间 B ROUND数字函数按四舍五入原则返回指定十进制数最靠近的整数 C ADD_MONTHS日期函数返回指定两个月份天数的和 D SUBSTR函数从字符串指定的位置返回指定长度的子串 6. 阅读下面的PL/SQL程序块: BEGIN INSERT INTO employee(salary,last_name,first_name)VALUES(35000,’Wang’,'Fre d ’); SAVEPOINT save_a; INSERT INTO employee(salary,last_name,first_name) VALUES(40000,’Woo’,'David’); SAVEPOINT save_b; DELETE FROM employee WHERE dept_no=10; SAVEPOINT save_c; INSERT INTO employee(salary,last_name,first_name) VALUES(25000,’Lee’,'Bert’); ROLLBACK TO SAVEPOINT save_c;

(仓库管理)数据库查询语句练习_习题_结果(单世民)仓库_习题

数据库结构如下: 仓库(仓库号, 城市, 面积) 订购单(职工号, 供应商号, 订购单号, 订购日期)供应商(供应商号, 供应商名, 地址) 职工(仓库号, 职工号, 工资) 具体数据如下: 仓库表: 职工表:

使用SQL语句完成: DDL 1.写出创建上述表的语句 命令: create table仓库(仓库号varchar(8)primary key,城市varchar(8),面积int); create table订购单(订购单号varchar(8)primary key,职工号varchar(8),供应商号varchar(8),订购日期nchar(8)) create table供应商(供应商号varchar(8)primary key,供应商名varchar(18),地址varchar(8)) create table职工(职工号varchar(8)primary key,仓库号varchar(8),工资int)DML 2.给出插入上述数据的insert语句 命令: insert into仓库values('WH1','北京',370) insert into仓库values('WH2','上海',500) insert into仓库values('WH3','广州',200) insert into仓库values('WH4','武汉',400) insert into订购单values('OR67','E3','S7','06/23/01') insert into订购单values('OR73','E1','S4','07/28/01') insert into订购单values('OR76','E5','S4','05/25/01') insert into订购单values('OR77','E6','S6','05/26/01') insert into订购单values('OR79','E3','S4','06/13/01') insert into订购单values('OR80','E1','S2','08/29/01') insert into订购单values('OR90','E3','S3','09/01/01') insert into订购单values('OR91','E3','S7','07/13/01') insert into供应商values('S2','名硕电子公司','苏州') insert into供应商values('S3','振华电子厂','西安') insert into供应商values('S4','华通电子公司','北京') insert into供应商values('S6','607厂','郑州') insert into供应商values('S7','爱华电子厂','北京') insert into职工values('E1','WH2',1220) insert into职工values('E3','WH1',1210) insert into职工values('E4','WH2',1250) insert into职工values('E5','WH3',1230) insert into职工values('E6','WH1',1250) 单表查询 3.检索职工关系中的所有信息 命令:select*from职工 结果:

Oracle基础练习题及答案(子查询)

子查询 1.查询和scott相同部门的员工姓名ename和雇用日期hiredate select ename,hiredate from emp where deptno=(select b.deptno from emp a,dept b where a.deptno=b.deptno and ename='SCOTT'); 2.查询工资比公司平均工资高的所有员工的员工号empno,姓名 ename和工资sal。 select empno,ename,sal from emp where sal>(select avg(sal) from emp ); 3.查询和姓名中包含字母u的员工在相同部门的员工的员工号 empno和姓名ename select empno,ename from emp a,dept b where a.deptno(+)=b.deptno and a.deptno=(select deptno from emp where ename like'%U%'); 4.查询在部门的loc为newYork的部门工作的员工的员工姓名 ename,部门名称dname和岗位名称job select ename,dname,job from emp a,dept b where a.deptno=b.deptno and loc='NEW YORK'; 5.查询管理者是king的员工姓名ename和工资sal select a.ename,a.sal from emp a,emp b where a.mgr=b.empno and b.ename='KING';

Oracle数据库试题及答案

Oracle数据库试题 一、选择题 1、段是表空间中一种逻辑存储结构,以下( D )不是ORACLE数据库使用的段类型。(A)索引段(B)临时段(C)回滚段(D)代码段 2、 ORACLE数据库物理结构包括以下三种文件,以下不属于的是( A )。 ?(A)系统文件(B)日志文件(C)数据文件(D)控制文件 3、数据库中有两个用户scott和muuser,物资表wz是属于myuser用户的,但当前用户是scott,要求查询物资表wz(wno,wname,wtype,wunit)物资单位wunit列为null的记录,取结果的前5条记录显示,以下正确的SQL语句是( C ) (A)select*from scott.wz where wunit is null and rownum<5; (B)select*from myuser.wz where wunit = null and rownum<5; (C) select*from myuser.wz where wunit is null and rownum<6; (D)select*form scott.wz where wunit is null and rownum<6; ?4、若当前日期为’25-5月-06’,以下( D? )表达式能计算出5个月后那一天所在月份的最后一天的日期。 (A)NEXT_DAY(ADD_MONTHS(28-5月-06,5)) (B)NEXT_DAY(MONTHS_BETWEEN(28-5月-06,5)) (C)NEXT_DAY(MONTHS_BETWEEN(’28-5月-06’,5)) (D)NEXT_DAY(ADD_MONTHS(’28-5月-06’,5)) 5、下列叙述中正确的是_C_。 A、数据库是一个独立的系统,不需要操作系统的支持 B、数据库设计是指设计数据库管理系统 C、数据库技术的根本目标是要解决数据共享的问题 D、数据库系统中,数据的物理结构必须与逻辑结构一致 6、SQL语句中修改表结构的命令是 ???C?? ?。 A、MODIFY TABLE B、MODIFY STRUCTURE C、ALTER TABLE D、ALTER STRUCTURE 7、数据库DB、数据库系统DBS、数据库管理系统DBMS三者之间的关系是__ A___。 A、DBS包括DB和DBMS B、DBMS包括DB和DBS C、DB包括DBS和DBMS D、DBS就是DB,也就是DBMS 8、要控制两个表中数据的完整性和一致性可以设置"参照完整性",要求这两个表_A___。 A、是同一个数据库中的两个表 B、不同数据库中的两个表 C、两个自由表 D、一个是数据库表另一个是自由表 9、在关系模型中,实现"关系中不允许出现相同的元组"的约束是通过__B_ __。 A、候选键 B、主键 C、外键 D、超键 10、索引字段值不唯一,应该选择的索引类型为___ B__。 A、主索引 B、普通索引 C、候选索引 D、唯一索引 11、从数据库中删除表的命令是___C __。 A、DROP TABLE B、ALTER TABLE C、DELETE TABLE D、USE 12、 DELETE FROM S WHERE 年龄>60语句的功能是___B___。 A、从S表中彻底删除年龄大于60岁的记录 B、S表中年龄大于60岁的记录被加上删除标记

Oracle数据库维护及管理基本手册

Oracle数据库维护及管理 基本手册

目录 1 目的 (4) 2 适用范围 (4) 3 适用对象 (4) 4 机房值班 (4) 4.1 服务器规划..................................................................................... 错误!未定义书签。 4.2 日常巡检......................................................................................... 错误!未定义书签。 4.3 Oracle (4) 4.3.1 表空间检查; (4) 4.3.2 表碎片整理 (5) 4.3.3 表索引整理 (5) 4.3.4 检查数据库后台进程是否正常 (6) 4.3.5 查看CRS(群集就绪软件)状态是否正常 (6) 4.3.6 检查报警日志文件 (6) 4.3.7 查看数据库监听状态和监听日志大小 (7) 4.3.8 检查数据文件状态是否是ONLINE (8) 4.3.9 检查数据库是否有失效的对象 (9) 4.3.10 检查数据库服务器性能,记录数据库的cpu使用以及io wait等待 (9) 4.3.11 检查数据库服务器磁盘空间使用率 (10) 4.3.12 检查数据库备份是否正常 (10) 4.3.13 数据库性能监控 (11) 4.3.14 历史数据清理 (11) 4.3.15 监控数据库JOB执行情况 (11) 4.3.16 用户及权限安全监控 (12) 4.4 设备重启规范 (13) 4.4.1 数据库重启 (13)

数据库中SQL查询语句习题含的答案

.word 版本可编辑. 查询问题:设教学数据库Education 有三个关系: 学生关系S (SNO ,SNAME ,AGE ,SEX ,SDEPT );学习关系SC (SNO ,CNO ,GRADE );课程关系C (CNO ,CNAME ,CDEPT ,TNAME ) (1)检索计算机系的全体学生的学号,姓名和性别; (2)检索学习课程号为C2的学生学号与姓名; (3)检索选修课程名为“DS ”的学生学号与姓名; (4)检索选修课程号为C2或C4的学生学号; (5)检索至少选修课程号为C2和C4的学生学号; (6)检索不学C2课的学生姓名和年龄; (7)检索学习全部课程的学生姓名; (8)查询所学课程包含学生S3所学课程的学生学号。 (1)检索计算机系的全体学生的学号,姓名和性别; SELECT Sno ,Sname ,Sex FROM S WHERE Sdept =’CS ’; (2)检索学习课程号为C2的学生学号与姓名; (1)首先在C 表中找出“DS ”课程的课程号Cno ; (2)然后在SC 表中找出Cno 等于第一步给出的Cno 集合中的某个元素Cno ; (3)最后在S 关系中选出Sno 等于第二步中Sno 集合中某个元素的元组,取出Sno 和Sname 送入结果表列。 SELECT Sno ,Sname FROM S WHERE Sno IN (SELECT Sno FROM SC WHERE Cno IN (SELECT Cno FROM C WHERE Cname=‘DS ’)); (4)检索选修课程号为C2或C4的学生学号; SELECT Sno FROM SC WHERE Cno=‘C2’ OR Cno=‘C4’; (5)检索至少选修课程号为C2和C4的学生学号; SELECT Sno FROM SC X ,SC Y WHERE X.Sno=Y.Sno AND https://www.360docs.net/doc/8510720215.html,o=‘C2’ AND https://www.360docs.net/doc/8510720215.html,o=‘C4’ ; (6)检索不学C2课的学生姓名和年龄; 有学。 SELECT Sname FROM S WHERE NOT EXISTS (SELECT * FROM C WHERE NOT EXISTS (SELECT * FROM SC WHERE SC.Sno=S.Sno AND https://www.360docs.net/doc/8510720215.html,o=https://www.360docs.net/doc/8510720215.html,o )); (8)查询所学课程包含学生S3所学课程的学生学号。 分析:不存在这样的课程Y ,学生S3选了Y ,而其他学生没有选。 SELECT DISTINCT Sno FROM SC AS X WHERE NOT EXISTS (SELECT * FROM SC AS Y WHERE Y.Sno=‘S3’ AND NOT EXISTS (SELECT * FROM SC AS Z WHERE Z.Sno=X.Sno AND https://www.360docs.net/doc/8510720215.html,o=https://www.360docs.net/doc/8510720215.html,o )); 设教学数据库Education 有三个关系: 学生关系S (SNO ,SNAME ,AGE ,SEX ,SDEPT ); 学习关系SC (SNO ,CNO ,GRADE ); 课程关系C (CNO ,CNAME ,CDEPT ,TNAME ) 查询问题: 1:查所有年龄在20岁以下的学生姓名及年龄。 2:查考试成绩有不及格的学生的学号 3:查所年龄在20至23岁之间的学生姓名、系别及年龄。 4:查计算机系、数学系、信息系的学生姓名、性别。 5:查既不是计算机系、数学系、又不是信息系的学生姓名、性别 6:查所有姓“刘”的学生的姓名、学号和性别。 7:查姓“上官”且全名为3个汉字的学生姓名。 8:查所有不姓“张”的学生的姓名。 9:查DB_Design 课程的课程号。 10:查缺考的学生的学号和课程号。 11:查年龄为空值的学生的学号和姓名。 12:查计算机系20岁以下的学生的学号和姓名。 13:查计算机系、数学系、信息系的学生姓名、性别。 14:查询选修了C3课程的学生的学号和成绩,其结果按分数的降序排列。 15:查询全体学生的情况,查询结果按所在系升序排列,对同一系中的学生按年龄降序排列。 16:查询学生总人数。 17:查询选修了课程的学生人数。 18:计算选修了C1课程的学生平均成绩。

Oracle基础练习题及答案(多表查询1)

利用scott用户自带的四张表完成如下作业: 1.列出至少有一个员工的所有部门 selectb.deptno,b.dnamefromemp a,dept bwherea.deptno=b.deptnogroupbyb.deptno,b.dnamehavingcount(*)>=1; 2.列出薪金比SMITH高的所有员工 select*fromempwheresal>(selectsalfromempwhereename='SMITH'); 3.列出所有员工的姓名及其直接上级领导的姓名 selecta.ename,b.ename "leader"fromemp a,emp bwherea.mgr=b.empno; 4.列出受雇日期早于其直接上级的所有员工的编号,姓名,部门名称 selecta.empno,a.ename,a.hiredate,c.dnamefromempa,empb,deptcwherea.mgr= b.empnoanda.deptno=c.deptnoanda.hiredate

ORACLE数据库习题(有答案)

--1.列出至少有一个雇员的所有部门。 SELECT * FROM DEPT WHERE DEPTNO IN (SELECT DISTINCT DEPTNO FROM EMP); --2.列出薪金比“SMITH”多的所有雇员。 SELECT * FROM EMP WHERE SAL>(SELECT SAL FROM EMP WHERE ENAME='SMITH'); --3.列出所有雇员的姓名及其上级的姓名。 SELECT AS empName, AS mgrName FROM emp ygb,emp sjb WHERE =; --4.列出入职日期早于其直接上级的所有雇员。 SELECT * FROM emp ygb WHERE hiredate<(SELECT hiredate FROM emp sjb WHERE =; --5.列出所有部门的名称和这些部门的雇员编号及姓名(没有雇员的部门包含在内) SELECT dname,ename FROM dept a LEFT JOIN emp b ON =; --6.列出所有JOB 为“CLERK”(办事员)的员工姓名及其部门名称 SELECT ename,dname FROM dept a,emp b WHERE = AND job='CLERK'; --7.列出各种类型的最低薪金,并使最低薪金大于。 SELECT job,MIN(sal) FROM emp GROUP BY job HAVING MIN(sal)>1500; --8.列出从事“SALES”(销售)工作的雇员的姓名,假定不知道销售部的部门编号。 SELECT ename FROM emp WHERE deptno=(SELECT deptno FROM dept WHERE dname='SALES'); --9.列出薪金高于公司平均水平的所有雇员。 SELECT * FROM EMP WHERE SAL>(SELECT AVG(SAL) FROM EMP); --10.列出与“SCOTT”从事相同工作的所有雇员。 SELECT * FROM EMP WHERE JOB=(SELECT JOB FROM EMP WHERE ENAME='SCOTT') AND ENAME<>'SCOTT'; --11.列出薪金等于部门中任何一个雇员薪金的员工姓名和 薪金 SELECT ENAME,SAL FROM EMP WHERE SAL IN(SELECT SAL FROM EMP WHERE DEPTNO=30); SELECT ENAME,SAL FROM EMP WHERE SAL =ANY(SELECT SAL FROM EMP WHERE DEPTNO=30); --12.列出薪金高于部门中所有雇员薪金的员工姓名和薪金SELECT * FROM EMP WHERE SAL >ALL(SELECT SAL FROM EMP WHERE DEPTNO=30); --13.列出所有部门的部门名称、地点以及该部门中雇员的数量 SELECT DNAME,DEPTNO,LOC, (SELECT COUNT(*) FROM EMP E WHERE = AS TOTAL FROM DEPT; --14.列出各种类别工作的最低工资 SELECT job,MIN(sal) FROM emp GROUP BY job; --15.列出各个部门的MANAGER(经理)的最低薪金。 SELECT MIN(sal) FROM emp WHERE job='MANAGER' GROUP BY DEPTNO; --1. 查询所有部门员工的编号、姓名、月薪及奖金。 select empno,ename,sal,comm from emp where deptno=10; --2. 查询员工WHITE的员工编号。 select empno from emp where ename='WHITE'; --3. 查询所有员工的编号及收入。(提示:收入=月薪+奖金)select empno 编号,sal+nvl(comm,0) as 收入from emp; --4. 查询所有员工的编号、姓名、工种及其工龄,按工龄降序排序,工龄相同时按编号升序排序。 Select empno,ename,job,trunc(months_between(sysdate,hiredate)/12) 工龄from emp order by 工龄desc,empno asc; --5. 统计各部门的员工人数及工种类型数。 select deptno,count(*) 人数,count(distinct job) 工种类型数from emp group by deptno; --6. 查询部门人数多于人的部门编号。 select deptno,count(*) from emp group by deptno having count(*) > 3; --7. 统计各部门各种工作类别的最低月薪,显示最低薪金大于的记录。 select deptno,job,min(sal) from emp group by deptno,job having min(sal)>1500; --8. 统计、及部门员工平均工资。 select deptno,coung(*) from emp where deptno in (10,20,30) group by deptno; --9. 查询工资水平在至间的各部门员工人数。 select deptno,count(*) from emp where sal between 2000 and 5000 group by deptno; --10. 查询公司最高领导人的员工编号及姓名。 select empno,ename from emp where mgr is null; --1、编写一查询,显示与Blake在同一部门工作的雇员的姓名和受雇日期,但是Blake不包含在结果内。 select ename,hiredate from emp where deptno in (select deptno from emp where lower(ename)='black') and lower(ename)!='black'; --2、创建一查询,显示工资大于平均工资水平的雇员的编号及姓名,输出结果按工资降序排列。 select empno,ename,sal from emp where sal>(select avg(sal) from emp) order by sal desc; --3、显示位置在Dallas的部门内的雇员的姓名、编号及工作。 select ename,empno,job from emp inner join dept on = where lower(loc)='dallas'; --4、显示被King直接管理的雇员的姓名及其工资。 select , from emp e1 inner join emp e2 on = where lower='king'; --5、显示在Sales部门工作的雇员的部门编号、姓名及工作。 select empno,ename,job from emp inner join dept on = where lower(dname)='sales'; --6、编写一查询,显示与能获得奖金的雇员的奖金和工资同时匹配的雇员的编号和工资。 select ,, from emp e1 inner join emp e2 on = and = where !=; --7、显示与工作在Dallas的雇员的工资及奖金同时匹配的雇员的姓名、部门名称及工资。 select ,, from emp e inner join dept d on = where (sal,nvl(comm,0)) in (select sal,nvl(comm,0) from emp where deptno in (select deptno from dept where lower(loc)='dallas') ); --8、创建一查询,显示能获得与Scott一样工资和奖金的其他雇员的姓名、受雇日期及工资。 select ename,hiredate,sal from emp where (sal,nvl(comm,0)) in

相关文档
最新文档