Oracle练习题讲解

Oracle练习题讲解
Oracle练习题讲解

一、填空

1.在多进程Oracle实例系统中,进程分为用户进程、后台进程和服务进程。

2.标准的SQL语言语句类型可以分为:数据定义语句(DDL)、数据操纵语句(DML)和数据控制语句(DCL)。

3.在需要滤除查询结果中重复的行时,必须使用关键字Distinct; 在需要返回查询结果中的所有行时,可以使用关键字ALL。

4.当进行模糊查询时,应使用关键字like和通配符问号(?)或百分号"%"。

5.Where子句可以接收From子句输出的数据,而HA VING子句则可以接收来自WHERE、FROM或GROUP BY子句的输入。

6.在SQL语句中,用于向表中插入数据的语句是Insert。

7.如果需要向表中插入一批已经存在的数据,可以在INSERT语句中使用Select 语句。

8.使用Describe命令可以显示表的结构信息。

9.使用SQL*Plus的Get命令可以将文件检索到缓冲区,并且不执行。

10.使用Save命令可以将缓冲区中的SQL命令保存到一个文件中,并且可以使用Run命令运行该文件。

11.一个模式只能够被一个数据库对象所拥有,其创建的所有模式对象都保存在自己的模式中。

12.根据约束的作用域,约束可以分为表级约束和列级约束两种。列级约束是字段定义的一部分,只能够应用在一个列上;而表级约束的定义独立于列的定义,它可以应用于一个表中的多个列。

13.填写下面的语句,使其可以为Class表的ID列添加一个名为PK_CLASS_ID 的主键约束。

ALTER TABLE Class

Add ____________ PK_LASS_ID (Constraint)

PRIMARY KEY ________ (ID)

14. 每个Oracle 10g数据库在创建后都有4个默认的数据库用户:system、sys、sysman和DBcnmp

15. Oracle提供了两种类型的权限:系统权限和对象权限。系统权限提供了在Oracle数据库系统范围内执行某种任务的操作能力,而对象权限则是一种赋予用户在指定的数据库对象(如表、视图、过程等)

16. Oralce数据库在进行物理备份有联机备份和脱机备份两种方式可供选择。.

17. 从存储结构的角度来说,Oracle数据库可分为物理结构和逻辑结构。

18. 表空间是Oracle数据库中数据的逻辑组织,每个数据库至少有一个SYSTEM 系统表空间。

19.视图是一个表示表的数据的数据库对象,它允许用户从一个表或一组表中通过一定的查询语句建立一个“虚表”。

20.序列是一种可被多个用户使用的用于产生一系列唯一数字的数据库对象。尤其适合多用户环境中,可以生成唯一的序列号而没有磁盘I/O或事务处理锁定开销。

21. 一个表空间具有离线(OFFLINE)、在线(ONLINE)、只读(READ ONLY)、读写(READ WRITE)状态。

二、选择

1.在全局存储区SGA中,哪部分内存区域是循环使用的?( B )A.数据缓冲区B.日志缓冲区C.共享池D.大池

2.如果一个服务器进程非正常终止,Oracle系统将使用下列哪一个进程来释放它所占用的资源?( D )

A.DBWR B.LGWR C.SMON D.PMON

3. 如果要查询数据库中所有表的信息,应当使用下列哪种数据字典视图?( A )

A. DBA视图

B. ALL视图

C. USER视图

D. 动态性能视图

4. 下列哪一项是Oracle数据库中最小的存储分配单元? ( C )

A. 表空间

B. 段

C. 盘区

D. 数据块

5. 下面的各选项中哪一个正确描述了Oracle数据库的逻辑存储结构? ( A )

A. 表空间由段组成,段由盘区组成,盘区由数据块组成

B. 段由表空间组成,表空间由盘区组成,盘区由数据块组成

C. 盘区由数据块组成,数据块由段组成,段由表空间组成

D. 数据块由段组成,段由盘区组成,盘区由表空间组成

6. 下列的哪个子句在SELECT语句中用于排序结果集?( D )

A. Having子句

B. Where子句

C. From子句

D. Order by子句

7. Having子句的作用是( B )。

a. 查询结果的分组条件

B. 组的筛选条件

C. 限定返回的行的判断条件

D. 对结果集进行排序

8. 下列哪个函数可以把一个列中的所有值相加求和? ( B )

A MAX B. SUM C. COUNT D. A VG

9. 下列哪个子句是SELECT语句中必选项?( A )

A. FROM

B.WHERE

C.HA VING

D. ORDER BY

10. 下列哪个子句实现对一个结果集进行分组和汇总?(D )

A.HA VING B. ORDER BY C. WHERE D. GROUP BY

11. 查询一个表的总记录数,可以采用_________统计函数。(C )

A. A VG(*)

B. SUM(*)

C. COUNT(*)

D.MAX(*)

12. 要建立一个语句向Types表中插入数据,这个表只有两列,T_ID和T_Name 列。如果要插入一行数据,这一行的T_ID值是100,T_Name值是RFUIT。应该使用的SQL语句是_____。( A )

A. INSERT INTO Type Values(100, ‘FRUIT’)

B. SELECT * FROM Type WHERE T_ID=100 AND T_NAME=’FRUIT’

C. UPDATE SET T_ID=100 FROM Types WHERE T_Name=’FRUIT’

D. DELET * FROM Types WHERE T_ID=100 AND T_Name=’FRUIT’

13. 用_____语句修改表的一行或多行数据。( A )

A.Update B.set C.Select D.Where

14. 使用什么命令可以清除表中所有的内容?( D )

