文档库 最新最全的文档下载
当前位置:文档库 › ORACLE数据库习题

ORACLE数据库习题

ORACLE数据库习题
ORACLE数据库习题

1.ORACLE数据库物理结构包括以下三种文件,以下不属于的是()

A.系统文件

B.日志文件

C.数据文件

D.控制文件

2.下列哪个命令是用于ORACLE中数据导出的( )

A.exp B.imp C.input D.output

3.()是用于控制数据访问的语言。

A.DML B.DDL C.DCL D.DLL

4.NULL表示什么()

A.0 B.空格C.值D.没有值

5.下面四个语句中哪一个是正确的?()

A.SELECT * , ENAME FROM EMP;

B.DELETE * FROM EMP;

C.SELECT DISTINCT EMPNO ,HIREDA TE FROM EMP;

D.SELECT ENAME|SAL AS “name” FROM EMP ;

6.假定有一张表用户表users,其中一身份证字段ID_card。为了维护数据的完整性,在

设计数据库时,最好对ID_card字段添加约束,请问应该添加什么约束()

A.primary key B.check C.default D.not null

7.下面哪一个like命令会返回名字象HOTKA的行?()

A.where ename like …_HOT%'

B.w here ename like …H_T%'

C.w here ename like …%TKA_'

D.where ename like …%TOK%'

8.()操作符只返回由第一个查询选定但是没有被第二个查询选定的行。

A.UNION

B.UNION ALL

C.INTERSECT

D.MINUS

9

A.表中没有行。

B.有一个姓名为James的员工。

C.不能多次回滚到相同的保存点。

D.由于已经删除了员工ID180,因此最后一次更新未更新任何行。

10.以下运算结果不为空值的是()

A.12+NULL

B.60*NULL

C.NULL‖?NULL?

D.12/(60+NULL)

11.若当前日期为?25-5月-06?,以下()表达式能计算出5个月后那一天所在月份的最后一天的日期。

A.NEXT_DAY(ADD_MONTHS(?28-5月-06?,5))

B.NEXT_DAY(MONTHS_BETWEEN(?28-5月-06?,5))

C.LAST_DA Y(MONTHS_BETWEEN(?28-5月-06?,5))

D.LAST_DAY(ADD_MONTHS(?28-5月-06?,5))

12.( )子句用于列出唯一值。

A.unique B.distinct C.order by D.group by

13.哪一个是子查询执行的顺序()

A.最里面的查询到最外面的查询

B.最外面的查询到最里面的查询

C.简单查询到复杂查询

D.复杂查询到简单查询

14.下面哪一个语句可以使用子查询()

A.SELECT 语句B.UPDA TE语句

C.DELETE语句D.以上都是

15.如果表DEPT包含3条记录,现在用如下命令对其进行修改,

ALTER TABLE DEPT ADD (COMP NUMBER(4)NOT NULL);

请问下面哪一个说法是正确的()

A.该语句在表的最前面插入一个非空列

B.该语句在表的最后插入一个非空列

C.该语句执行完成后,应当立即执行COMMIT语句,以确保更改生效

D.该语句将产生错误

16.下列哪个是组合主键的特征()

A.每列有唯一的值,但不是NULL值

B.组合有唯一的值,并且其中每列没有NULL值

C.组合的第一列和最后一列有唯一值

D.组合的第一列和最后一列有唯一值,但没有NULL值

17.当删除父表中的数据时,在CREATE TABLE语句的外键定义中指定的()选项删除子表中的数据。

A.ON TRUNCATE CASCADE

B.ON DELETE CASCADE

C.ON UPDA TE CASCADE

D.A和C都是

18.视图可以用于()

A.限制对表中指定列的访问

B.限制对表中行的子集的访问

C.A和B都是

D.A和B都不是

19.语句SELECT * FROM dept WHERE N OT EXISTS (SELECT * FROM emp WHERE deptno=dept.deptno)执行后的结果为()

A.只显示存在于EMP表中的部门全部信息。

B.只显示不存在于EMP表中的部门全部信息

C.未返回任何数据

D.显示DEPT表中的全部信息

20.已创建序列S1,若当前值为2,先执行3次S1.CURRV AL,再执行3次S1.NEXTV AL,最后S1的值是()

A.3 B.4 C.5 D.6

21.数据库中有两个用户scott和myuser,物资表wz是属于myuser用户的,但当前用户是scott,要求查询物资表wz(wno,wname,wtype,wunit)物资单位wunit列为null 的记录,取结果的前5条记录显示,以下正确的SQL语句是()

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;

22.若用户要连接数据库,则该用户必须拥有的权限是()

A.create table B.create index

C.create session D.connect

23.授予删除任何表的系统权限(DROP ANY TABLE)给user1,并使其能继续授该权限给其他用户,以下正确的SQL语句是()

A.Grant drop any table to user1;

B.Grant drop any table to user1 with admin option;

C.Grant drop table to user1;

D.Grant drop any table to user1 with check potion;

24.当给一个有主键的表中插入重复行时,将引发下列哪个异常?()A.NO_DATA_FOUND B.TOO_MANY_ROWS

C.DUP_V AL_ON_INDEX D.ZERO_DIVIDE

25.下面的查询中哪一个会产生笛卡尔集?()

A.SELECT e.empno, e.ename, e.deptno, d.deptno, d.loc FROM emp e, dept d

WHERE e.deptno = d.deptno;

