最新oracle教程第二版》部分习题参考答案资料.docx

上传人:b****7 文档编号:23534754 上传时间:2023-05-18 格式:DOCX 页数:19 大小:21.19KB
下载 相关 举报
最新oracle教程第二版》部分习题参考答案资料.docx_第1页
第1页 / 共19页
最新oracle教程第二版》部分习题参考答案资料.docx_第2页
第2页 / 共19页
最新oracle教程第二版》部分习题参考答案资料.docx_第3页
第3页 / 共19页
最新oracle教程第二版》部分习题参考答案资料.docx_第4页
第4页 / 共19页
最新oracle教程第二版》部分习题参考答案资料.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

最新oracle教程第二版》部分习题参考答案资料.docx

《最新oracle教程第二版》部分习题参考答案资料.docx》由会员分享,可在线阅读,更多相关《最新oracle教程第二版》部分习题参考答案资料.docx(19页珍藏版)》请在冰豆网上搜索。

最新oracle教程第二版》部分习题参考答案资料.docx

最新oracle教程第二版》部分习题参考答案资料

文字性习题答案参见相应章节内容

第1章

习题1

DACC

第2章

习题1

执行edit命令打开文本编辑器;

使用column命令设置列显示宽度

习题2

CONNscott/tiger@orcl

SELECT*FROMtab;--本题严谨一些的答案是查询ALL_OBJECTS视图,带条件查询

习题3

@d:

\init_data\init_data.sql

习题4

SETPAGESIZE24

SETLINESIZE100

COLUMNsalFORMAT$99,990.00

第3章

习题1

DB

习题2

CONNstu01/stu01pwd@orcl

COLUMNUSERNAMEFORMATA10

SELECTusername,granted_roleFROMuser_role_privs;

习题5

CREATESESSION系统权限

习题11

CONNscott/tiger@orcl

COLUMNGRANTEEFORMATA10

SELECTgrantee,table_name,grantor,privilege,grantable

FROMuser_tab_privs_made;

习题12

CONNsystem/systempwd@orcl

COLUMNGRANTEEFORMATA22

SELECTgrantee,privilege,admin_optionFROMdba_sys_privs

ORDERBYgrantee,privilege;

SELECTgrantee,granted_roleFROMdba_role_privs;

使用REVOKE命令回收不必要的系统权限和角色。

\

第4章

习题8

CONN/@cemerpASSYSDBA

ALTERUSERscottQUOTA10MONUSERS;

习题9

CONNsystem/systempwd@orcl

CREATETABLESPACEdata_ts1

DATAFILE'%ORACLE_BASE%\oradata\orcl\data_ts1.dbf'SIZE10000MREUSE;

CREATETEMPORARYTABLESPACEtemp_ts1

TEMPFILE'%ORACLE_BASE%\oradata\orcl\temp_ts1.dbf'SIZE200MREUSE;

CREATEUSERsurtecIDENTIFIEDBYsurtecpwd

DEFAULTTABLESPACEdata_ts1TEMPORARYTABLESPACEtemp_ts1;

GRANTCREATESESSIONTOsurtec;

GRANTRESOURCETOsurtec;

CONNsurtec/surtecpwd@orcl

--创建该用户的表emp……

--授权给SIB

GRANTSELECTONempTOsib;

GRANTUPDATE(flag)ONendowment_insuranceTOsib;

习题10

CONNsystem/systempwd@orcl

CREATEUSERtest01IDENTIFIEDBYtest1234;

GRANTCREATESESSIONTOtest01;

GRANTCREATETABLESPACETOtest01;

CONNtest01/test1234@orcl

CREATETABLESPACEtest_ts

DATAFILE'%ORACLE_BASE%\oradata\orcl\test_ts.dbf'SIZE100K

AUTOEXTENDONNEXT50KMAXSIZE5MUNIFORMSIZE50K;

ALTERTABLESPACEtest_ts

ADDDATAFILE'%ORACLE_BASE%\oradata\orcl\test_ts2.dbf'SIZE10M;

ALTERDATABASE

DATAFILE'%ORACLE_BASE%\oradata\orcl\test_ts2.dbf'RESIZE15M;

习题11