A.INSERT B.UPDATE C. DELETE D.TRUNCATE

15.关于模式的描述下列哪一项不正确?( C )

A.表或索引等模式对象一定属于某一个模式

B.在Oracle数据库中,模式与数据库用户是一一对应的

C.一个表可以属于多个模式

D.一个模式可以拥有多个表

16.唯一约束与主键约束的一个区别是?(D )

A.唯一约束的列的值不可以有重复值

B.唯一约束的列的值可以不是唯一的

C.唯一约束的列不可以为空值

D.唯一约束的列可以为空值

17. 只能存储一个值的变量是哪种变量?( B )

A. 游标

B. 标量变量

C. 游标变量

D. 记录变量

18. 声明%TPYE类型的变量时,服务器将会做什么操作?( A )

A. 为该变量检索数据库列的数据类型

B.复制一个变量

C.检索数据库中的数据

D.为该变量检索列的数据类型和值

19.下列哪一项可以正确地引用该记录变量中的一个值?(B )

A.rec_abc(1) B. rec_abc(1).col

C. rec_abc.col

D.rec_abc.first()

20. 在定义游标时使用的FOR UPDATE子句的作用是______。( C )

A.执行游标 B. 执行SQL语句的UPDATE语句

C.对要更新表的列进行加锁 D. 都不对

21. 如果允许用户对视图进行更新和插入操作,但是又要防止用户将不符合视图约束条件的记录添加到视图,应当在定义视图时指定下列哪一个子句?( C )A.WITH GRANT OPTION

B. WITH READ ONLY

C. WITH CHECK OPTION

D. WITH CHECK ONLY

22. 如果想查看视图中哪些字段是可以更新的,应当查询哪一个数据字典视图?(D )

A. DBA_VIEWS

B. DBA_OBJECTS

C. DBA_CLU_COLUMNS

D. DBA_UPDATABLE_COLUMNS

23. 在下列各选项中,关于序列的描述哪一项是不正确的?(D )

A. 序列是Oracle提供的用于产生一系列唯一数字的数据库对象

B.序列并不占用实际的存储空间

C.使用序列时,需要用到序列的两个伪列NEXTV AL与CURRVAL。其中,NEXTV AL 将返回序列生成的下一个值,而CURRV AL返回序列的当前值D.在任何时候都可以使用序列的伪列CURRV AL,以返回当前序列值

24. 在下列各选项中,关于同义词的描述哪一项是不正确的?( B )A.同义词是数据库对象的一个替代名,在使用同义词时,Oracle会将其翻译为对应的对象名称

B.在创建同义词时,所替代的模式对象必须存在

C.Oracle中的同义词分为公有同义词和私有同义词

D.公有同义词在数据库中所有的用户都可以使用;私有同义词由创建它的用户所拥有

25. 下列哪个锁模式不属于Oracle?( D )

A. 共享锁

B.排他锁

C. 行级共享锁

D. 死锁

26. 想在另一个模式中创建表,用户最少应该具有什么系统权限?( B )A.CREATE TABLE B. CREATE ANY TABLE C. RESOURCE D. DBA 27. 如果要启用所有角色,则应该使用哪一个命令?( B )

A.SET ROLE ALL B. SET ROLE ENABLE ALL

C. ALTER SESSION ALL

D.ALTER USER ROLE ALL

28. 下列哪一个操作可以用来为一个备份操作手动分配通道?(A )A.ALLOCATE CHANNEL B. CREATE CHANNEL C. CHANNEL ALLOCATE

D. CREATE LINK

29. 下列哪一个命令用来显示RMAN通道的配置信息?(C )

A. LIST

B. DISPLAY

C.SHOW

D.都可以

30. 下列哪一个命令可以用来执行不完全恢复?( B )

A. RESTORE DATABASE UNTIL

B. RECOVER DATABASE UNTIL

C. RECOVER DATA UNTIL

D. RESTORE DATA UNTIL

三、简答题

1.说明数据库模式与用户之间的区别。

答案:

数据库模式与用户之间的区别在于:用户是数据库的使用者和管理者,用户具有帐户状态、访问权限和操作权限等属性。模式是一系列逻辑数据结构或对象的集合,是数据库中对象的组织和管理单位。

2.简要游标的作用和游标操作的基本步骤。

答案:

游标的作用是将数据库的中数据检索出来后缓存,可以被PL/SQL程序一行一行的读取并处理。支持一条、多条、零条记录的处理。

游标的基本操作步骤为:

(1)声明游标,使用查询来定义游标的列和行

(2)打开游标,使用PL/SQL命令OPEN来打开一个声明的游标

(3)提取数据,从游标中重复提取每条记录到数据结构中,直到数据集合被提交

(4)关闭游标,使用完游标后将其关闭

3.Oracle数据库的工作模式有哪两种?它们之间有有何区别?

答案:

在Oracle数据库中,数据库的操作模式分为专用服务器(DELICATED SERVER)模式和多线程服务器(MULTITHREADED SERVER)模式两种。其中,在专用服务器模式中为每个用户进程创建一个服务器进程,用户进程与服务器进程之间是1:1的关系;在共享服务器模式中,一个服务器进程可以为多个用户进程服务器。4.说明数据库内存结构中SGA和PGA的组成,以及这两个内存区存放信息的区别。

答案:

