数据库系统工程师-SOL语言

数据库系统工程师-SOL语言

(总分:36.00,做题时间:90分钟)

一、{{B}}选择题{{/B}}(总题数:22,分数:22.00)

1.卷游标的推进语句EXEC SQL FETCH ABSOLUTE -3表示______。

(分数:1.00)

A.把游标移向查询结果的第3行

B.把游标移向查询结果的倒数第3行√

C.把游标从当前位置推进3行

D.把游标从当前位置返回3行

解析:

2.允许在嵌入的SQL语句中引用宿主语言的程序变量,在引用时______。

(分数:1.00)

A.直接引用

B.这些变量前必须加符号“*”

C.这些变量前必须加符号“:”√

D.这些变量前必须加符号“&”

解析:

3.关于对SQL对象的操作权限描述正确的是______。

(分数:1.00)

A.权限的种类分为INSERT、DELETE和UPDATE这3种√

B.权限只能用于实表不能应用于视图

C.使用REVOKE语句获得权限

D.使用COMMIT语句赋予权限

解析:

4.SQL中,SALARYIN(1000,2000)的语义是______。

(分数:1.00)

A.SALARY≤2000 AND SALARY≥1000

B.SALARY<2000 AND SALARY>1000

C.SALARY=1000 AND SALARY=2000

D.SALARY=1000 OR SALARY=2000 √

解析:

5.如果嵌入的SELECT语句的查询结果肯定是单元组,那么嵌入时______。

(分数:1.00)

A.肯定不涉及游标机制

B.必须使用游标机制

C.是否使用游标,由应用程序员决定√

D.是否使用游标,与DBMS有关

解析:

6.SOL2事务的隔离级别中的READ COMMITTED,等同于______。

(分数:1.00)

A.X锁

B.S锁√

C.无锁

https://www.360docs.net/doc/1b4710427.html,MIT

解析:

7.对于基本表EMP(ENO,ENAME,SALARY,DNO),其属性表示职工的工号、姓名、工资和所在部门的编号。基本表DEPT(DNO,DNAME)其属性表示部门的编号和部门名。有一SQL语句: SELECT COUNT (DI STINCT

DNO)FROM EMP;其等价的查询语句是______。

(分数:1.00)

A.统计职工的总人数

B.统计每一部门的职工人数

C.统计职工服务的部门数目√

D.统计每一职工服务的部门数目

解析:

8.SQL中,与NOT IN等价的操作符是______。

(分数:1.00)

A.=SOME

B.<>SOME

C.=ALL

D.<>ALL √

解析:

9.某高校5个系的学生信息存放在同一个基本表中,采取______的措施可使各系的管理员只能读取本系学生的信息。

(分数:1.00)

A.建立各系的列级视图,并将对该视图的读权限赋予该系的管理员

B.建立各系的行级视图,并将对该视图的读权限赋予该系的管理员√

C.将学生信息表的部分列的读权限赋予各系的管理员

D.将修改学生信息表的权限赋予各系的管理员

解析:

10.不能激活触发器执行的操作是______。

(分数:1.00)

A.DELETE

B.UPDATE

C.INSERT

D.SELECT √

解析:

11.嵌入式SQL实现时,采用预处理方式是______。

(分数:1.00)

A.把SQL语句和主语言语句区分开来

B.为SQL语句加前缀标识和结束标志

C.识别出SQL语句,并处理成函数调用形式√

D.把SQL语句编译成二进制码

解析:

12.“角色”是DBS采用的______。

(分数:1.00)

A.完整性措施

B.安全性措施√

C.恢复措施

D.并发控制措施

解析:

13.对于第7题的两个基本表,有一个SQL语句:SELECT ENO, ENAME FROM EMP WHERE DNO NOT IN (SELECT DNO FROM DEPT WHERE DNAME='金工车间');其等价的关系代数表达式是:______。

(分数:1.00)