CONNsystem/systempwd@orcl

ALTERTABLESPACEpur_ts

ADDDATAFILE'%ORACLE_BASE%\oradata\orcl\pur_data.dbf'SIZE800M;

ALTERDATABASE

DATAFILE'%ORACLE_BASE%\oradata\orcl\pur_data.dbf'RESIZE2000M;

ALTERDATABASEDATAFILE'%ORACLE_BASE%\oradata\orcl\pur_data.dbf'

AUTOEXTENDONNEXT30M;

第5章

习题1

BA

习题8

(1)撤销表空间中不允许建立永久方案对象;将方案对象建立在数据表空间即可。

(2)在脱机表空间上不允许执行创建方案对象操作;将该表空间联机即可。

(3)使用ALTERUSER修改用户在USERS表空间上的限额即可。

(4)使用ALTERUSER修改用户,扩大在USERS表空间上的限额即可。

习题9

CONNhr/hrpwd@orcl

CREATETABLEemployees2AS

SELECTemployee_idid,first_name,last_name,salary,

department_iddept_id

FROMemployees;

习题10

CONNscott/tiger@orcl

ALTERTABLEemp

ADD(dept_idNUMBER(7));

ALTERTABLEemp

ADDCONSTRAINTemp_dept_id_fk

FOREIGNKEY(dept_id)REFERENCESdept(deptno);

习题11

假定数据库用户为hr

(1)

CONNhr/hrpwd@orcl

CREATETABLEg_emp(

EMPNONUMBER(4)NOTNULL,

ENAMEVARCHAR2(10),

JOBVARCHAR2(10),

MGRNUMBER(4),

HIREDATEDATE,

SALNUMBER(7,2),

COMMNUMBER(7,2),

DEPTNONUMBER(3))

PARTITIONBYRANGE(sal)

(PARTITIONSAL_1000VALUESLESSTHAN(1000)tablespaceusers,

PARTITIONSAL_2000VALUESLESSTHAN(2000)tablespaceusers,

PARTITIONSAL_3000VALUESLESSTHAN(3000)tablespaceusers,

PARTITIONSAL_4000VALUESLESSTHAN(4000)tablespaceusers,

PARTITIONSAL_5000VALUESLESSTHAN(5000)tablespaceusers,

PARTITIONSAL_maxVALUESLESSTHAN(MAXVALUE)tablespaceusers);

(2)

DESCg_emp

(3)

--创建表空间

CONNsystem/systempwd@orcl

CREATETABLESPACEhiredate_ts

DATAFILE'%ORACLE_BASE%\oradata\orcl\hiredate_ts1.dbf'SIZE1MREUSE;

--创建表

CONNhr/hrpwd@orcl

CREATEINDEXemp_hiredate_index

ONg_emp(HIREDATEDESC)

TABLESPACEhiredate_ts;

(4)

ALTERTABLEg_empDROP(COMM);

ALTERTABLEg_empADD(bonusNUMBER(7,2));

第6章

第7章

习题1

(1)

CONNscott/tiger@orcl

CREATESEQUENCEid_seq

INCREMENTBY1

STARTWITH1

MAXVALUE99999

NOCACHE

NOCYCLE;

(2)可以修改序列的定义;或者修改产品表主键的定义。

习题2

参见例7.1。

习题4

使用数据字典DBA_DB_LINKS

习题5

在总部建立指向各分店的数据库链接,然后在分店服务器建立实体化视图日志,在总店建立各分店个表的实体化视图。

第8章

习题1

ADBCB

习题4

(1)

SELECTworker.enameename,manager.enamemanager

FROMempworker,empmanager

WHEREworker.mgr=manager.empno;

(2)

SELECTworker.ename,worker.empno,worker.deptno,manager.ename

FROMempworker,empmanager

WHEREworker.mgr=manager.empnoANDworker.hiredate

(3)

SELECTe.ename

FROMempe,deptd

WHEREe.deptno=d.deptnoANDupper(d.dname)='IT';

(4)

SELECTename,empno,deptno,job,sal

FROMemp

WHEREsal>

(SELECTavg(sal)

FROMemp);

(5)

SELECTd.deptno,count(e.ename),avg(e.sal),