SGA区由数据缓冲区、共享池、重做日志缓冲区、大型池、JA V A池构成;PGA区由排序区、私有SQL区以及堆栈构成。SGA区是由Oracle分配的共享内存结构,包含一个数据库实例共享的数据和控制信息。当多个用户同时连接同一个实例时,SGA区数据供多个用户共享,所以SGA区又称为共享全局区。用户对数据库的各种操作主要在SGA区中进行。该内存区随数据库实例的创建而分配,随实例的终止而释放。PGA区是在用户进程连接数据库,创建一个会话时,由Oracle为用户分配的内存区域,保存当前用户私有的数据和控制信息,因此该区又称为私有全局区。每个服务器进程只能访问自己的PGA区,所有服务器进程PGA区总和即为实例的PGA区的大小。

5.说明数据库表空间的种类,以及不同类型表空间的作用。

答案:

数据库表空间分为系统表空间和非系统表空间两类,其中非系统表空间包括撤销表空间、临时表空间和用户表空间等。

SYSTEM表空间主要用于存储数据库的数据字典、PL/SQL程序的源代码和解释代码、数据库对象的定义。撤销表空间专门进行回退信息的自动管理。临时表空间是专门进行临时段管理的表空间。用户表空间用于分离不同应用的数据,而且能够减少读取数据文件时产生的I/O冲突。

6. 说明Oracle 10g数据库文本初始化参数文件与服务器初始化参数文件的区别。

答案:

文本初始化参数文件是一个本地的初始化参数文件,而服务器初始化参数文件是一个放在数据库服务器端的共享的二进制初始化参数文件。文本参数文件的修改是通过直接对文本的修改实现的,通过命令行是无法将修改后的参数值写入该文件中,而服务器初始化参数文件是不能直接修改的,必须通过ALTER SYSTEM语句来进行参数修改的。

7. 简述PL/SQL程序结构及各个部分的作用。

答案:

PL/SQL程序的基本单元是语句块,所有的PL/SQL程序都是由语句块构成的,语句块之间可以相互嵌套,每个语句块完成特定的功能。

声明部分:以关键字DECLARE开始,BEGIN结束。主要用于声明变量、常量、数据类型、游标、异常处理名称以及本地(局部)子程序定义等。

执行部分:是PL/SQL块的功能实现部分,以关键字BEGIN开始,EXCEPTION或END结束(如果PL/SQL块中没有异常处理部分,则以END结束)。该部分通过变量赋值、流程控制、数据查询、数据操纵、数

据定义、事务控制、游标处理等实现块的功能。

异常处理部分:以关键字EXCEPTION开始,END结束。该部分用于处理该块执行过程中产生的异常。

8. 说明触发器的种类和对应的作用对象、触发事件。

答案:

触发器包括DML触发器、INSTEAD-OF触发器和系统触发器。其中,DML触发器主要作用于表,其事件有INSERT、UPDATE、DELETE;INSTEAD-OF 触发器主要主用于视图,其事件有INSERT、UPDATE、DELETE;系统触发器主要是DML事件和系统事件发生时调用的触发器,其中DML事件包括CREATE、DROP、ALTER等,系统事件包括LOGON、LOGOFF、STARTUP、SHUTDOWN、SERVERERROR等。

9.简述Oracle数据库角色的种类、作用,以及如何利用角色为用户授权。

答案:

Oracle数据库中角色分为系统预定义的角色和用户自定义的角色两类。角色是一系列权限的集合,可以先将权限授予角色,然后将角色授予具有相同权限的用户。

四、求解题

现有关系数据库如下:

S(SNO,SNAME,CITY)

P(PNO,PNAME,COLOR,WEIGHT)

J(JNO,JNAME,CITY)

SPJ(SNO,PNO,JNO,QTY)

其中,S为供应商,包含属性的含义依次是供应商代码、供应商名字、供应商所在城市;P为零件,包含属性的含义依次是零件代码、零件名字、颜色、重量;J为工程项目,包含属性的含义依次是工程项目代码、工程项目名字、工程项目所在城市;SPJ为供货关系,包含属性的含义依次是供应商代码、零件代码、工程项目代码,某供应商向某个项目供应数量的零件数量。

请用SQL语言完成如下问题:

(1)查询供应工程J1零件P1的供应商号码SNO

(2)查询供应工程J1零件为红色的供应商号码SNO

(3)查询没有使用北京供应商生产的红色零件的工程号JNO

五、设计题(E-图)

六、PL/SQL语言程序设计题。

设学校环境如下:一个系有若干个专业,每个专业一年只招一个班,每个班有若干个学生:

现要建立关于系、学生、班级的数据库,关系模式为:

班CLASS(班号classid,专业名subject,系名deptname,入学年份enrolltime,人数num)

学生STUDENT(学号studentid,姓名name,年龄age,班号classid)

系DEPARTMENT(系号deptid,系名deptname)

试用PL/SQL语言完成以下功能:

1.建表,在定义中要求声明:

(1)每个表的主外键。

(2)每个班级的人数不能超过30人。

(3)学生的年龄介于15到40岁之间。

(4)学生姓名不能为空。

2.插入如下数据

3

4.学生张三退学,请更新相关的表。

1、有一张表test,有3个字段id,name,parentid。parentid是指父亲的id,请写一个sql语句,找出当过爷爷的id和name。

2、有一张学生表student,字段有student_id,name,即学号,名字。

还有一张选课表,字段有student_id,lesson_id。

还有一张课程表,字段lesson_id,lesson_name。

学生和课程是多对多的关系。

写一个sql语句,找出所有选了全部课程的学生。

3、有一张表person表,字段有id,name,age。age是年龄。

写一个sql语句,找出年龄最接近的2个人。

如有下面4条记录:

1,a,18

2,b,20

3,c,25

4,d,26

则输出3,4

emp表和dept表完成下列练习Emp员工表

empno

ename

job

Mgr