B.SELECT e.empno, e.ename, e.deptno, d.deptno, d.loc FROM emp e, dept d;

C.SELECT e.empno, e.ename, e.deptno, d.deptno, d.loc FROM emp e, dept d

WHERE e.empno = 101 and e.deptno = d.deptno;

D.SELECT e.empno, e.ename, e.deptno, d.deptno, d.loc FROM emp e, dept d

WHERE e.deptno= d.deptno and d.deptno = 60;

26.当每个非主键列完全依赖于(整个)主键列时,关系设计属于下列哪一种形式()A.第一范式B.第二范式

C.第三范式D.第四范式

27.一般在()中有机会使用:NEW和:OLD

A.游标B.存储过程

C.函数D.触发器

28.在Oracle中,PL/SQL块中定义了一个带参数的游标:

CURSOR emp_cursor(dnum NUMBER) IS

SELECT sal, comm FROM emp WHERE deptno = dnum;

那么正确打开此游标的语句是()

A.OPEN emp_cursor;

B.OPEN emp_cursor FOR 20;

C.OPEN emp_cursor USING 20;

D.FOR emp_rec IN emp_cursor(20) LOOP … END LOOP;

29.下面哪些是函数中的有效参数模式?()

A.IN

B. INOUT

C.OUT

D. OUT IN

30.( )是一个单一的逻辑工作单元。

A.记录 B.数据库

C.事务D.字段

1.数据定义语言是用于()的方法。“选择一项”

A.确保数据的准确性B、定义和修改数据结构

C、查看数据

D、删除和更新数据

2.要以自身的模式创建私有同义词,用户必须拥有()系统权限。“选择一项”

A.CREATE PRIVATE SYNONYM

B.CREATE PUBLIC SYNONYM

C.CREATE SYNONYM

D.CREATE ANY SYNONYM

3.通常情况下,( )值可以唯一地标识数据库中的一行。“选择二项”

A.ROWNUM

B.PRIMARY KEY

C.UNIQUE

D.ROWID

4.Oracle中,表名应该严格遵循下列哪些命名规则()(选择二项)

A.表名的最大长度为20个字符

B.表名首字符可以为字母或下划线

C.同一用户模式下的不同表不能具有相同的名称

D.不能使用Oracle保留字来为表命名

5.在设计数据库时,要充分考虑数据的完整性或准确性。下面关于primary key和unique 的描述错误的是()“选择二项)

A.primary key用来在表中设置主键,主键列的值是可以重复的,用来唯一标识表中的每一条记录

B.primary key列和unique列都不可以有null值

C.设为unique的列的值是不能重复的,用来唯一区别unique列的值

D.primary key列不可以有null值, 而unique列是可以有null的

6.假定有一张表用户表users,其中一身份证字段ID_card。为了维护数据的完整性,在

设计数据库时,最好对ID_card字段添加约束,请问应该添加什么约束()(选择一项)

A.primary key B、check C、default D、unique

7.下面哪个命令不属于数据操纵语言(DML)( )(选择二项)

A.ALTER…

B.INSERT…

C、 UPDATE…

D、 DROP…

8.()操作符只返回由第一个查询选定但是没有被第二个查询选定的行。“选择一项”

E.UNION

F.UNION ALL

G.INTERSECT

H.MINUS

9.EMPLOYEES表的结构如下:

E.表中没有行。

F.有一个姓名为James的员工。

G.不能多次回滚到相同的保存点。

H.由于已经删除了员工ID180,因此最后一次更新未更新任何行。

10.删除emp表中所有数据,且可以rollback,以下语句哪个命令可以实现()(选择一项)

A.truncate table emp

B.drop table emp

C.delete * from emp

D.delete from emp

11.你发出命令: DROP TABLE emp;

此时你还没有明确发出COMMIT命令。你能用什么命令撤消上面的drop语句所做的操作?()“选择一项”

A.关闭数据库

B.什么命令都不可以,因为DDL语句不能被回滚

C.发出一个ROLLBACK命令

D.终断正在活动的会话

12.表ORDERS的结构定义如下:

下列哪两个语句,能检索出预定总量在100.00与2000.00之间的记录? ()“不定项选择”

A.SELECT customer_id,order_id,order_total FROM orders HAVING order_total

BETWEEN 100 AND 2000;

B.SELECT customer_id,order_id,order_total FROM orders WHERE order_total

BETWEEN 100 AND 2000;

C.SELECT customer_id,order_id,order_total FROM orders WHERE

order_total>=100 AND <=2000;

D.SELECT customer_id,order_id,order_total FROM orders HAVING ON order_total

(100 and 2000) INCLUSIVE;

E.SELECT customer_id,order_id,order_total FROM orders WHERE order_total>=100

AND order_total<=2000;

13.以下哪些是有效的Oracle约束类型?( )(选择四项)

A. UNIQUE

B.NONUNIQUE

C. CHECK

D.CASCADE

E. PRIMARY KEY

F.CONSTANTG

G.NOT NULL

14.更改oracle用户HR,使其变为不可用(锁定)状态()“选择一项”

A.UPDATE USER HR ACCOUNT DISABLE ;

B.UPDATE USER HR ACCOUNT LOCK ;

C.ALTER USER HR ACCOUNT LOCK ;

D.ALTER USER HR ACCOUNT DISABLE ;

15.INSERT INTO TEST VALUES(‘&ID’, ’&NAME’); 语句在执行时将()“选择一项”