avg(months_between(sysdate,e.hiredate))

FROMempe,deptd

WHEREe.deptno(+)=d.deptno

GROUPBYd.deptno;

(6)

SELECTd.deptno,d.dname,d.loc,e.num

FROM(SELECTdeptno,count(ename)num

FROMemp

GROUPBYdeptno)e,deptd

WHEREe.deptno(+)=d.deptno;

(7)

SELECTjob,min(sal+nvl(comm,0))FROMempGROUPBYjob;

(8)

SELECTename,deptno,minsal

FROMemp,(SELECTmin(sal)minsalFROMemp

WHEREjob=upper('manager'))b

WHEREemp.job=upper('manager')ANDemp.sal=b.minsal;

或者用内嵌视图,执行Top-N查询

(9)

SELECTename,sal*12Annual_sal

FROMemp

ORDERBYAnnual_salASC;

习题5

SELECTlast_name,ROUND(MONTHS_BETWEEN(SYSDATE,hire_date))

MONTHS_WORKED

FROMemployees

ORDERBYMONTHS_BETWEEN(SYSDATE,hire_date);

习题6

SELECTe.last_name,e.hire_date

FROMemployeese,employeesdavies

WHEREdavies.last_name='Davies'

ANDdavies.hire_date

习题8

SELECTlast_name,department_id,TO_CHAR(null)

FROMemployees

UNION

SELECTTO_CHAR(null),department_id,department_name

FROMdepartments;

习题9

创建表的语句如下

CREATETABLET_PRTSTRUDEF(

PRTNOVarchar2(24),--物料号

PRTPNOvarchar2(24),--父件号

PRTPQTYnumber(20,7),--需求数量

PRTDESCVarchar2(30),--物料名称

PRTTYPEVarchar2

(1),--物料类型

PRTPRCNumber(18,3),--单价,下一字段是计量单位

PRTUMVarchar2(8));

--插入示例数据,P-表示产品D-表示部件M-表示零件(仅为了举例)

INSERTINTOT_PRTSTRUDEFVALUES('WD01','',0,'床','P',850,'张');

INSERTINTOT_PRTSTRUDEFVALUES('WD0101','WD01',1,'床头','D',100,'套');

INSERTINTOT_PRTSTRUDEFVALUES('WD0102','WD01',2,'床头柜','D',80,'个');

INSERTINTOT_PRTSTRUDEF

VALUES('WD010201','WD0102',1,'柜门','D',15,'扇');

INSERTINTOT_PRTSTRUDEF

VALUES('WD010202','WD0102',1,'床头柜身','D',65,'个');

INSERTINTOT_PRTSTRUDEF

VALUES('WD01020101','WD010201',1,'柜门板','M',13,'张');

INSERTINTOT_PRTSTRUDEF

VALUES('WD01020102','WD010201',1,'拉手','M',2,'个');

COMMIT;

--查询整个产品

SELECTLEVEL部件层次,SUBSTRB(LPAD('',2*(LEVEL-1))||PRTDESC,1,30)

产品结构,PRTPQTY需求数量,PRTPRC单价

FROMT_PRTSTRUDEF

STARTWITHPRTPNOISNULL

CONNECTBYPRIORPRTNO=PRTPNO;

执行结果如下:

部件层次产品结构需求数量单价

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

1床0850

2床头1100

2床头柜280

3柜门115

4柜门板113

4拉手12

3床头柜身165

--查询柜门的子件

SELECTLEVEL部件层次,SUBSTRB(LPAD('',2*(LEVEL-1))||PRTDESC,1,30)

产品结构,PRTPQTY需求数量,PRTPRC单价

FROMT_PRTSTRUDEF

STARTWITHPRTNO='WD010201'

CONNECTBYPRIORPRTNO=PRTPNO;

执行结果如下:

部件层次产品结构需求数量单价

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

1柜门115

2柜门板113

2拉手12

--查询柜门的父件(反查)

SELECTLEVEL部件层次,SUBSTRB(LPAD('',2*(LEVEL-1))||PRTDESC,1,30)

产品结构,PRTPQTY需求数量,PRTPRC单价

FROMT_PRTSTRUDEF