Hiredate

Sal

Comm

Deptno

员工号

员工姓名

工作

上级编号

受雇日期

薪金

佣金

部门编号

Dept表

Deptno

Dname

Loc

部门编号

部门名称

地点

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

select dept_id from s_emp where userid is not null;

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

select id,salary from s_emp where salary>(select salary from s_emp whe re first_name='Chad');

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

select l.first_name as yuangong,e.first_name as laoban from s_emp e,s_e mp l where e.manager_id=l.id(+);

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

select l.first_name as yuangong,e.first_name as laoban from s_e mp e,s_emp l where e.manager_id=l.id(+) and l.start_date>e.start _date;

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

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

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

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

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

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

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

12.列出薪金高于在部门30工作的所有员工的薪金的员工姓名和薪金。13.列出在每个部门工作的员工数量、平均工资和平均服务期限。14.列出所有员工的姓名、部门名称和工资。

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

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

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

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

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

原文:https://www.360docs.net/doc/196035704.html,/showtopic-524.aspx

Oracle习题二附答案使用scott/tiger的emp表完成练习

更多编程相关:https://www.360docs.net/doc/196035704.html,/showforum-11.aspx

答案:

1.

select distinct dname

from dept

where deptno in

(select distinct deptno

from emp);

要查部门编号如果存在于emp 表中,说明这个部门有员工。

2.

select ename,job,mgr,hiredate,sal

from emp

where sal>

(select sal

from emp

where ename='SMITH');

3.

select e.ename, e.mgr , w.ename

from emp e, emp w

where e.mgr=w.empno;

4.

select e.ename, e.mgr , e.hiredate,w.ename,w.hiredate from emp e, emp w

where e.mgr=w.empno

and e.hiredate< w.hiredate;

5.

select e.ename,e.hiredate, d.dname,d.deptno

from emp e, dept d

where e.deptno (+)=d.deptno;

本例子使用的是外连接,也可以用右连接。

select e.ename,e.hiredate, d.dname,d.deptno

from emp e right join dept d

on e.deptno=d.deptno;

6.

select e.ename,e.hiredate,e.job, d.dname,d.deptno from emp e, dept d

where e.deptno =d.deptno

and e.job=upper('clerk');

7.

select job, min(sal)

from emp

group by job

having min(sal)>1500;

8.

select e.ename,d.dname

from emp e,dept d

2楼

where e.deptno=d.deptno

and d.dname=upper('sales');

或者:

select ename

from emp

where deptno =

(select deptno

from dept

where dname=upper('SALES'));

9.

select ename, job, sal

from emp

where sal>

(select avg(sal)

from emp );

10.

select ename, job

from emp

where job =

(select job

from emp

where ename=upper('scott'));

11.

select ename, sal,job

from emp

where sal in

(select sal

from emp

where deptno=30);

12.

select ename, sal,job

from emp

where sal >all

(select sal

from emp

where deptno=30);

或者

select ename ,sal

from emp

where sal>

(select max(sal)

from emp

where deptno=30);

13.

select d.deptno,d.dname, count(e.ename), avg(e.sal), avg(months_between(sysdate,e.hiredate)) from emp e, dept d

where e.deptno(+)= d.deptno

group by d.deptno,dname;

或者下面的方法,这种方法更好理解,把需要汇总的生成一个视图e。

select e.*,d.dname ,

from (select deptno, count(ename) ,avg(sal),avg(months_between(sysdate,hiredate)) from emp

group by deptno) e, dept d

where e.deptno =d.deptno;

14.

select d.dname, e.ename, sal+nvl(comm,0)

from emp e, dept d

where d.deptno=e.deptno;

15.

select e.ename,e.job, e.deptno ,d.job, d.deptno

from emp e, emp d

where e.job=d.job and e.deptno<>d.deptno;

16.

select count(e.ename),d.dname

from emp e, dept d

where e.deptno(+)= d.deptno

group by e.deptno,d.dname;

或者写成

select d.deptno,e.*,d.dname

from (select deptno,count(ename)

from emp

group by deptno) e,dept d

where e.deptno(+)= d.deptno;

17.

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

18.

select deptno,min(sal) from emp where job=upper('manager')

group by deptno ;

19.

select ename , (sal+nvl(comm,0))*12 yearsal

from emp

order by yearsal ;

--1、列出至少有一个雇员的所有部门

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

--2、列出薪金比"SMITH"多的所有雇员

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

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

select e.ename,m.ename from emp e,emp m where e.mgr=m.empno(+);

--4、列出入职日期早于其直接上级的所有雇员

select ename from emp e where hiredate<(select hiredate from emp where empno=e.mgr);

--5、列出部门名称和这些部门的雇员,同时列出那些没有雇员的部门

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

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

select ename,dname from emp e left join dept d on e.deptno=d.deptno where

job=upper('clerk');

--7、列出各种工作类别的最低薪金,显示最低薪金大于1500的记录

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=uppder('SALES'))

--9、列出薪金高于公司平均水平的所有雇员

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

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