A.编译错:提示变量未定义

B.运行错:提示不能识别符号

C.将值&ID和&NAME插入到表中

D.提示用户输入输入ID和NAME的值,再将输入值插入表中

16.下面关于删除视图的说法哪一个是正确的()。(选择一项)

A.删除视图后应立即用COMMIT语句使更改生效

B.删除视图后,和视图关联的表中的数据不再存在

C.视图被删除后视图中的数据也将被删除

D.用dorp VIEW删除视图

17.()函数通常用来计算累计排名、移动平均数和报表聚合等。“选择一项)

A.汇总

B.分析

C.分组

D.单行

18.集合操作符Intersect的作用是()“选择一项”

A.将两个记录集联接起来

B.选择第一个查询有,而第二个没有的记录

C.选择二个查询的交集

D.选择第二个查询有,而第一个没有的记录

19.EMP1表包含下面这些字段。

要的结果。()(选择一项)

A.SELECT ENAME FROM EMP1 WHERE SYSDATE-HIRE_DATE>5;

B.SELECT ENAME FROM EMP1 WHERE HIRE_DATE-SYSDATE>5;

C.SELECT ENAME FROM EMP1 WHERE (SYSDATE-HIRE_DATE)/365>5;

D.SELECT ENAME FROM EMP1 WHERE (SYSDATE-HIRE_DATE)*365>5;

20.在Oracle中,使用下列的语句:

CREATE PUBLIC SYNONYM parts FOR Scott.inventory;

完成的任务是()。(选择一项)

A.需要给出schema被除去的对象名

B.指定了新的对象权限

C.指定了新的系统权限

D.给Scott.inventory对象创建一个公用同义词parts

21.在Oracle中,有一个名为seq_id的序列对象,假定此时查看seq_id序列当前值显示为100,那么执行下面的sql

insert into test(id, name) values(seq_id.NEXTVAL,'tom' );

很不幸,这个insert没有执行成功,随后马上执行rollback,问:此时查看seq_id 序列当前值显示为()“选择一项”

A. 99 B、100

C、101

D、不能确定

22.PL/SQL块中不能直接使用的SQL命令是()“选一项”

A.SELECT

B.INSERT

C.UPDATE

D.DROP

23.在PL/SQL块中,以零作除数时会引发下列( )异常。(选择一项)

A.VALUE_ERROR

B.ZERO_DIVIDE

C.VALUE_DIVIDE

D.ZERO_ERROR

24.在Oracle中,有一个名为seq的序列对象,以下语句能返回序列值但不会引起序列值增加的是()(选择一项)

A.select seq.ROWNUM from dual;

B.select seq.NEXTVAL from dual;

C.select seq.CURRVAL from dual;

D.select seq.CURIVAL from dual;

25.当Select Into语句的返回没有数据时,将引发下列哪个异常?()[选择一项]

A.No_Data_Found

B.To_Many_Row

C.Too_Many_Rows

D.Invalid_Number

26.创建序列时,若未指定Cycle选项,则当前值大于MaxValue时将()“选择一项”

A.从MinValue重新开始循环

B.重复使用MaxValue 值

C.执行出错

D.使用随机值

27.PL/SQL块中哪几部分是可选的()“选择二项”

A.Declare

B.Begin

C.Exception

D.以上均是

28.在Oracle中,PL/SQL块中定义了一个带参数的游标:

CURSOR emp_cursor(dnum NUMBER) IS

SELECT sal, comm FROM emp WHERE deptno = dnum;

那么正确打开此游标的语句是()(选择两项)

E.OPEN emp_cursor(20);

F.OPEN emp_cursor FOR 20;

G.OPEN emp_cursor USING 20;

H.FOR emp_rec IN emp_cursor(20) LOOP … END LOOP;

29.在Insert触发器中可使用的引用有()“选一项”

A.new

B.Old

C.:Update

D.:New和:Old

30.下面哪些是过程中的有效参数模式?()“不定项选择”

A.IN

B. INOUT

C.OUT

D. OUT IN

1.检索部门编号、部门名称、部门所在地及其每个部门的员工总数。

select d.deptno,d.dname,d.loc,count(*) from emp e,dept d where e.deptno=d.deptno group by d.deptno,d.dname,d.loc;

2.检索员工和所属经理的姓名。

select e.ename 雇员,m.ename 经理 from emp e,emp m where e.mgr=m.empno;

3.检索工资等级处于第四级别的员工的姓名。

select e.ename from emp e inner join salgrade s on (e.sal between s.losal and s.hisal) where

s.grade=4;

4.检索工资等级高于smith的员工信息。

select * from emp e join salgrade s on (e.sal between s.losal and s.hisal) where s.grade>(select distinct s.grade from emp e join salgrade s on ((select sal from emp where ename='SMITH') between s.losal and s.hisal));

5.检索30部门中1980年1月份之前入职的员工信息。显示:员工号、员工名、部门号,部门名、入职日期。

select empno,ename,d.deptno,d.dname,hiredate from emp,dept d where emp.deptno=d.deptno and d.deptno=30 and hiredate

6.检索雇员的雇佣日期早于其经理雇佣日期的员工及其经理姓名。

select e.ename 雇员,m.ename 经理,e.HIREDATE 雇员的雇佣日期,m.hiredate 经理雇佣日期from emp e,emp m where e.mgr=m.empno and e.hiredate