STARTWITHPRTNO='WD010201'

CONNECTBYPRIORPRTPNO=PRTNO;

执行结果如下:

部件层次产品结构需求数量单价

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

1柜门115

2床头柜280

3床0850

第9章

习题1

AC

习题2

CONNscott/tiger@orcl

SETserveroutputON

CREATEORREPLACEPROCEDUREcheck_sal

IS

CURSORemp_cursorISSELECTempno,ename,deptno,sal,jobFROMemp;

BEGIN

FORemp_recINemp_cursorLOOP

IFemp_rec.job='CLERK'ANDemp_rec.salNOTBETWEEN1500AND2500THEN

DBMS_OUTPUT.PUT_LINE(emp_rec.deptno||':

'||emp_rec.empno||':

'||emp_rec.ename||':

'||emp_rec.sal);

ELSIFemp_rec.job='SALESMAN'ANDemp_rec.salNOTBETWEEN800AND5000THEN

DBMS_OUTPUT.PUT_LINE(emp_rec.deptno||':

'||emp_rec.empno||':

'||emp_rec.ename||':

'||emp_rec.sal);

ELSIFemp_rec.job='MANAGER'ANDemp_rec.salNOTBETWEEN3000AND4500THEN

DBMS_OUTPUT.PUT_LINE(emp_rec.deptno||':

'||emp_rec.empno||':

'||emp_rec.ename||':

'||emp_rec.sal);

ELSIFemp_rec.job='ANALYST'ANDemp_rec.salNOTBETWEEN2500AND3500THEN

DBMS_OUTPUT.PUT_LINE(emp_rec.deptno||':

'||emp_rec.empno||':

'||emp_rec.ename||':

'||emp_rec.sal);

ENDIF;

ENDLOOP;

END;

/

EXECUTEcheck_sal

习题3

SETECHOOFF

SETVERIFYOFF

DEFINElow_date=01/01/1998

DEFINEhigh_date=01/01/1999

SELECTlast_name||','||job_id雇员职位,hire_date

FROMemployees

WHEREhire_dateBETWEENTO_DATE('&low_date','MM/DD/YYYY')

ANDTO_DATE('&high_date','MM/DD/YYYY')

/

UNDEFINElow_date

UNDEFINEhigh_date

SETVERIFYON

SETECHOON

习题4

--创建表

CREATETABLEmessages(

resultsVARCHAR2(100));

--本题答案

DECLARE

v_enameemployees.last_name%TYPE;

v_salemployees.salary%TYPE:

=&p_sal;

BEGIN

SELECTlast_name

INTOv_ename

FROMemployees

WHEREsalary=v_sal;

INSERTINTOmessages(results)

VALUES(v_ename||'-'||v_sal);

EXCEPTION

WHENno_data_foundTHEN

INSERTINTOmessages(results)

VALUES('Noemployeewithasalaryof'||TO_CHAR(v_sal));

WHENtoo_many_rowsTHEN

INSERTINTOmessages(results)

VALUES('Morethanoneemployeewithasalaryof'||

TO_CHAR(v_sal));

WHENothersTHEN

INSERTINTOmessages(results)

VALUES('Someothererroroccurred.');

END;

/

习题5

--创建相关表

CREATETABLEcall_fee_account(

telnoVARCHAR2(20),

pay_dateDATE,

chargeNUMBER(7,2),

late_feeNUMBER(7,2));

--创建函数

CREATEORREPLACEFUNCTIONfee(p_dateDATE)RETURNNUMBERIS

v_feeNUMBER;

BEGIN

SELECTSUM(charge+NVL(late_fee,0))

INTOv_fee

FROMcall_fee_account

WHEREpay_date=p_date;

RETURNv_fee;

END;

/

习题6

可参考例9.20,该例子是删除(delete),本题中为修改(update)。

习题7

--创建存储过程

CREATEorREPLACEPROCEDUREshow_dept_empIS

CURSORcur_deptisselectdeptno,dnamefromdeptorderbydeptno;

CURSORcur_emp(p_nonumber)isselectename,nvl(sal,0),nvl(comm,0)fromempwheredeptno=p_no;

v_deptnonumber(3

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 党团建设

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1