select ename from emp where job=(select job from emp where ename=upper('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 d.deptno,dname,count(ename) from dept d left join emp e on (d.deptno=e.deptno) group by d.deptno,dname

--14、列出所有雇员的雇员名称、部门名称和薪金

Select e.ename,d.dname,e.sal from emp e left join dept d on (d.deptno=e.deptno)

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

Select tba.ename,tbb.ename,tba.job,tbb.job,tba.deptno,tba.deptno

From emp tba,emp tbb

Where tba.job=tbb.job and tba.deptno<>tbb.deptno

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

Select dept.deptno,dname,loc,count(empno)

From dept,emp

Where dept.deptno=emp.deptno(+)

Group by dept.deptno,dname,loc

--17、列出各种类别工作的最低工资

Select min(sal) from emp group by job

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

Select dep tno,min(sal) from emp where job=upper(‘manager’) group by deptno

--19、列出按年薪排序的所有雇员的年薪

select (sal+nvl(comm,0))*12 as avn from emp order by avn

--20、列出薪金水平处于第四位的雇员

Select * from (Select ename,sal, rank() over (order by sal desc) as grade from emp) where grade=4

--1、选择部门30中的雇员

select * from emp where deptno=30;

--2、列出所有办事员的姓名、编号和部门

select ename,empno,dname from emp e inner join dept d on e.deptno = d.deptno whe re job=upper(‘clerk’);

--3、找出佣金高于薪金的雇员

select * from emp where comm>sal;

--4、找出佣金高于薪金60%的雇员

select * from emp where comm>sal*0.6

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

select * from emp where (deptno=10 and job=upper(‘manager‘)) or (deptno=20 and jo b=upper(‘clerk ‘));

--6、找出部门10中所有经理、部门20中所有办事员,既不是经理又不是办事员但其薪金>=2000的所有雇员的详细资料

select * from emp where (deptno=10 and job=upper(‘manager‘)) or (deptno=20 and jo b=upper(‘clerk ‘)) or (job<>upper(‘manager’) and job<>upper(‘clerk’) and sal>=2000) --7、找出收取佣金的雇员的不同工作

select distinct job from emp where comm>0;

--8、找出不收取佣金或收取的佣金低于100的雇员

select * from emp where nvl(comm,0)<100;

--9、找出各月最后一天受雇的所有雇员

select * from emp where hiredate= last_day(hiredate);

--10、找出早于25年之前受雇的雇员

select * from emp where months_between(sysdate,hiredate)/12>25; select * from emp where hiredate

--11、显示只有首字母大写的所有雇员的姓名

select ename from emp where ename=initcap(ename);

--12、显示正好为6个字符的雇员姓名

select ename from emp where length(ename)=6

--13、显示不带有‘R‘的雇员姓名

Select ename from emp where ename not like ‘%R%’;

Select ename from emp where instr(ename,’R’)=0;

--14、显示所有雇员的姓名的前三个字符

select substr(ename,1,3) from emp

--15、显示所有雇员的姓名,用a替换所有‘A‘

Select replace(ename,’A’,’a’) from emp

--16、显示所有雇员的姓名以及满10年服务年限的日期

Select ename,add_months(hiredate,12*10) ‘服务年限的日期’ from emp

--17、显示雇员的详细资料,按姓名排序

Select * from emp order by ename

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

Select ename from emp order by hiredate

--19、显示所有雇员的姓名、工作和薪金,按工作的降序顺序排序,而工作相同时按薪金升序

Select ename,job,sal from emp order by job desc ,sal asc

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

select ename,to_char(hiredate,‘yyyy‘),to_char(hiredate,‘mm‘) from emp order by hiredate asc

--21、显示在一个月为30天的情况下所有雇员的日薪金

select ename,sal/30 from emp;

--22、找出在(任何年份的)2月受聘的所有雇员

select * from emp where to_char(hiredate,‘mm‘)=‘02‘;

--23、对于每个雇员,显示其加入公司的天数

oracle课后题答案

一、选择题 1. 若关系的某一属性组的值能唯一地标识一个元组,我们称之为(B)。 A、主码 B、候选码 C、外码 D、联系 2. 以下不属于数据库模式的三要素的是(C)。 A、数据结构 B、数据操作 C、数据控制 D、完整性约束 3. 以下对关系性质的描述中,哪个是错误的?(B) A、关系中每个属性值都是不可分解的 B、关系中允许出现相同的元组 C、定义关系模式时可随意指定属性的排列次序 D、关系中元组的排列次序可以任意交换 二、填空题 1.数据管理发展的三个阶段是人工管理、文件管理和数据库系统管理。 2.数据库系统的三级模式包括逻辑模式、用户模式、物理模式。 三、思考题 1. 数据库管理系统的主要功能有哪些? 1)数据定义功能。DBMS提供相应数据语言来定义(DDL)数据库结构,它们是刻画数据库框架,并被保存在数据字典中。 2)数据存取功能。DBMS提供数据操纵语言(DML),实现对数据库数据的基本存取操作:检索,插入,修改和删除。 3)数据库运行管理功能。DBMS提供数据控制功能,即是数据的安全性、完整性和并发控制等对数据库运行进行有效地控制和管理,以确保数据正确有效。 4)数据库的建立和维护功能。包括数据库初始数据的装入,数据库的转储、恢复、重组织,系统性能监视、分析等功能。 5)数据库的传输;DBMS提供处理数据的传输,实现用户程序与DBMS之间的通信,通常与操作系统协调完成。 2.思考关系规范化的过程。 答:对于存在数据冗余、插入异常、删除异常问题的关系模式,应采取将一个关系模式分解为多个关系模式的方法进行处理。一个低一级范式的关系模式,通过模式分解可以转换为若干个高一级范式的关系模式,这就是所谓的规范化过程。 3.思考数据库设计的步骤。 答:1需求分析、2概念设计阶段、3逻辑结构设计阶段、4数据库物理结构设计阶段、5数据库实施阶段、6数据库运行和维护阶段。

oracle练习题