7.按部门号(deptno)及工资(sal)排序检索公司的员工信息(要求部门号从大到小,部门号相同的按工资由低到高),显示的字段为:员工号、员工名、工资、部门号。

select empno,ename,sal,deptno from emp order by deptno desc,sal;

8.检索不同部门经理的最低工资。

select m.ename,e.empno,e.sal from emp e,emp m where e.mgr=m.empno and e.deptno in (select deptno from emp group by deptno) and e.sal in (select min(sal) from emp group by deptno);

9.检索部门号及其本部门的最低工资。

select deptno,min(sal) from emp group by deptno;

10.检索从事clerk工作的员工姓名和所在部门名称。

select e.ename,d.dname from emp e join dept d on e.deptno=d.deptno where e.job='CLERK';

11.检索和名叫SCOTT的员工相同工资的员工信息,但不显示SCOTT。显示字段:员工号、员工名、工资。

select empno,ename,sal from emp where sal =(select sal from emp where ename='SCOTT') and ename!='SCOTT'

12.检索与SCOTT从事相同工作的员工信息。

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

13.检索出员工表emp中的第3条到第8条记录。显示字段:emp表中的全部字段。

select * from (select rownum num,e.* from emp e) where num>=3 and num<=8;

14.检索与30部门员工工资等级相同的员工姓名与工资。

select * from emp e join salgrade s on (e.sal between s.LOSAL and s.HISAL) where s.grade=(select distinct s.grade from emp e join salgrade s on ((select avg(sal) from emp where deptno=30) between s.LOSAL and s.HISAL));

15.求分段显示薪水的个数。显示结果如下:

DEPTNO 800-2000 2001-5000

------ ---------- ----------

30 5 1

20 2 3

10 1 2

select t1.deptno, "800-2000", "2001-5000" from (

select deptno , count(*) as "800-2000" from emp where sal between 800 and 2000 group by deptno ) t1

join (

select deptno , count(*) as "2001-5000" from emp where sal between 2001 and 5000 group by deptno) t2

on t1.deptno = t2.deptno;

16.用PL/sql实现输出7369号员工的姓名。

---用PL/sql实现输出7369员工的姓名;

set serveroutput on; -- 将sql*plus的输出功能开启

declare --声明部分

var_empno number(4) := 7369 ; --声明一个变量var_empno ,并给赋值,用:= 赋值var_name varchar2(10); --声明一个变量var_name

var_sal number(9,2);

begin --执行部分的开始

select ename ,sal into var_name ,var_sal from emp where empno = var_empno;

dbms_output.put_line(var_empno || ' 的名字是:' || var_name); --输出语句

dbms_output.put_line(var_empno || ' 的工资是:' || var_ sal ); --输出语句

end; --执行部分的结束,end后面要加;

----执行结果为:

7369 的名字是: SMITH

PL/SQL 过程已成功完成。

17.编写一sql语句,将7369号员工的入职日期改为1997/7/1,工资提高800 ,其他信息不变。

update emp set hiredate=to_date('1997/7/1','yyyy-mm-dd'),sal=sal+800 where empno=7369;

18.假定现在有一张表,表名为T_emp ,其表结构和现有的emp表结构完全相同,但是T_emp 中没有记录,请编写一sql语句,实现将emp中部门编号为20的员工信息添加到T_emp中。

19. 对所有员工,如果该员工职位是MANAGER,并且在DALLAS工作那么就给他薪金加15%;如果该员工职位是CLERK,并且在NEW YORK工作那么就给他薪金扣除5%;其他情况不作处理。要求:使用游标或函数编程实现。

set serveroutput on;

declare

cursor c1 is select * from emp;

c1rec c1%rowtype;

v_loc varchar2(20);

begin

for c1rec in c1 loop

select loc into v_loc from dept where deptno = c1rec.deptno;

if c1rec.job = 'MANAGER' and v_loc = 'DALLAS' then

update emp set sal = sal * 1.15 where empno = c1rec.empno;

elsif c1rec.job='CLERK' and v_loc = 'NEW YORK' then

update emp set sal = sal * 0.95 where empno = c1rec.empno;

else

null;

end if;

end loop;

end;

20.对直接上级是'BLAKE'的所有员工,按照参加工作的时间加薪:1981年6月以前入职的员工加薪10%、1981年6月以后入职的员工加薪5%。

要求:使用游标或函数编程实现。

declare

cursor c1 is select * from emp where mgr = (select

empno from emp where ename='BLAKE'); --直接上级是'BLAKE'的所有员工

c1rec c1%rowtype;

begin

for c1rec in c1 loop

if c1rec.hiredate < '01-6月-81' then

update emp set sal = sal * 1.1 where empno = c1rec.empno;

else

update emp set sal = sal * 1.05 where empno = c1rec.empno;

end if;

end loop;

end;

1.创建一个角色MYROLE,此角色具有建表,建视图的系统权限和查找SCOTT用户

EMP,DEPT表的权限,将此角色授权给TEST用户。

CREATE ROLE MYROLE;

GRANT CREATE TABLE,CREATE VIEW TO MYROLE;

GRANT SELECT ON SCOTT.EMP TO MYROLE;

GRANT SELECT ON SCOTT.DEPT TO MYROLE;

CREATE USER TEST IDENTIFIED BY TEST;

GRANT MYROLE TO TEST;

2.创建EMP,DEPT两张表的副表(包括它们之间的约束)

