文档库 最新最全的文档下载
当前位置:文档库 › 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 ,HIREDATE 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.where ename like ‘H_T%'

C.where ename like ‘%TKA_'

D.where ename like ‘%TOK%'

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

A.UNION

B.UNION ALL

C.INTERSECT

D.MINUS

9.EMPLOYEES表的结构如下:

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_D AY(MONTHS_BETWEEN(’28-5月-06’,5))

C.LAST_DAY(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.UPDATE语句

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

D.A和C都是

18.视图可以用于()

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

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

C.A和B都是

D.A和B都不是

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

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

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

C.未返回任何数据

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

20.已创建序列S1,若当前值为2,先执行3次S1.CURRVAL,再执行3次

S1.NEXTVAL,最后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_VAL_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 … EN D 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的结构定义如下:

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”或者“ANALYST”工资上调100元,如果职务为“MANAGER”工资上调200元,其它职务工资上调50元。

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;

20. 创建一个触发器,使其可以修改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;

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

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实验报告

Oracle数据库实验报告 实验一:Oracle 10g安装卸载及相关工具配置 一、实验目标: 安装Oracle 10g,了解OEM,通过DBCA安装数据库,通过DBCA删除数据库,sqldeveloper连接数据库,卸载oracle 10g。 二、实验学时数 2学时 三、实验步骤和内容: 1、安装Oracle10g(默认安装数据库) 双击setup.exe, 选择基本安装,安装目录D:盘,标准版,默认数据库orcl,口令bhbh。 进入先决条件检查界面时:网络配置需求选项不用打勾,直接下一步,是。 直到安装成功。 2、登陆和了解OEM 主要是已网页的形式来对数据库进行管理。

http://主机IP:1158/em 用户名:sys 口令:bhbh 身份:sysdba 或者 用户名:system 口令:bhbh 身份:normal 3、通过DBCA删除已安装的默认数据库orcl 程序->Oracle - OraDb10g_home1->配置和移植工具->Database Configuration Assistant->删除数据库->…… 4、通过DBCA安装数据库xscj 程序->Oracle - OraDb10g_home1->配置和移植工具->Database Configuration Assistant->创建数据库->…… 5、sqldeveloper连接数据库 打开sqldeveloper,新建连接 连接名:system_ora 用户名:system 口令:bhbh 主机名:本机计算机名 SID:xscj 测试,显示成功,连接,保存。

6、卸载oracle 10g Windows下 1>停止所有Oracle服务,点Universal Installer卸载 2>删除注册表中的所有关于Oracle项 在HKEY_LOCAL_MACHINE\SOFTWARE下,删除Oracle目录 3>删除硬盘上所有Oracle文件。 (1)Oracle安装文件 (2)系统目录下,在Program files文件夹中的Oracle文件 四、上机作业 根据实验步骤完成逐个实验目标中的任务。 五、心得体会 通过这次的实验,我了解了oracle数据库的情况。懂得了数据库就是把数据存储在一个类似与仓库的地方,需要用时才从数据库里调出来。通过上机实践,知道了装数据库和卸载数据库,并且学会了怎样连数据库。 实验二:Oracle 10g手工建数据库 一、实验目标: 安装Oracle 10g数据库环境,手工建立数据库;通过Net Configuration Assistant建立监听,使用sqldeveloper连接数据库测试。 二、实验学时数 2学时 三、实验步骤和内容: 先安装好Oracle 10g数据库环境(不安装默认数据库)。 1.创建好相关的目录

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、用户环境文件

实验2 Oracle数据库体系结构_V2013

实验2 Oracle数据库体系结构 【实验目的与要求】 ?熟悉Oracle数据库的物理结构 ?理解Oracle的工作机制 ?理解Oracle的软件结构 【实验内容与步骤】 2.0 实验准备 以系统管理员身份登入到数据库。 2.1 物理存储结构 2.1.1 获取Oracle数据库各类物理文件信息 1.数据文件 数据文件的详细信息记录在数据字典视图V$DataFile中,可通过查询语句获取数据文件相关信息。 查看数据文件名称:可通过如下查询语句查看数据文件名称和存放位置 请给出运行结果截图:

练习:用desc命令查看V$datafile视图的结构,并试着查询更详细的信息。 2.操作数据文件 (1) 创建数据文件 Oracle中,创建数据文件即是借用Alter Tablespace…ADD…语句,将数据文件添加挂接到指定的表空间中。 为USERS表空间添加一个数据文件,名称为USERS_XX.DBF(XX为学号最后两位),大小为20MB。如: 请给出运行结果截图:

打开指定目录(即C:\),查看是否存在文件USERS_XX.DBF? 请给出结果截图: 查询V$datafile视图,获取数据文件USERS_XX.DBF大小、位置等相关信息。 请给出结果截图: (2) 创建数据文件 修改数据文件使用Alter Database Datafile…命令。 修改USERS表空间中的USERS_XX.DBF为自动扩展方式,每次扩展5MB,最大为100MB。如: 请给出结果截图: 查询V$datafile视图,获取数据文件USERS_XX.DBF大小、扩展方式、位置等相关信息。确定数据文件是否修改。 请给出结果截图: (3) 重命名数据文件: 重命名数据文件使用alter tablespace …Rename datafile…命令。 将表空间USERS中的数据文件USERS_XX.DBF更名为UserData_XX.dbf。

(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数据库备份与恢复 【实验目的与要求】 1. 常见数据备份与恢复的方法 2.学会Oracle备份方案的制定 【实验内容与步骤】 1. Oracle物理备份与恢复 准备工作: (1)查看数据库是否运行于归档模式下: 请给出查询的结果: (2)关闭数据库,做一个完全的冷备份。 提示: a.使用shutdown命令关闭数据库; b.复制数据文件、日志文件和控制文件到安全地方 (3) 把数据库改为归档模式 设置成自动归档 SQL> alter system set log_archive_start = true scope=spfile;

注意:本实验中的很多命令路径参数需根据自己的实现环境做出修改!! 实验11-1 数据库系统数据文件和回退段遭破坏的情况下的恢复。此时数据库的状态是关闭的。 (1)先启动数据库,创建新用户scott,并用scott用户建立test表,并插入两条数据。创建表空间的四个步骤: /*分为四步 */ /*第1步:创建临时表空间 */ create temporary tablespace user_temp tempfile 'D:\ user_temp.dbf' size 50m autoextend on next 50m maxsize 20480m extent management local; /*第2步:创建数据表空间 */ create tablespace user_data logging datafile 'D:\ user_data.dbf' size 50m autoextend on next 50m maxsize 20480m extent management local; /*第3步:创建用户并指定表空间 */ create user scott identified by tiger default tablespace user_data temporary tablespace user_temp; /*第4步:给用户授予权限 */ grant connect,resource,dba to scott; SQL> create table test (id int,name varchar2(10)); 表已创建。 SQL> insert into test values(1001,’zhangfei’); 已创建 1 行。 SQL> insert into test values(1002,’guanyu’); 已创建 1 行。 SQL> commit; 提交完成。 (2)模拟数据库遭意外被迫关闭,并且系统数据文件丢失。 SQL> shutdown abort

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 实验4(实验报告)-PL_SQL程序设计

学期 Oracle数据库应用技术 实验报告 选课序号: 班级: 学号: 姓名: 指导教师:史金余 成绩: 2017年月日

目录 1.实验目的 (1) 2.实验内容 (1) 2.1 触发器设计 (2) 2.2 存储过程、自定义函数设计 (2) 2.3 程序包设计 (3) 3.实验步骤 (3) 3.1 创建表空间RESTAURANT,创建用户DINER (3) 3.2 创建餐饮系统数据库的所有表,并向各表插入演示数据 (4) 3.3 完成【实验内容】中的触发器、存储过程、函数和程序包等 功能设计,将程序脚本保存到文本文件Source.sql中 (7) 4.实验总结 (13)

PL/SQL程序设计 1.实验目的 ◆掌握PL/SQL程序设计基本技巧,包括基本数据类型、表类型、数组类 型、匿名程序块、控制语句、PL/SQL中使用SQL语句、游标、错误处 理等。 ◆熟悉和掌握PL/SQL中关于存储过程、函数、包和触发器程序设计技术。 2.实验内容 实验平台:PL/SQL Developer或Oracle的其它客户端管理工具。 某餐饮系统数据库(加粗字段为主键,斜体字段为外键),请创建如下各数据表,并实现如下存储过程、函数、包和触发器等功能设计,将程序脚本保存到文本文件Source.sql中: (1)菜肴类别表MK(菜肴类别编号MKid,菜肴类别名称MkName),菜肴类别名称:鱼类、蔬菜类、凉菜类、肉类、主食类和酒水类等。 (2)菜单信息表MList(菜肴编号Mid,菜肴名称Mname,菜肴类别MKid,菜肴单价Mprice,菜肴成本单价Mcost,更新日期Mdate)。 (3)餐台类别表DK(餐台类别编号DKid,餐台类别名称DkName),餐台类别:包间和散台等。 (4)餐台信息表Dinfo (餐台编号Did,餐台名称Dname,餐台类别DKid,座位数Dseats,更新日期Ddate)。 (5)消费单主表C (消费单号Cid,餐台编号Did,消费开始时间StartTime,结账时间EndTime,消费金额合计Smoney,盈利金额合计SPsum),其中,消费金额合计=消费单明细表CList中该消费单号的所有消费记录的消费金额的合计,即SUM(消费金额)或SUM(菜肴单价×消费数量),盈利金额合计=消费单明细表CList中该消费单号的所有消费记录的盈利合计,即SUM((菜肴单价- 菜肴成本单价)×消费数量)。 (6)消费单明细表CList (消费单号Cid,序号Sid,菜肴编号Mid,菜肴名称Mname,消费数量Cqty,菜肴单价Mprice,菜肴成本单价Mcost,消费金额Cmoney) ,消费金额=消费数量×菜肴单价;消费数量为正数是正常点菜,消费数量为负数是退菜,消费数量为0是赠菜。

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岁的记录被加上删除标记

数据库sqlserver实验报告

实验一熟悉常用的 DBMS:SQL SERVER2008、Oracle 试验内容及要求: (1)了解不同数据库管理系统及不同版本的相应功能特点 目前,商品化的数据库管理系统以关系型数据库为主导产品,技术比较成熟。面向对象的数据库管理系统虽然技术先进,数据库易于开发、维护,但尚未有成熟的产品。国际国内的主导关系型数据库管理系统有Oracle、Sybase、INFORMIX和INGRES。这些产品都支持多平台,如UNIX、VMS、Windows,但支持的程度不一样。IBM的DB2也是成熟的关系型数据库。但是,DB2是内嵌于IBM的AS/400系列机中,只支持OS/400操作系统。 1.MySQL MySQL是最受欢迎的开源SQL数据库管理系统,它由MySQL AB开发、发布和支持。MySQL AB是一家基于MySQL开发人员的商业公司,它是一家使用了一种成功的商业模式来结合开源价值和方法论的第二代开源公司。MySQL是MySQL AB的注册商标。 MySQL是一个快速的、多线程、多用户和健壮的SQL数据库服务器。MySQL服务器支持关键任务、重负载生产系统的使用,也可以将它嵌入到一个大配置(mass- deployed)的软件中去。与其他数据库管理系统相比,MySQL具有以下优势: (1)MySQL是一个关系数据库管理系统。 (2)MySQL是开源的。 (3)MySQL服务器是一个快速的、可靠的和易于使用的数据库服务器。 (4)MySQL服务器工作在客户/服务器或嵌入系统中。 (5)有大量的MySQL软件可以使用。 2.SQL Server SQL Server是由微软开发的数据库管理系统,是Web上最流行的用于存储数据的数据库,它已广泛用于电子商务、银行、保险、电力等与数据库有关的行业。 目前最新版本是SQL Server2005,它只能在Windows上运行,操作系统的系统稳定性对数据库十分重要。并行实施和共存模型并不成熟,很难处理日益增多的用户数和数据卷,伸缩性有限。 SQL Server 提供了众多的Web和电子商务功能,如对XML和Internet标准的丰富支持,

《Oracle数据库》实验报告

实验二Oracle数据库开发环境下PL/SQL编程(2学时) 【实验目的】 (1)掌握PL/SQL 的基本使用方法。 (2)在SQL*PLUS环境下运行PL/SQL的简单程序。 (3)应用PL/SQL 解决实际问题 【实验内容与步骤】 一、实验内容: 1、用PL/SQL实现:输入eno的值,显示emp表中对应记录的内容。 2、用PL/SQL完成:读入三个数,计算并输出它们的平均值及三个数的乘积。

3、对职工表emp中的雇员SCOTT提高奖金,若工种为MANAGER,则奖金提高其原来的20%;若工种为SALESMAN,则奖金提高其原来的15%;若工种为ANALYST,则奖金提高其原来的10%, 其它都按原来的7%提高。

4、用PL/SQL块实现下列操作 公司为每个职工增加奖金:若职工属于30号部门,则增加$150;若职工属于20号部门, 则增加$250;若职工属于10号部门,则增加$350。(提示:游标请自行阅读相关内容) DECLARE addcomm https://www.wendangku.net/doc/4f17955312.html,m%type; CURSOR emp_cursor IS select deptno from emp; BEGIN

FOR emprec IN emp_cursor LOOP IF emprec.deptno=30 THEN addcomm:=150; ELSIF emprec.deptno=20 THEN addcomm:=250; ELSIF emprec.deptno=10 THEN addcomm:=350; END IF; Update emp set comm=comm+ addcomm where deptno= emprec.deptno; END LOOP; COMMIT WORK; END; 实验三PL/SQL触发器和存储过程(2学时) 【实验目的】 (1)了解触发器的类型。 (2)掌握PL/SQL触发器的使用方法。 (3)了解存储过程的使用方法。 (4)掌握存储过程的使用方法。 【实验内容】 实验内容: 1、编写一个数据库触发器,当任何时候某个部门从dept表中删除时,该触发器将从emp 表中删除该部门的所有雇员。(要求:emp表、dept表均为复制后的表) CREATE OR REPLACE TRIGGER del_emp_deptno BEFORE DELETE ON dept FOR EACH ROW BEGIN DELETE FROM emp WHERE deptno=:OLD.deptno; END;

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数据库日常管理手册项目现场篇

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数据库试题及答案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))

相关文档
相关文档 最新文档