1、Oracle是对象关系型数据库管理系统。 2、Oracle 9i中的i和Oracle 10g、Oracle11g中的g各代表什么意思。 i是internet的意思,g是grid网格运算 3、数据库DB、数据库系统DBS、数据库管理系统DBMS三者之间的关系是___A____。(选择1项) A)DBS包括DB和DBMS B)DBMS包括DB和DBS C)DB包括DBS和DBMS D)DBS就是DB,也就是DBMS 5、完全卸载Oracle 11g时,需要进行的第一步操作是( A )。 A 停止所有的Oracle服务 B 启动Oracle的卸载向导 C 删除磁盘上的Oracle文件 D 删除数据库Orcl 6、安装Oracle数据库过程中SID指的是什么( B )。 A 系统标识号 B 数据库名 C 用户名 D 用户口令 7、Oracle网络配置分为服务器端和客户端,监听程序的配置是在_数据库服务 器端_。 8、监听程序与Net服务名的关系是怎样的? Oracle中的Net工具都能用来配置监听器和网络服务名 9、要开启Oracle服务器,必须开启的两个服务是( D )。 A.OracleHOME_NAMETNSListener和OracleHOME_NAMEAgent B.OracleServiceSID和OracleHOME_NAMEHTTPServer

C.OracleHOME_NAMEAgent和OracleServiceSID D.OracleHOME_NAMETNSListener和OracleServiceSID A 数据文件 B 控制文件 C 日志文件 D 归档日志文件 5、在Oracle中,一个用户拥有的所有数据库对象统称为(A)。 A 数据库 B 模式 C 表空间 D 实例 6、在Oracle数据库的逻辑结构中有以下组件: A 表空间 B 数据块 C 区 D 段 这些组件从大到小依次是( B) A A->B->C->D B A->D->C->B C A->C->B-> D D D->A- >C->B 7、在Windows操作系统中,Oracle的( A )服务器监听并接受来自客户端 应用程序的连接请求。 A OracleHOME_NAMETNSListener B OracleServiceSID

oracle复习题

一、选择题 1. Oracle数据表中,下面哪个可以作为有效的列名( A )(选择一项) A. class B. 123_NUM C. date D. #123_NUM 2. Oracle中的三种系统文件分别是( ABC )〔选择三项〕 A. 数据文件 DBF B. 控制文件 CTL C. 日志文件 LOG D. 归档文件 ARC 3.下面哪个命令可以用来查看学生表(表名student)的表结构( C )〔选择一项〕 A. Select student ; B. Display student ; C. Describe student ; D. Show student ;。 4.下面哪个命令不属于数据定义语言(DDL)( D )(选择一项) A. alter table… B、drop index… C、create view… D、update tablename… 5.在设计数据库时,要充分考虑数据的完整性或准确性。下面关于primary key和unique的描述错误的是()〔选择一项) A. primary key用来在表中设置主键,主键列的值是不能重复的,用来唯一标识表中的每一条记录 B. 设为unique的列的值是不能重复的,用来唯一区别unique列的值 C. primary key列不可以有null值, 而unique列是可以有null的 D. primary key列和unique列都不可以有null值 6.假定有一张表员工表employee,其中一性别字段sex,该列只能存入'男'或'女'。为了维护数据的完整性,在设计数据库时,最好对sex字段添加约束,请问应该添加什么约束( B )(选择一项) A. primary key B、check C、default D、unique 7.为表TEST中ID列添加主键约束的语法是( D )〔选择一项〕 A. ALTER TABLE TEST CHANGE( ID INT PRIMARY KEY) B. ALTER TABLE TEST ADD( ID INT PRIMARY KEY)

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课后题答案总教学内容

o r a c l e课后题答案总

第一章 一、选择题 1. 若关系的某一属性组的值能唯一地标识一个元组,我们称之为(B)。 A、主码 B、候选码 C、外码 D、联系 2. 以下不属于数据库模式的三要素的是(C)。 A、数据结构 B、数据操作 C、数据控制 D、完整性约束 3. 以下对关系性质的描述中,哪个是错误的?(B) A、关系中每个属性值都是不可分解的 B、关系中允许出现相同的元组 C、定义关系模式时可随意指定属性的排列次序 D、关系中元组的排列次序可以任意交换 二、填空题 1.数据管理发展的三个阶段是人工管理、文件管理和数据库系统管理。 2.数据库系统的三级模式包括逻辑模式、用户模式、物理模式。 三、思考题 1. 数据库管理系统的主要功能有哪些? 1)数据定义功能。DBMS提供相应数据语言来定义(DDL)数据库结构,它们是刻画数据库框架,并被保存在数据字典中。 2)数据存取功能。DBMS提供数据操纵语言(DML),实现对数据库数据的基本存取操作:检索,插入,修改和删除。

3)数据库运行管理功能。DBMS提供数据控制功能,即是数据的安全性、完整性和并发控制等对数据库运行进行有效地控制和管理,以确保数据正确有效。 4)数据库的建立和维护功能。包括数据库初始数据的装入,数据库的转储、恢复、重组织,系统性能监视、分析等功能。 5)数据库的传输;DBMS提供处理数据的传输,实现用户程序与DBMS之间的通信,通常与操作系统协调完成。 2.思考关系规范化的过程。 答:对于存在数据冗余、插入异常、删除异常问题的关系模式,应采取将一个关系模式分解为多个关系模式的方法进行处理。一个低一级范式的关系模式,通过模式分解可以转换为若干个高一级范式的关系模式,这就是所谓的规范化过程。 3.思考数据库设计的步骤。 答:1需求分析、2概念设计阶段、3逻辑结构设计阶段、4数据库物理结构设计阶段、5数据库实施阶段、6数据库运行和维护阶段。 第二章 一、选择题 1、Oracle 11g不具备的版本是(C) A.个人版 B.标准版 C. 扩展板 D.企业版 2、oracle 数据库的数据字典不能做的工作有(B) A.查找oracle数据库用户信息