CREATE TABLE mydept AS SELECT * FROM dept;

ALTER TABLE mydept ADD CONSTRAINT pk_mydept_deptno PRIMARY KEY(deptno);

CREATE TABLE myemp AS SELECT * FROM emp

ALTER TABLE myemp ADD CONSTRAINT pk_myemp_empno PAIMARY KEY(empno);

ALTER TABLE myemp ADD CONSTRAINT fk_myemp_mydept FOREIGN KEY(deptno) REFERENCES mydept(deptno);

3.找出部门10中所有经理、部门20中所有办事员,既不是经理又不是办事员但其薪

金>=2000的所有雇员的详细资料

select * from emp where (deptno=10 and job=upper('manager')) or (deptno=20 and job=upper('clerk ')) or (job<>upper(…manager?) and job<>upper(…clerk?) and sal>=2000)

4.找出不收取佣金或收取的佣金低于100的雇员

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

5.显示不带有'R'的雇员姓名

Select ename from emp where ename not like …%R%?;

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

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

7.求哪些人工资在平均工资之上,列出姓名和工资。

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

8.显示除20部门外,部门平均工资在2500以上的部门,列出部门编号和平均工资。

select avg(sal) , deptno from emp where deptno <>20 group by deptno having avg(sal) > 2500;

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

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

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

select a.*,(select count(*) from emp where deptno=a.deptno) tot from dept a ;

11.列出各种工作的最低月收入。

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

12.返回工资水平(等级)高于平均工资水平的员工详细信息。

select * from emp e join salgrade s on (e.sal between s.losal and s.hisal) where s.grade>(select distinct s.grade from emp e join salgrade s on ((select avg(sal) from emp) between s.losal and s.hisal));

13.列出至少有两个员工的所有部门信息

select * from dept

where deptno in

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

14.查询emp表的第6行到第10行内容

Select * from (select rownum r,e.* from emp e) where r between 6 and 10;

15.查询入职最早的前5到10名员工的姓名和入职日期(按年月日格式显示日期)

Select ename,to_char(hiredate,?yyyy-mm-dd?) from (select ename,hiredate,rownum r from (select ename,hiredate from emp order by hiredate ) where rownum<=10) where r>=5;

16.编写一sql语句,将7369号员工的入职日期改为1997/7/1,工资提高800 ,其他信息

不变。

update emp set hiredate=to_date('1997/7/1','yyyy-mm-dd'),sal=sal+800 where empno=7369;

17.查询雇员和其直接领导姓名及他们所在部门名称,没有领导的雇员也要列出.

select e.ename,ed.dname,m.ename,md.dname from emp e,emp m,dept ed,dept md where

e.deptno=ed.deptno and e.mgr=m.empno(+) and m.deptno=md.deptno(+);

18.列出部门编号,部门名称,部门的员工数量,部门的平均工资.

select d.deptno,d.dname,t.cou,t.avg from dept d,(select deptno,count(empno) cou,avg(sal) avg from emp group by deptno) t where d.deptno=t.deptno;

19.定义游标update_cur,根据职务调整雇员的工资,如果职务为?SALESMAN?或者

?ANAL YST?工资上调100元,如果职务为?MANAGER?工资上调200元,其它职务工资上调50元。

1. 对所有员工,如果该员工职位是MANAGER,并且在DALLAS工作那么就

给他薪金加15%;

如果该员工职位是CLERK,并且在NEW YORK工作那么就给他薪金扣除

5%;其他情况不作处理。要求:使用游标或函数编程实现。

1.

set serveroutput on;

declare

cursor c1 is select * from emp;

c1rec c1%rowtype;

v_loc varchar2(20);

begin

for c1rec in c1 loop

select loc into v_loc from dept where deptno = c1rec.deptno;

if c1rec.job = 'MANAGER' and v_loc = 'DALLAS' then

update emp set sal = sal * 1.15 where empno = c1rec.empno;

elsif c1rec.job='CLERK' and v_loc = 'NEW YORK' then

update emp set sal = sal * 0.95 where empno = c1rec.empno;

else

null;

end if;

end loop;

end;

2.用PL/sql实现输出7369号员工的姓名。

set serveroutput on; -- 将sql*plus的输出功能开启

declare --声明部分

var_empno number(4) := 7369 ; --声明一个变量var_empno ,并给赋值,用:= 赋值var_name varchar2(10); --声明一个变量var_name

var_sal number(9,2);

begin --执行部分的开始

select ename ,sal into var_name ,var_sal from emp where empno = var_empno;

dbms_output.put_line(var_empno || ' 的名字是:' || var_name); --输出语句

dbms_output.put_line(var_empno || ' 的工资是:' || var_ sal ); --输出语句

end; --执行部分的结束,end后面要加;

----执行结果为:

7369 的名字是: SMITH

1. 定义游标update_cur,根据职务调整雇员的工资,如果职务为

?SALESMAN?或者?ANAL YST?工资上调100元,如果职务为

?MANAGER?工资上调200元,其它职务工资上调50元。

1.

DECLARE

v_job emp.job%TYPE;

CURSOR update_cur

IS

SELECT job

FROM emp

FOR UPDATE;

BEGIN

OPEN emp_cur;

LOOP

FETCH update_cur INTO v_job;

EXIT WHEN emp_cur%NOTFOUND;

CASE

WHEN v_job='SALESMAN' OR v_job='ANALYST' THEN

