数据库系统工程师-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));