oracle练习题目

1.习题:列出至少有一个员工的所有部门 select distinct d.deptno,d.dname from emp e join dept d on e.deptno=d.deptno; select distinct deptno from emp having count(empno)>=1 group by deptno; 2.习题:列出工资比“Smith”多的所有雇员。 select ename,sal from emp where sal>(select sal from emp where ename='SMITH'); 3.习题:列出所有员工的姓名和其直接上司的姓名① select e.ename,m.ename from emp e left join emp m on e.mgr=m.empno;②select emp.ename,mg.ename from emp join(select e.ename,e.empno from emp e join(select distinct mgr from emp where mgr is not null) m on empno=m.mgr) mg on emp.mgr=mg.empno; 4.习题:列出雇佣日期早于其直接上级的所有雇员的编号、姓名和部门名称 select empno,ename,dname from(select emp.empno,emp.ename,deptno dno from emp join(select e.ename,e.empno,e.hiredate from emp e join(select distinct mgr from emp where mgr is not null) m on empno=m.mgr) mg on emp.mgr=mg.empno and emp.hiredate

Oracle练习题讲解

一、填空 1.在多进程Oracle实例系统中,进程分为用户进程、后台进程和服务进程。 2.标准的SQL语言语句类型可以分为:数据定义语句(DDL)、数据操纵语句(DML)和数据控制语句(DCL)。 3.在需要滤除查询结果中重复的行时,必须使用关键字Distinct; 在需要返回查询结果中的所有行时,可以使用关键字ALL。 4.当进行模糊查询时,应使用关键字like和通配符问号(?)或百分号"%"。 5.Where子句可以接收From子句输出的数据,而HA VING子句则可以接收来自WHERE、FROM或GROUP BY子句的输入。 6.在SQL语句中,用于向表中插入数据的语句是Insert。 7.如果需要向表中插入一批已经存在的数据,可以在INSERT语句中使用Select 语句。 8.使用Describe命令可以显示表的结构信息。 9.使用SQL*Plus的Get命令可以将文件检索到缓冲区,并且不执行。 10.使用Save命令可以将缓冲区中的SQL命令保存到一个文件中,并且可以使用Run命令运行该文件。 11.一个模式只能够被一个数据库对象所拥有,其创建的所有模式对象都保存在自己的模式中。 12.根据约束的作用域,约束可以分为表级约束和列级约束两种。列级约束是字段定义的一部分,只能够应用在一个列上;而表级约束的定义独立于列的定义,它可以应用于一个表中的多个列。 13.填写下面的语句,使其可以为Class表的ID列添加一个名为PK_CLASS_ID 的主键约束。 ALTER TABLE Class Add ____________ PK_LASS_ID (Constraint) PRIMARY KEY ________ (ID) 14. 每个Oracle 10g数据库在创建后都有4个默认的数据库用户:system、sys、sysman和DBcnmp

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测试题

一、选择题(40分) 1.Oracle发出下列select语句: SQL> select , , 2 from emp e, dept d 3 where = 4 and substr, 1, 1) = ‘S’; 下列哪个语句是Oracle数据库中可用的ANSI兼容等价语句 A.select empno, ename, loc from emp join dept on = where substr, 1, 1) = ‘S’; B.select empno, ename, loc from emp, dept on = where substr, 1, 1) = ‘S’; C.select empno, ename, loc from emp join dept where = and substr, 1, 1) = ‘S’; D.select empno, ename, loc from emp left join dept on = and substr, 1, 1) = ‘S’; 2.下列哪个选项表示Oracle中select语句的功能 A.可以用select语句改变Oracle中的数据 B.可以用select语句删除Oracle 中的数据 C.可以用select语句和另一个表的内容生成一个表 D.可以用select语句对表截断 3.你要操纵Oracle数据,下列哪个不是SQL命令 A.select * from dual; B.set define C.update emp set ename = 6543 where ename = ‘SMITHERS’; D.create table employees(empid varchar2(10) primary key); 4.你要在Oracle中定义SQL查询。下列哪个数据库对象不能直接从select语句中引用

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数据库习题(有答案)