update emp set sal=sal+100 where current of emp_cur;

WHEN v_job=' MANAGER ' THEN

update emp set sal=sal+200 where current of emp_cur;

ELSE

update emp set sal=sal+50 where current of emp_cur;

END CASE;

END LOOP;

END;

2.创建一个触发器,使其可以修改DEPT表的DEPTNO。

create or replace trigger update_dept

after update on dept

for each row

begin

update emp set deptno=:new.deptno where deptno=:old.deptno;

end;

中南大学oracle数据库期末考试试题及答案

A1、以下()内存区不属于SGA。 A.PGA B.日志缓冲区C.数据缓冲区D.共享池 D2、()模式存储数据库中数据字典的表和视图。 A.DBA B.SCOTT C.SYSTEM D.SYS C3、在Oracle中创建用户时,若未提及DEFAULT TABLESPACE 关键字,则Oracle就将()表空间分配给用户作为默认表空间。 A.HR B.SCOTT C.SYSTEM D.SYS A4、()服务监听并按受来自客户端应用程序的连接请求。 A.OracleHOME_NAMETNSListener B.OracleServiceSID C.OracleHOME_NAMEAgent D.OracleHOME_NAMEHTTPServer B5、()函数通常用来计算累计排名、移动平均数和报表聚合等。 A.汇总B.分析C.分组D.单行 B6、()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; B7、锁用于提供( )。 A.改进的性能

B.数据的完整性和一致性 C.可用性和易于维护 D.用户安全 C8、( )锁用于锁定表,允许其他用户查询表中的行和锁定表,但不允许插入、更新和删除行。 A.行共享B.行排他C.共享D.排他 B9、带有( )子句的SELECT语句可以在表的一行或多行上放置排他锁。 A.FOR INSERT B.FOR UPDATE C.FOR DELETE D.FOR REFRESH C10、使用( )命令可以在已分区表的第一个分区之前添加新分区。 A.添加分区B.截断分区 C.拆分分区D.不能在第一个分区前添加分区 C11、( )分区允许用户明确地控制无序行到分区的映射。 A.散列B.范围C.列表D.复合 C12、可以使用()伪列来访问序列。 A.CURRVAL和NEXTVAL B.NEXTVAL和PREVAL C.CACHE和NOCACHE D.MAXVALUE和MINVALUE A13、带有错误的视图可使用()选项来创建。 A.FORCE B.WITH CHECK OPTION C.CREATE VIEW WITH ERROR

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数据库试题

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;