A.πENO,ENAME(σDNAME≠'金工车间'

B.πENO,ENAME

C.πENO,ENAME(EM-πENO,ENAME (σDNAME='金工车间'√

D.πENO,ENAME (EM-πENO,ENAME (σDNAME≠'金工车间'

解析:

14.SELECT语句中FROM R,此处R是基本表名,但应理解为______。

(分数:1.00)

A.R的结构定义

B.R的元组序号

C.R中全部元组

D.R的元组变量√

解析:

15.允许取空值但不允许出现重复值的约束是______。

(分数:1.00)

A.NULL

B.UNIQUE √

C.PRIMARY KEY

D.FOREIGN KEY

解析:

16.SQL中,下列操作不正确的是______。

(分数:1.00)

A.AGE IS NOTNULL

B.NOT (AGE IS NUL

C.SNAME='王五'

D.SNAME='王%' √

解析:

17.对于第7题的两个基本表,有一个SQL语句:UPDATE EMP SET SALARY=SALARY*1.05 WHERE DNO='D6' AND SALARY<(SELECT AVG(SALARY) FROM EMP);其等价的修改语句为______。

(分数:1.00)

A.为工资低于D6部门平均工资的所有职工加薪5%

B.为工资低于整个企业平均工资的职工加薪5%

C.为在D6部门工作、工资低于整个企业平均工资的职工加薪5% √

D.为在D6部门工作、工资低于本部门平均工资的职工加薪5%

解析:

18.有关嵌入式SQL的叙述,不正确的是______。

(分数:1.00)

A.宿主语言是指C一类高级程序设计语言

B.宿主语言是指SOL语言√

C.在程序中要区分SQL语句和宿主语言语句

D.SQL有交互式和嵌入式两种使用方式

解析:

19.元组比较操作(a1,a2)≥(b1,b2)的意义是_____。

(分数:1.00)

A.(a1>b1) OR ((a1=b1) AND (a2≥b2)) √

B.(a1≥b1) OR ((a1=b1) AND (a2≥b2))

C.(a1>b1) OR ((a1=b1) AND (a2>b2))

D.(a1≥b1) OR ((a1=b1) AND (a2>b2)

解析:

20.“断言”是DBS采用的______。

(分数:1.00)

A.完整性措施√

B.安全性措施

C.恢复措施

D.并发控制措施

解析:

21.卷游标的推进语句EXEC SQL FETCH RELATIVE -4表示______。

(分数:1.00)

A.把游标移向查询结果的第4行

B.把游标移向查询结果的倒数第4行

C.把游标从当前位置推进4行

D.把游标从当前位置返回4行√

解析:

22.SELECT语句中没有分组子句和聚合函数时,SELECT子句表示了关系代数中的 ______。

(分数:1.00)

A.投影操作√

B.选择操作

C.连接操作

D.笛卡儿积操作

解析:

二、{{B}}论述题{{/B}}(总题数:2,分数:14.00)

1.某工厂的信息管理数据库中有两个关系模式:

职工(职工号,姓名,年龄,月工资,部门号,电话,办公室)

部门(部门号,部门名,负责人代码,任职时间)

(分数:6.00)

(1).

(1)查询每个部门中月工资最高的“职工号”的SQL查询语句如下:

SELECT 职工号 FROM 职工 E

WHERE 月工资=(SELECT MAX(月工资)

FROM 职工 AS M

WHERE M.部门号=E.部门号);

①请用30字以内的文字简要说明该查询语句对查询效率的影响。

②对该查询语句进行修改,使它既可以完成相同功能,又可以提高查询效率。(分数:3.00)

__________________________________________________________________________________________ 正确答案:()

解析:此问考查的是查询效率的问题。在涉及相关查询的某些情形中,构造临时。关系可以提高查询效率。

①对于外层的职工关系E中的每一个元组,都要对内层的整个职工关系M进行检索,因此查询效率不高。②解答方法一(先把每个部门最高工资的数据存入临时表,再对临时表进行查询):SELECT MAX (月工资) As 最高工资,部门号 Into Temp FROM 职工 GROUP BY 部门号; SELECT 职工号 FROM 职工,Temp WHERE 月工资=最高工资AND职工.部门号=Temp.部门号; 解答方法二(直接在FROM子句中使用临时表结构):SELECT 职工号 FROM职工,(SELECT MAX(月工资) As最高工资,部门号 FROM 职工 GROUP BY 部门号) As depMax WHERE 月工资=最高工资 AND职工.部门号=depMax.部门号;

(2).

(2)假定分别在“职工”关系中的“年龄”和“月工资”字段上创建了索引,如

下的Select查询语句可能不会促使查询优化器使用索引,从而降低了查询效率,请写出既可以完成相同功能又可以提高查询效率的SQL语句。

SELECT 姓名,年龄,月工资 FROM职工

WHERE 年龄>45 OR月工资<1000;

(分数:3.00)

__________________________________________________________________________________________

正确答案:()

解析:此问主要考察在查询中注意WHERE子句中使用索引的问题。既可以完成相同功能又可以提高查询效率的SQL语句如下: (SELECT 姓名,年龄,月工资 FROM 职工 WHERE 年龄>45) UNION (SELECT 姓名,年龄,月工资 FROM 职工 WHERE 月工资<1000);

2.某工厂的仓库管理数据库中有两个关系模式:

仓库(仓库号,面积,负责人,电话)

原材料(编号,名称,数量,储备量,仓库号)

要求一种原材料只能存放在同一仓库中。

(分数:8.00)

(1).

写出“查询存放原材料数量最多的仓库号”的SQL语句。

(分数:2.00)

__________________________________________________________________________________________

正确答案:()

解析:SELECT仓库号 FROM 原材料 GROUP BY 仓库号 HAVING SUM (数量)>=ALL(SELECT SUM(数量) FROM 原材料 GROUP BY 仓库号);

(2).

(2)下面是一个创建视图的语句:

CREATE VIEW raw_in_wh01 AS

SELECT *

FROM 原材料

WHERE 仓库号='01';

试写出“01号仓库所存储的原材料信息只能由管理员李劲松来维护,而采购员李强能够查询所有原材料的库存信息”的授权语句。

(分数:2.00)

__________________________________________________________________________________________

正确答案:()

解析:可以写两个授权语句:GRANT INSERT, DELETE, UPDATE ON raws_in_wh01 TO 李劲松; GRANT SELECT ON 原材料TO 李强;

(3).

(3)仓库管理数据库的订购计划关系模式为:订购计划(原材料编号,订购数量)。采用下面的触发器程序可以实现“当仓库中的任一原材料的数量小于其储备量时,向订购计划表中插入该原材料的订购记录,其订购数量为储备量的3倍”的功能。请将该程序的空缺部分补充完成。

CREATE TRIGGER ins_order_trigger AFTER{{U}} (1) {{/U}}ON 原材料REFERENCING NEW ROW AS nrow

FOR EACH ROW

WHEN nrow.数量<nrow.储备量

INSERT INTO 订购计划<VALUES

({{U}} (m) {{/U}},{{U}} (n) {{/U}});

(分数:2.00)

__________________________________________________________________________________________

正确答案:()

解析:UPDATE, INSERT (m)nrow.编号 (n)nrow.储备量*3

(4).

(4)如果一种原材料可以在多个仓库存放,则(3)中的触发器程序存在什么问题,如何修改?

(分数:2.00)

__________________________________________________________________________________________

正确答案:()

解析:存在的问题是:触发器程序判定某一原材料“数量”是否小于其存储量时,是按照当前记录的“数量”来判定的,当一种原材料存储在多个仓库时,这样判定是错误的,应根据该原材料在各仓库的存储总量判定。应将触发器程序的WHEN子句的条件修改为: WHEN nrow.储备量>(SELECT SUM(数量) FROM 原材料 WHERE 编号=(SELECT 编号 FROM nrow));

相关文档
最新文档