问题 问答题


阅读以下说明,回答问题1至问题4。
【说明】
某商场客户-商品数据库中各关系模式如下:
客户(客户号,姓名,性别,年龄)
商品(商品号,名称,型号,品牌,单价,库存)
销售(流水号

,数量,日期)
采购(商品号,数量)
其中:
1)一种品牌的同一名称商品可以有多个型号,商品的库存有大于等于0约束:
2)销售表记录每一笔销售,每销售一件商品,其库存都要做相应的修改。
现假定已经建立了该数据库及上述四个基本表。

【问题4】
对商品表增加最小库存属性;若修改某商品的库存时,使得库存值小于或等于其最小库存值,则向采购表插入一条记录,要求采购的数量是该商品最小库存值的两倍再加上10。下面是完成该功能的SQL语句,请将空缺部分补充完整。
ALTER TABLE 商品 (1)
CREATE TRIGGER 采购 -trigger AFTER (m)
REFERENCING NEW ROW AS nrow
FOR EACH ROW
WHEN (n)
BEGIN
INSERT INTO 采购
VALUES( (o) )
END

答案

参考答案:

解析:(1)ADD 最小库存 INT (注:INT 处可为INTEGER) (m)UPDATE OF 库存 ON 商品 或 UPDATE ON 商品 (n)nrow.数量<=nrow.最小库存 (o)nrow.商品号,nrow.最小库存*2+10

[分析]: 本题考查的是SQL的应用,属于比较传统的题目,与往年比较,今年的考查点增加了嵌入式SQL的内容。 问题1考查SQL中的数据定义语言DDL和数据控制语言DCL。 (1)定义列级上的用户定义完整性约束,要求客户的年龄在15岁~60岁之间,包含15岁和60岁,因此空缺处(a)年龄>=15 AND年龄<=60,在标准SQL中,表示在某范围内取值还可以用关键字BETWEEN…AND…,因此该空缺处也可以填写BETWEEN 15 AND 60。注意在SQL中没有15<=年龄<=60这样的表达方式。 (2)创建视图。定义视图时,视图的属性列或者全部省略或者全部指定。若全部省略,则表示该视图由子查询中SELECT子旬目标列中的诸字段构成,这时要求这些字段是简单的属性名。本题中SELECT子句后的商品.商品号不是简单的属性名,且视图的第二个属性商品名称与SELECT子句后的名称不同,故(b)需要全部指定属性名。(c)处应填写集函数SUM(数量)。(d)处考核连接查询的查询条件,视图应仅包含销售量大于等于1000件的商品信息,故有等值连接条件商品.商品号=商品销售量.商品号。 (3)数据控制语言中的授权语句。GRANT后跟着的授予的操作权限,故此处填SELECT。 问题2考查SQL中的数据操作语言DML。该查询涉及到客户、商品和销售三个表的信息,但由于商品表的查询嵌套在外层查询内,故外层查询只连接查询客户和销售两个表,WHERE 后是连接查询条件。谓词m用来查找属于指定集合的元组,此处不能用来表示。 问题3考查嵌入式SQL。空缺处(i)和(j)考查嵌入式SQL程序中主变量的应用。每执行完一个SQL语句,SQLCA中的SQLCODE给出该语句执行的结果情况。根据程序流程,else表示SQL语句能成功执行的分支,(k) 处应填COMMIT WORK 或COMMIT。 问题4考查SQL中的数据定义语言DDL。 (1)对商品表增加最小库存属性,此时要修改商品表结构,增加一个属性。新增列的语法为ADD<新列名><数据类型>[完整性约束]。此处新列名为最小库存,类型为整数类型INTEGER或INT,题目并未要求定义完整性约束。 (2)当有商品销售时,商品的库存减少。当商品库存小于等于其最小库存时,采购相应的商品,数量为最小库存的两倍加上10。可以通过建立触发器来完成此需求。(m)处填写触发事件,即商品表上或者商品表的库存信息更新时,若满足触发条件,即商品库存小于等于其最小库存,则执行触发动作,即插入采购信息。

问答题 论述题
问答题 论述题