--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

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基础练习题及答案(多表查询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、以下(A)内存区不属于SGA。 A.PGA B.日志缓冲区C.数据缓冲区D.共享池 2、(D )模式存储数据库中数据字典的表和视图。 A.DBA B.SCOTT C.SYSTEM D.SYS 3、在Oracle中创建用户时,若未提及DEFAULT TABLESPACE关键字,则Oracle就将(C) 表空间分配给用户作为默认表空间。 A.HR B.SCOTT C.SYSTEM D的连接请求。.SYS 4、(A )服务监听并按受来自客户端应用程序 A.OracleHOME_NAMETNSListener B.OracleServiceSID C.OracleHOME_NAMEAgent D.OracleHOME_NAMEHTTPServer 5、(B )函数通常用来计算累计排名、移动平均数和报表聚合等。 A.汇总B.分析C.分组D.单行 6、(B )SQL语句将为计算列SAL*12生成别名Annual Salary A.SELECT ename,sal*12 …Annual Salary? FROM emp; B.SELECT ename,sal*12 “Annual Salary” FROM emp; C.SELECT ename,sal*12 AS Annual Salary FROM emp; D.SELECT ename,sal*12 AS INITCAP(“Annual Salary”) FROM emp; 7、锁用于提供( B )。 A.改进的性能 B.数据的完整性和一致性 C.可用性和易于维护 D.用户安全 8、(C )锁用于锁定表,允许其他用户查询表中的行和锁定表,但不允许插入、更新和删 除行。 A.行共享B.行排他C.共享D.排他 9、带有( B )子句的SELECT语句可以在表的一行或多行上放置排他锁。 A.FOR INSERT B.FOR UPDATE C.FOR DELETE D.FOR REFRESH 10、使用( C )命令可以在已分区表的第一个分区之前添加新分区。 A.添加分区B.截断分区 C.拆分分区D.不能在第一个分区前添加分区 11、( C )分区允许用户明确地控制无序行到分区的映射。 A.散列B.范围C.列表D.复合 12、可以使用(C )伪列来访问序列。 A.CURRVAL和NEXTVAL B.NEXTVAL和PREVAL C.CACHE和NOCACHE D.MAXVALUE和MINVALUE 13、带有错误的视图可使用(A )选项来创建。 A.FORCE B.WITH CHECK OPTION C.CREATE VIEW WITH ERROR D.CREATE ERROR VIEW 14、在联接视图中,当(B )时,该基表被称为键保留表。

Oracle测试题

1) PL/SQL块中可以使用下列()命令。(选择两项) a) TRUNCATE b) DELETE c) SA VEPOINT d) ALTER TABLE 2) 授予sa用户在SCOTT.EMP表中SAL列的更新权限的语句是()〔选择一项〕 a) GRANT CHANGE ON SCOTT.EMP TO SA b) GRANT UPDA TE ON SCOTT.EMP(SAL) TO SA c) GRANT UPDA TE (SAL) ON SCOTT.EMP TO SA d) GRANT MODIFY ON SCOTT.EMP(SAL) TO SA 3) EMP表有14条记录,则语句SELECT ‘Aptech’FROM EMP 的执行结果是() 〔选择一项〕 a) Aptech b) 无输出 c) 14行Aptech d) 编译出错 4) PL/SQL块中哪几部分是可选的()〔选择二项〕 a) Declare b) Begin c) Exception d) Constant 5) 在创建序列的过程中,下列()选项指定序列在达到最大值或最小值后,将继续从头 开始生成值。(选择一项) a) Cycle b) Nocycle c) Cache d) Nocache 6) 同义词有以下()用途。(选择三项) a) 简化SQL 语句 b) 隐藏对象的名称和所有者 c) 提供对对象的公共访问 d) 显示对象的名称和所有者 7) Oracle中用来释放锁的语句有()〔选择二项〕 a) commit b) Drop lock c) rollback d) unlock 8) 关于类型定义Number(9,2)说法正确的有()〔选择一项〕 a) 整数部分9位,小数部分2位,共11位 b) 整数部分7位,小数部分2位,共9位 c) 整数部分6位,小数点一位,小数部分2位,共9位

Oracle复习题及答案3

测试五 一、选择题 1、对于Oracle数据库软件的应用,主要分为哪两大块(AB )。〖2个答案〗 A.开发 B.管理 C.安装 D.调试 2、以下哪项不是Oracle数据库物理组件的类型(D)。〖1个答案〗 A. 数据文件 B. 控制文件 C. 日志文件 D. 表空间 3、以下哪项不是Oracle数据库的逻辑组件的类型(D)。〖1个答案〗 A. 表空间 B. 段 C. 扩展区 D. 日志文件 4、关于数据控制语言中,收回所授予的权限的语句是(B)。〖1个答案〗 A. Create B. Revoke C. Grant D. Update 5、Oracle数据库中,取余数的运算符是(B)。〖1个答案〗 A. % B. mod C. / D. || 6、Oracle数据库中,连接字符串的运算符是( D)。〖1个答案〗 A. + B. & C. is D. || 7、Oracle数据库中返回字符串长度的函数是(D)。〖1个答案〗 A. Substr B. Replace C. InStr D. Length 8、Oracle数据库中按指定的精度进行四舍五入的函数是(C)。〖1个答案〗 A. Sign B. Trunc C. Round D. Mod 9、转换日期类型为字符串的转换函数是(C)。〖1个答案〗 A. to_date B. to_datetime C. to_char D. to_number 10、在数据库中,对象Index表示(D)。〖1个答案〗 A.同义词 B.表 C.包 D.索引 11、关于通配符中的“%”,以下说法正确的两项是(BD)。〖2个答案〗 A. 代表任意一个字符,与Like结合使用 B. 代表任意多个字符,与Like结合使用 C. 代表任意一个字符,在Like后的表达式中只能使用一次“%” D. 代表任意多个字符,在Like后的表达式中可以使用多次“%” 12、要统计某表中记录的总个数,以下哪项是正确的SQL语句(C)。〖1个答案〗 A. select Max(*) from 表名 B. select Sum(*) from 表名 C. select Count(*) from 表名 D. select Min(*) from 表名 13、要求表中数据的最大值,应使用什么函数(A)。〖1个答案〗 A. Max B. Min C. Sum D. Avg 14、下列正确查询姓张的学生的语句是(B)。〖1个答案〗 A. select * from 表名 where 姓名= ‘张’ B. select * from 表名 where 姓名like ‘张%’ C. select * from 表名 where 姓名= ‘%张%’ D. select * from 表名 where 姓名like ‘张’ 15、关于表的主键,说法正确的两项是(CD)。〖2个答案〗 A. 主键字段的值最多允许有一条记录为Null B. 主键字段的值可以重复 C. 主键字段的值不能为Null D. 主键字段的值不能重复

相关文档
最新文档