2024年4月2日发(作者:)

《数据库系统工程师》认证

近年试题实例

By jhsun

厦门理工学院计算机科学与技术系

1

目 录

2012年软考数据库系统工程师试题..............................................................................................3

2011年软考数据库系统工程师试题..............................................................................................6

【参考答案】..........................................................................................................................8

2010年软考数据库系统工程师试题..............................................................................................9

【参考答案】........................................................................................................................11

2009年软考数据库系统工程师试题............................................................................................12

【参考答案】........................................................................................................................13

2008年软考数据库系统工程师试题............................................................................................15

试题二(共15分)..............................................................................................................15

【参考答案】........................................................................................................................17

2

2012年软考数据库系统工程师试题

阅读下列说明,回答问题1至问题5,将解答填入答题纸的对应栏内。

[说明]

某企业网上销售管理系统的数据库部分关系模式如下所示:

客户(客户号,姓名,性别,地址,邮编)

产品(产品号,名称,库存,单价)

订单(订单号,时间,金额,客户号)

订单明细(订单号,产品号,数量)

关系模式的主要属性及约束如表2-1所示。

表2-1关系模式的主要属性及约束

关系名

客户

产品

订单

订单明细

约束

客户号唯一标识一位客户,客户性别取值为“男”或者“女’

产品号唯一标识一个产品

订单号唯一标识一份订单。一份订单必须且仅对应一位客户,一份订单可由一到多条

订单明细组成。一位客户可以有多份订单。

一条订单明细对应一份订单中的一个产品

客户、产品、订单和订单明细关系及部分数据分别如表2-2、2-3、2-4、2-5所示。

表2-2客户关系

客户号

Ol

02

姓名

王晓丽

林俊杰

性别 地址

南京路2号

北京路18号

邮编

200005

200010

表2-3产品关系

产品号

01

02

表2-4订单关系

订单

时间

客户

金额

名称

产品A

产品B

库存

20

50

单价

298.00

168.00

表2-5订单明细关系

订单号 产品号 数量

1001

1001

1002

01

02

01

2

4

1

1001 2006.02.03 1268.00 01

1002 2006.02.03 298.00 02

[问题1](3分)

以下是创建部分关系表的SQL语句,请将空缺部分补充完整。

3

CREATE TABLE 客户(

客户号CHAR(5)___ NOT NULL UNIQUE ___

姓名CHAR(30),

性别CHAR(2)___ CHECK(VALUE IN('男','女'))___

地址CHAR(30),

邮编CHAR(6));

