(20 )下列关于 SQL 语句的说法中,错误的是
A ) INSERT 语句可以向数据表中追加新的数据记录
B ) UPDATE 语句用来修改数据表中己经存在的数据记录
C ) DELETE 语句用来删除数据表中的记录
D ) CREATE 语句用来建立表结构并追加新的记录
实现“取消用户USER4对学生表STUD中学号(XH)的修改权限”这一功能的SQL语句是()。
A.REVOKE UPDATE (XH) ON TABLE FROM USER4;
B.REVOKE UPDATE (XH) ON TABLE STUD FROM PUBLIC ;
C.REVOKE UPDATE (XH) ON TABLE STUD FROM USER4;
D.REVOKE ALL PRIVILEGES ON TABLE STUD FROM USER4;
将表Emp的empname属性列的修改权限授予用户LIU,并允许LIU再将此权限转授其他人,实现的SQL语句是(48)。
A.GRANT update on Emp TO LIU WITH CHECK OPTION
B.GRANT update(empname)on Emp TO LIU WITH CHECK OPTION
C.GRANT update on Emp TO LIU WITH GRANT OPTION
D.GRANT update(empname)on Emp TO LIU WITH GRANT OPTION
CREATE TABLE销售明细表(
销售单据编号varchar(8),
商品编号varchar(8),
单价money,
数量int,
总价money
) ,
为了保证数据的一致性,建有如下触发器:
CREATE TRIGGER AutoCountSum
ON销售明细表FOR INSERT,UPDATE
AS
DECLARE@UnitPrice money,@Quantity int
DECLARE@Amount money
SELECT@UnitPrice=单价,@Quantity=数量
FROM inserted
SET@Amount=@UnitPrice*@Quantity
UPDATE销售明细表SET总价=@Amount
WHERE销售单据编号IN(SELECT销售单据编号FROM inserted)
AND商品编号IN(SELECT商品编号FROM inserted)
①设系统运行一段时间后此表中有近一百万条记录,此时发现对该表的插入操作速度很慢,请分析插入速度慢的原因。(3分)
在不改变数据库服务器硬件和表结构、不清理数据的情况下,请说明应如何优化此表的插入操作。(2分)
②在解决了①中的问题后,程序员在数据库中执行如下SQL语句:
SELECT商品编号,sum(总价)FROM销售明细表
WHERE单价>50
GROUP BY商品编号
请在不改变该SQL语句的情况下,给出提高该查询执行效率的方案。(5分)
试题二(15 分)
阅读以下说明,回答问题 1 至问题 4,将解答填入答题纸的对应栏内。
【说明】
某商场客户-商品数据库中各关系模式如下:
客户(客户号, 姓名, 性别, 年龄)
商品(商品号, 名称, 型号, 品牌, 单价, 库存)
销售(流水号, 客户号, 商品号, 数量, 日期)
采购(商品号,数量)
其中:
1)一种品牌的同一名称商品可以有多个型号,商品的库存有大于等于 0 约束;
2)销售表记录每一笔销售,每销售一件商品,其库存都要做相应的修改。
现假定已经建立了该数据库及上述四个基本表。
【问题 1】 (5 分)
(1) 客户关系中的年龄取值在 15 岁到 60 岁之间(包含 15 岁和 60 岁) ,增加该约束的 SQL 语句如下,请将空缺部分补充完整。
ALTER TABLE 客户 ADD CONSTRAINT
CONSTRAINT con_age CHECK ((a) )
(2) 如下用 SQL 语句创建的畅销商品视图包含商品号、商品名称、型号、品牌和销售量,该视图中商品的销售量大于等于 1000 件。请将空缺部分补充完整。
CREATE VIEW 畅销商品 (b)
AS
SELECT 商品.商品号, 名称, 型号, 品牌, 销售量
FROM 商品, (SELECT 商品号, (c) AS 销售量
FROM 销售
GROUP BY 商品号
HAVING SUM(数量) > = 1000 ) AS 商品销售量
WHERE (d) ;
(3) 将视图畅销商品的查询权限赋予销售经理李华,请将空缺部分补充完整。
GRANT (e) ON TABLE 畅销商品 TO 李华;
【问题 2】 (3 分)
查询购买“新飞”品牌的任一型号“冰箱”的客户姓名及购买日期。实现该查询的SQL 语句如下,请将空缺部分补充完整。
SELECT 姓名, 日期
FROM (f)
WHERE (g) AND 商品号 (h) (
SELECT 商品号 FROM 商品
WHERE 品牌 = ‘新飞’ AND 名称 = ‘冰箱’ )
【问题 3】 (3 分)
实现销售业务的嵌入式 SQL 代码段(嵌入 C 语言)如下,假设销售表的流水号由系
统自动生成。请将空缺部分补充完整。
……
EXEC SQL BEGIN DECLARE SECTION;
/* 销售:商品号,客户号,数量,日期 */
char pno[6]; char cno[6];
int quantity; char date[10];
EXEC SQL END DECLARE SECTION;
……
EXEC SQL CONNECT TO DEFAULT;
EXEC SQL SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
EXEC SQL INSERT INTO 销售(商品号,客户号,数量,日期)
VALUES((i) );
EXEC SQL UPDATE 商品 SET 库存 = (j) WHERE 商品号 = :pno;
if(SQLCA.SQLCODE != 0){
printf(“商品%s 库存不满足本次购买数量,交易失败!”, pno);
EXEC SQL ROLLBACK WORK;
} else{
EXEC SQL (k) ;
}
EXEC SQL DISCONNECT CURRENT;
……
【问题 4】 (4 分)
对商品表增加最小库存属性;若修改某商品的库存时,使得库存值小于或等于其最
小库存值,则向采购表插入一条记录,要求采购的数量是该商品最小库存值的两倍再加
上 10。下面是完成该功能的 SQL 语句,请将空缺部分补充完整。
ALTER TABLE 商品 (l) ;
CREATE TRIGGER 采购-trigger AFTER (m)
REFERENCING NEW ROW AS nrow
FOR EACH ROW
WHEN (n)
BEGIN
INSERT INTO 采购
VALUES((o) )
END
对于第7题的两个基本表,有一个SQL语句: UPDATE EMP SET SALARY=SALARY*1.05 WHERE DNO='D6' AND SALARY<(SELECT AVG(SALARY) FROM EMP);其等价的修改语句为______。
A.为工资低于D6部门平均工资的所有职工加薪5%
B.为工资低于整个企业平均工资的职工加薪5%
C.为在D6部门工作、工资低于整个企业平均工资的职工加薪5%
D.为在D6部门工作、工资低于本部门平均工资的职工加薪5%
ALTER TABLE 账户 (k) DEFAULT 0;
UPDATE 账户 (l) ;
(1)用SELECT语句查询表“销售记录”中“会员编号”为“000002”的记录。
(2)用INSERT语句为表“销售记录”插入一条记录(”000011”,”00000002”,6,700,11/02/07)。
(3)用DELETE将表“销售记录”中销售日期在2008年之前的记录删除。
(4)用UPDATE将“销售记录”表的字段“销售日期”减10天。
将以上操作使用的SQL语句保存到“result1.txt”中。