(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数据库简答题-考试重点

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、说明数据库、表空间、数据文件以及数据库对象之间的关系。 一个数据库由一个或多个表空间构成,不同的表空间用于存放不同应用的数

Oracle数据库基础

Oracle 数据库基础 数据库是我们安装完产品后建立的,可以在同一台主机上存在8i,9i,10g,11g等多个数据库产品,一套产品可以建立多个数据库,每个数据库是独立的。每个数据库都有自己的全套相关文件,有各自的控制文件、数据文件、重做日志文件、参数文件、归档文件、口令文件等等。 其中控制文件、数据文件、重做日志文件、跟踪文件及警告日志(trace files,alert files)属于数据库文件; 参数文件(parameter file)口令文件(password file)是非数据库文件 我们的表存储在数据库中 数据库不能直接读取 我们通过实例(instance)来访问数据库 数据库实例 实例由内存和后台进程组成 实例是访问数据库的方法 初始化参数控制实例的行为 一个实例只能连接一个数据库

启动实例不需要数据库 产品安装好 有初始化参数文件 就可以启动实例 与是否存在数据库无关 实例内存分为SGA 和PGA SGA:是用于存储数据库信息的内存区,该信息为数据库进程所共享。它包含Oracle 服务器的数据和控制信息,它是在Oracle 服务器所驻留的计算机的实际内存中得以分配,如果实际内存不够再往虚拟内存中写。 PGA:包含单个服务器进程或单个后台进程的数据和控制信息,与几个进程共享的SGA正相反,PGA 是只被一个进程使用的区域,PGA 在创建进程时分配,在终止进程时回收. 后台进程是实例和数据库的联系纽带 分为核心进程和非核心进程 当前后台进程的查看 SQL> select name,description from v$bgprocess where paddr<>'00'; NAME DESCRIPTION

oracle数据库练习题参考答案

第1章Oracle 11g简介 软件122班王平安 一、选择题 1.D 2.D 3.C 4.A 5.D 6.D 7.B 二、填空题 1.视图2.索引3.簇4.DB_BLOCK_SIZE 5.SYSTEM 6.数据文件7.日志文件8.控制文件 9.系统全局区(System Global Area,SGA) 10.程序全局区(Program Global Area,PGA) 11.数据库管理员12.安全官员 13.网络管理员14.应用程序开发员 15.应用程序管理员16.数据库用户。 三、简答题 1.答: 数据库由若干个表空间组成,表空间由表、索引、视图等逻辑对象组成,表由段组成,段由区组成,区则由数据块组成。 2.答: 物理结构由构成数据库的操作系统文件所决定。每个Oracle数据库都由3种类型的文件组成:数据文件、日志文件和控制文件。 Oracle数据库有一个或多个物理的数据文件。数据库的数据文件包含全部数据库数据。逻辑数据物理地存储在数据文件中。 每个数据库有两个或多个日志文件组,日志文件组用于收集数据库日志。日志的主要功能是记录对数据所作的修改,所以对数据库作的全部修改记录在日志中。在出现故障时,如果不能将修改数据永久地写入数据文件,则可利用日志得到修改记录,从而保证已经发生的操作成果不会丢失。 每个Oracle数据库有一个控制文件,记录数据库的物理结构。控制文件包含数据库名、数据库数据文件和日志文件的名字、位置和数据库建立日期等信息。 3.答: SGA是一组共享内存结构,其中包含一个Oracle数据库例程数据及控制信息。如果有多个用户同时连接到同一个例程,则此例程的SGA数据由这些用户共享。因此,SGA也称为共享全局区(Shared Global Area)。 SGA包含以下数据结构。

Oracle数据库试题及答案word版本

O r a c l e数据库试题及 答案

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

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数据库试题

请将下列试题的正确答案写在答题栏里。(每小题2分) 1.当Oracle服务器启动时,下列哪种文件不是必须的()。 A.数据文件 B.控制文件 C.日志文件 D.归档日志文件 2.在Oracle中,当用户要执行SELECT语句时,下列哪个进程从磁盘获得用户需要的数据()。 A.用户进程 B.服务器进程 C.日志写入进程(LGWR D.检查点进程(CKPT) 3.在Oracle中,一个用户拥有的所有数据库对象统称为()。 A.数据库 B.模式 C.表空间 D.实例 4.在Oracle中,有一个教师表teacher的结构如下: ID NUMBER(5) NAME V ARCHAR2(25) EMAIL VARCHAR2(50) 下面哪个语句显示没有Email地址的教师姓名()。 A.SELECT name FROM teacher WHERE email = NULL; B.SELECT name FROM teacher WHERE email <> NULL; C.SELECT name FROM teacher WHERE email IS NULL; D.SELECT name FROM teacher WHERE email IS NOT NULL; 5.在Oracle数据库的逻辑结构中有以下组件: A 表空间 B 数据块 C 区 D 段 这些组件从大到小依次是()。 A.A→B→C→D B.A→D→C→B C.A→C→B→D D.D→A→C→B 6.在Windows操作系统中,Oracle的()服务监听并接受来自客户端应用程序的连接请求。 A.OracleHOME_NAMETNSListener

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)

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数据库期末考试试题及答案(0001)

oracle数据库期末考试试题及答案

A13、带有错误的视图可使用()选项来创建。 A.FORCE B.WITH CHECK OPTION C.CREATE VIEW WITH ERROR D.CREATE ERROR VIEW B14、在联接视图中,当()时,该基表被称为键保留表。 A.基表的主键不是结果集的主键 B.基表的主键是结果集的主键 C.基表的主键是结果集的外键 D.基表的主键不是结果集的外键 D15、在列的取值重复率比较高的列上,适合创建()索引。 A.标准B.唯一C.分区D.位图 C16、要以自身的模式创建私有同义词,用户必须拥有()系统权限 A.CREATE PRIVATE SYNONYM B.CREATE PUBLIC SYNONYM C.CREATE SYNONYM D.CREATE ANY SYNONYM D17、PL/SQL块中不能直接使用的SQL命令是()。 A.SELECT B.INSERT C.UPDATE D.DROP B18、以零作除数时会引发()异常。

A.VALUE_ERROR B.ZERO_DIVIDE C.STORAGE_ERROR D.SELF_IS_NULL A19、要更新游标结果集中的当前行,应使用()子句。 A.WHERE CURRENT OF B.FOR UPDATE C.FOR DELETE D.FOR MODIFY B20、用于处理得到单行查询结果的游标为()。 A.循环游标B.隐式游标 C.REF游标D.显式游标 C21、公用的子程序和常量在()中声明。 A.过程B.游标 C.包规范D.包主体 C22、数据字典视图()包含存储过程的代码文本A.USER_OBJECTS B.USER_TEXT C.USER_SOURCE D.USER_DESC C23、以下不属于命名的PL/SQL块的是()。 A.程序包B.过程 C.游标D.函数 A24、()包用于显示PL/SQL块和存储过程中的调试信息。 A.DBMS_OUTPUT B.DBMS_STANDARD C.DBMS_INPUT D.DBMS_SESSION

Oracle数据库日常管理手册项目现场篇

Oracle数据库日常管理_项目现场篇 修改:2010/2/8 A. 查看所有的实例及其后台进程是否正常 确认所有的instance工作正常,登陆到所有的数据库或instance上,检测oracle后台进程 GDDB4-/export/home/oracle> env | grep SID ORACLE_SID=UWNMS3 GDDB4-/export/home/oracle> ps -ef|grep UWNMS3 | grep -v grep | grep ora oracle 25119 1 0 Jun 24 ? 0:04 ora_dbw4_UWNMS3 oracle 25110 1 0 Jun 24 ? 3:20 ora_dbw1_UWNMS3 oracle 25146 1 0 Jun 24 ? 0:00 ora_reco_UWNMS3 oracle 25125 1 0 Jun 24 ? 0:09 ora_dbw5_UWNMS3 oracle 25142 1 0 Jun 24 ? 5:41 ora_smon_UWNMS3 oracle 25155 1 0 Jun 24 ? 1:17 ora_mmon_UWNMS3 oracle 25152 1 0 Jun 24 ? 101:32 ora_cjq0_UWNMS3 oracle 25102 1 0 Jun 24 ? 0:02 ora_mman_UWNMS3

oracle 25108 1 0 Jun 24 ? 7:37 ora_dbw0_UWNMS3 oracle 25478 1 0 Jun 24 ? 0:45 ora_arc1_UWNMS3 oracle 25470 1 0 Jun 24 ? 0:47 ora_arc0_UWNMS3 oracle 25159 1 0 Jun 24 ? 84:02 ora_mmnl_UWNMS3 oracle 25094 1 0 Jun 24 ? 17:30 ora_pmon_UWNMS3 oracle 25117 1 0 Jun 24 ? 0:41 ora_dbw3_UWNMS3 oracle 25131 1 0 Jun 24 ? 13:12 ora_lgwr_UWNMS3 oracle 20175 1 0 18:27:25 ? 0:00 ora_j000_UWNMS3 oracle 25100 1 0 Jun 24 ? 1:10 ora_psp0_UWNMS3 oracle 25113 1 0 Jun 24 ? 0:14 ora_dbw2_UWNMS3 oracle 25135 1 0 Jun 24 ? 23:50 ora_ckpt_UWNMS3 B.检查文件系统的使用情况 如果文件系统的剩余空间小于10%,则需要删除不必要的文件以释放空间。GDDB4-/export/home/oracle> df -h Filesystem size used avail capacity Mounted on /dev/md/dsk/d0 20G 17G 3.1G 85% /

ORACLE数据库期末考试题目及答案

期末考试卷(卷) 课程名称:数据库考试方式:开卷()闭卷(√) 、本试卷共4 页,请查看试卷中是否有缺页。 2、考试结束后,考生不得将试卷、答题纸带出考场。 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

Oracle数据库基础题库【含答案】

1、判断题,正确请写写"T",错误请写写"F", 1、oracle数据库系统中,启动数据库的第一步是启动一个数据库实例。( T ) 2、Oracle服务器端的监听程序是驻留在服务器上的单独进程,专门负责响应客户机的连接请求。( F) 3、oracle数据库中实例和数据库是一一对应的(非ORACLE并行服务,非集群)。( T) 4、系统全局区SGA 是针对某一服务器进程而保留的内存区域,它是不可以共享的。( F ) 5、数据库字典视图ALL_***视图只包含当前用户拥有的数据库对象信息。( F ) 8、数据字典中的内容都被保存在SYSTEM表空间中。( T ) 9、HAVING后面的条件中可以有聚集函数,比如SUM(),AVG()等, WHERE 后面的条件中也可以有聚集函数。( F ) 10、"上海西北京" 可以通过like ‘%上海_’查出来。( F ) 11、表空间是oracle 最大的逻辑组成部分。Oracle数据库由一个或多个表空间组成。一个表空间由一个或多个数据文件组成,但一个数据文件只能属于一个表空间。( T ) 12、表空间分为永久表空间和临时表空间两种类型。( T ) 13、truncate是DDL操作,不能 rollback。( T ) 14、如果需要向表中插入一批已经存在的数据,可以在INSERT语句中使用WHERE语句。( F ) 15、Oracle数据库中字符串和日期必须使用双引号标识。( F ) 16、Oracle数据库中字符串数据是区分大小写的。( T ) 17、Oracle数据库中可以对约束进行禁用,禁用约束可以在执行一些特殊操作时候保证操作能正常进行。( F ) 18、为了节省存储空间,定义表时应该将可能包含NULL值的字段放在字段列表的末尾。( T ) 20、在连接操作中,如果左表和右表中不满足连接条件的数据都出现在结果中,那么这种连接是全外连接。( T ) 21、自然连接是根据两个表中同名的列而进行连接的,当列不同名时,自然连接将失去意义。( T ) 23、PL/SQL代码块声明区可有可无。( T ) 24、隐式游标与显式游标的不同在于显式游标仅仅访问一行,隐式的可以访问多行。( F )

Oracle数据库DBA面试题

数据库。热备份的优点在于当备份时,数据库仍旧可以被使用并且可以将数据库恢复到任意一个时间点。冷备份的优点在于它的备份和恢复 操作相当简单,并且由于冷备份的数据库可以工作在非归档模式下,数据库性能会比归档模式稍好。(因为不必将archive log写入硬盘) 2. 你必须利用备份恢复数据库,但是你没有控制文件,该如何解决问题呢 解答:重建控制文件,用带backup control file 子句的recover 命令恢复数据库。 3. 如何转换到spfile 解答:使用create spfile from pfile 命令 . 4. 解释data block , extent 和segment的区别(这里建议用英文术语) 解答:data block是数据库中最小的逻辑存储单元。当数据库的对象需要更多的物理存储空间时,连续的data block就组成了extent . 一 个数据库对象拥有的所有extents被称为该对象的segment. 5. 给出两个检查表结构的方法 解答:1、DESCRIBE命令 2、包 6. 怎样查看数据库引擎的报错 解答:alert log. 7. 比较truncate和delete 命令 解答:两者都可以用来删除表中所有的记录。区别在于:truncate是DDL操作,它移动HWK,不需要rollback segment .而Delete是DML操作 , 需要rollback segment 且花费较长时间. 8. 使用索引的理由 解答:快速访问表中的data block 9. 给出在STAR SCHEMA中的两种表及它们分别含有的数据 解答:Fact tables 和dimension tables. fact table 包含大量的主要的信息而dimension tables 存放对fact table 某些属性描述的

相关文档