CREATE TABLE 订单(

订单号CHAR(4),

时间 CHAR(10),

金额 NUMBER(6,2),

客户号 CHAR(5) NOT NULL,

PRIMARY KEY(订单号),

___ FOREIGN KEY(客户号) REFERENCES 客户(客户号)___;

[问题2](4分)

请根据如下查询语句,回答问题(d),(e)和(f)

SELECT 客户号

FROM 订单,订单明细

WHERE 订单明细.订单号 = 订单.订单号

AND 产品号 = '02’

AND 数量>10;

(d)上述查询语句的功能是什么?请简要回答。(30个字以内)

答:查询一次订购(或购买)产品号为02的数量大于10的客户号

(e)将上述查询语句转换成对应的关系代数表达式。

答:π

客户号

(订单∞σ

产品号='02'^数量>10

(订单明细))

(f)上述SQL查询语句是否可以进一步优化?如可以,给出优化后的SQL查询语句。

可以优化。优化的SQL语句为:

SELECT客户号

FROM订单

WHERE订单号IN

(SELECT 订单号

FROM 订单明细

WHERE 产品号 = '02 ' AND数量>10)

请按题意将下述SQL查询语句的空缺部分补充完整。

[问题3](3分)

按客户购买总额的降序,输出每个客户的客户名和购买总额。

SELECT 客户.客户名,___ SUM(金额)AS总额___

4

FROM 客户,订单

WHERE 客户.客户号 = 订单.客户号

_ GROUP BY 客户.客户号___

_ ORDER BY 总额 DESC ___;

[问题4](3分)

用SQL语句完成下述要求。

(1)定义一个描述订单的客户号和对应订单明细中产品号关系的视图,客户产品(客户

号,产品号)。

CREATE VIEW 客户产品

AS( SELECT 客户号,产品号

FROM 订单,订单明细

WHERE 订单明细.订单号=订单.订单号)

(2)借助(1)所定义的视图,查询至少购买了01号客户购买的所有产品的客户号。

SELECT 客户号

FROM 客户产品 客户产品1

WHERE___ NOT EXISTS ___

( SELECT*

FROM客户产品 客户产品2

WHERE___客户号='01' AND NOT EXISTS ___

( SELECT*

FROM客户产品 客户产品3

WHERE 客户产品1.客户号=客户产品3.客户号

AND客户产品2.产品号=客户产品3.产品号));

[问题5](2分)

当—个订单和对应的订单明细数据入库时,应该减少产晶关系中相应的产品库存,为此

应该利用数据库管理系统的什么机制实现此功能?请用100字以内的文字简要说明。

5

2011年软考数据库系统工程师试题

阅读下列说明,回答问题1至问题3,将解答填入答题纸的对应栏内。

【说明】

某法院要开发一个诉讼案件信息处理系统,该信息系统的部分关系模式如下:

职工(职工编号,姓名,岗位)

律师(律师编号,姓名)

被告(被告编号,姓名,地址)

案件(案件编号,案件类型,案件描述,被告,律师,主审法官,立案日期,状态,

结案日期,结案摘要)

审理(审理编号,案件编号,审理日期,摘要)

有关关系模式的属性及相关说明如下:

(1)职工关系模式的岗位有“法官”、“书记员”和“其他”。

(2)诉讼立案后,即在案件关系中插入一条相应记录。案件关系模式的状态有“待处理”、

“审理中”、“结案”和“撤销”,一个案件开始立案时其案件状态为“待处理”。

(3)案件关系模式的案件类型有“偷窃”、“纵火”等。

(4) -个案件自立案到结案的整个过程由一位法官和一位律师负责,一个案件通常经过

一次到多次审理。

【问题1】(4分)

假设案件编号唯一标识一个案件,且立案日期小于等于结案日期。请将如下创建案件关

系的SQL语句的空缺部分补充完整。

CREATE TABLE案件(

案件编号CHAR(6) (a) ,

案件类型VARCHAR(10),

案件描述VARCHAR (200),

立案日期DATE ,

被告VARCHAR (6) REFERENCES被告(被告编号),

律师VARCHAR (6) REFERENCES律师(律师编号),

主审法官VARCHAR (6) (b) ,

状态VARCHAR (6) (c) DEFAULT‘待处理’,

结案日期DATE,

结案摘要VARCHAR (200),

(d) );

6

【问题2】(8分)

请完成下列查询的SQL语句。

(1)查询当前待处理的诉讼案件,显示案件的案件编号、立案日期、被告姓名、被告地

址、案件描述、律师姓名和主审法官姓名。

SELECT案件编号,立案日期,被告.姓名AS被告姓名,地址AS被告地址,案件描述,

律师.姓名AS律师姓名, (e)

FROM (f)

WHERE案件.被告=被告.被告编号AND案件.律师=律师.律师编号

AND (g) ;

(2)查询2009年立案的各类案件数,并按案件数降序排序。(日期格式举例:2009年1

月1日表示为01-JAN-2009,2009年12月31日表示为31-DEC-2009)

SELECT类型,count(*) AS案件数

FROM 案件

WHERE (h)

GROUP BY类型

(i) ;

(3)查询立案次数超过5次的被告姓名和地址。

SELECT姓名,地址,count(*)

FROM 案件,被告

WHERE (j)

GROUP BY (k) (1) ;

【问题3】(3分)

当插入一个审理记录时,检查案件的状态,若状态为“未处理”,则将其修改为“审理

中”。下面是用触发器实现该需求的SQL语句,请将空缺部分补充完整。

CREATE TRIGGER 审理TRIGGER AFTER (m)

ON审理

REFERENCING new row AS nrow

FOR each row

WHEN‘未处理’=(SELECT状态 FROM案件 WHERE案件编号- nrow.案件编号)

BEGIN

UPDATE案件 (n)

WHERE (o) ;

END

7

【参考答案】

8

2010年软考数据库系统工程师试题

试题二(共15分)

阅读下列说明,回答问题1至问题3,将解答填入答题纸的对应栏内。

【说明】

天津市某银行信息系统的数据库部分关系模式如下所示:

客户 (客户号,姓名,性别,地址,邮编,电话)

账户 (账户号,客户号,开户支行号,余额)

支行 (支行号,支行名称,城市,资产总额)

交易 (交易号,账户号,业务金额,交易日期)

其中,业务金额为正值表示客户向账户存款;为负值表示取款。

【问题1】(3分)

以下是创建账户关系的SQL语句,账户号唯一识别一个账户,客户号为客户关系的唯一

标识,且不能为空。账户余额不能小于1.00元。请将空缺部分补充完整。

CREATE TABLE 账户(

账户号 CHAR(19) _____(a)_____ ,

客户号 CHAR(10) _____(b)_____ ,

开户支行号 CHAR(6) NOT NULL ,

余额 NUMBER(8,2) _____(c)_____ );

【问题2】(7分)

(1)现银行决策者希望查看在天津市各支行开户且2009年9月使用了银行存取服务的

所有客户的详细信息,请补充完整相应的查询语句。 (交易日期形式为’2000-01-01’)

SELECT DISTINCT 客户.*

FROM 客户, 账户, 支行, 交易

WHERE 客户.客户号 = 账户.客户号 AND

账户.开户支行号 = 支行.支行号 AND

_____(d)_____ AND

交易.账户号 = 账户.账户号 AND

_____(e)_____ ;

上述查询优化后的语句如下,请补充完整。

SELECT DISTINCT 客户.*

FROM 客户, 账户, _____(f)_____ AS 新支行, _____(g)_____ AS 新交易

WHERE 客户.客户号 = 账户.客户号 AND

账户.开户支行号 = 新支行.支行号 AND

新交易.账户号 = 账户.账户号;

9