Oracle数据库入门笔试试题及参考答案

  • 格式:docx
  • 大小:19.38 KB
  • 文档页数:3

下载文档原格式

  / 3
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《数据库入门》试题

姓名:

一、简答题(共40分,每小题10分)

1、如何理解空值(null)?空值在参与运算时有什么特点?

2、简述参照完整性约束。

3、简述Oracle客户端tnsnames.ora文件的作用。

4、简述事务及其性质。

二、运算题(共60分,每小题5分)

针对课本图1.2中的关系模式,用SQL完成下列操作。

1、查询姓张的病人姓名和出生年份。

select xm,substr(to_char(sysdate,'yyyy.mm.dd'),1,4)

from dw.per_natl

where xm like '张%';

注意:题目要求查询出生年份,不是出生日期。

2、查询女病人的平均年龄。

update dw.per_natl a

set nl=(select to_number(substr(to_char(sysdate,'yyyy.mm.dd'),1,4)) -

to_number(substr(to_char(csrq,'yyyy.mm.dd'),1,4)) from dw.per_natl b

where a.grbm=b.grbm);

select avg(nl)

from dw.per_natl

where xb='2';

考虑下列SQL:

select avg(nvl(nl,0))

from dw.per_natl

where xb='2';

3、查询发生过费用的病人总人数。

select count(distinct grbm)

from dw.patient_script_genl;

此处必须使用distinct

4、查询2000年以后出生的病人姓名。

select xm

from dw.per_natl

where substr(to_char(sysdate,'yyyy.mm.dd'),1,4)>'2000';

5、查询没有被使用过的医疗项目编码和名称。

select ylxmbm,ylxmmc

from dw.medi_item

where ylxmbm not in (select ylxmbm

from dw.patient_script_detl); 6、查询与自己的科室负责人同名的医师的编码和姓名。select a.ysbm,a.xm

from dw.doctor a,dw.doctor b

where a.ysbm=b.ksfzr and a.xm=b.xm;

7、查询未结算费用凭单的总金额、自付金额和报销金额。select fyid,zje,zfje,bxje

from dw.patient_script_genl

where jshid is null;

8、查询使用医疗项目数目最多的费用凭单编码。

select fyid

from dw.patient_script_detl

group by fyid

having count(ylxmbm)>=all(select count(ylxmbm)

from dw.patient_script_detl

group by fyid);

9、查询被所有的住院病人都使用的药品编码。

insert into dw.patient_script_detl(fyid,sxh,ylxmbm)

values('20130106110',3,'100001');

insert into dw.patient_script_detl(fyid,sxh,ylxmbm) values('20130108101',5,'100001');

select distinct b.ylxmbm

from dw.medi_item a,dw.patient_script_detl b

where a.ylxmbm=b.ylxmbm and ylxmlb='1' and

not exists ((select distinct fyid

from dw.patient_script_detl)

minus

(select fyid

from dw.patient_script_detl c

where b.ylxmbm=c.ylxmbm));

10、新增科室,科室编码为’999’,科室名称为’核磁共振室’。

11、删除没有发生过费用的病人信息。

delete from dw.per_natl

where grbm not in (select grbm

from dw.patient_script_genl);

12、将高于平均价的药品的价格降低10%。

update dw.medi_item

set dj=dj*0.95

where ylxmlb='1' and dj<(select avg(dj)

from dw.medi_item

where ylxmlb='1');