问题 问答题

【说明】
关于一位花商有以下一些事实。
(1)销售在不同地区生长的花,这些地区一年的量低温度在一定范围内变化。
(2)想用编号来表示发货类型。
(3)要出售某些类型的花。
假定已经通过SQL语句建立了基本表:
CREATE TABLE Zone
(
ID Char(2) PRIMARY KEY,
LowerTemp Number (3),
UpperTemp Number (3)
);
CREATE TABLE Delivery
(
ID char(2)PRIMARY KEY,
Category VarChar (5),
DelSize Number (5,3)
):
CREATE TABLE FlowerInfo
(
ID Char(3) CONSTRAINT
Flowerinfo_ id _ pk PRIMARY KEY,
ComName VarChar (25),
LatName VarChar (30),
Czone Number (3),
Hzone Number (3),
Delivered Number (3),
SunNeed Char (3),
PRIMARY KEY (ID)
):
地区(ID,最高温度,最低温度)
发货(ID,发货类型,发货规格)
花的信息(ID,普通名,拉丁名,花能够生长的最冷地区,花能够生长的最热地区,发货类型,日光需求)

【问题3】
(1)把对表ZONE的INSERT权限授予用户Smith,并允许他再将此权限授予其他人。
(2)收回已经授予Tom的对FlowerInfo中属性ComName的修改权限。
(3)建立视图viewpot,表现问题2的功能。

答案

参考答案:(1)GRANT INSERT ON TABLE ZONE TO SMITH WITH GRANT OPTION;
(2)REVOKE UPDATE(ComName)ON TABLE FLOWERINFO FROM TOM;
(3)CREATE VIEW Viewpot(ID,ComName,DelSize)
AS
SELECT FlowerInfo.ID,FlowerInfo. ComName,Delivery.DelSize
From FLOWERINFO ASP,DELIVERY AS D
WHERE F.Delivered=D.ID AND D.Category=’pot’
ORDER BY F. ComName DESC;

解析: 问题1的插入语句很简单,只是考查考生基本的SQL语言能力。
Insert语句的基本格式如下:
INSERT INTO基本表名(字段名[,字段名]…)
VALUES(常量[,常量]…);
问题2中的查询需要两个表:delivery和flowerinfo,必须知道如何连接这两个表。
SELECT语句的基本格式如下:
SELECT [ALL|DISTINCT]<目标列表达式>[别名][,<目标列表达式>[别名]]…
FROM<表名或视图名>[别名][,<表名或视图名>别名]]…
[WHERE<条件表达式>]
[GROUP BY<列名1>[HAVING<条件表达办>]]
[ORDER BY<列名2>[ASC|DESC]];
SQL语言中的数据控制语句有授权(GRANT),收回权限(REVOKE),一般考生对这两个语句的掌握可能会不熟悉。
SQL语言用CREATE VIEW命令建立视图,其一般格式为:
CREATE VIEW<视图名>[(<列名>(<,<列名>)…)]
AS<子查询>
[WITH CHECK OPTION];
SQL语言用GRANT语句向用户授予操作权限,GRANT语句的一般格式为:
GRANT<权限>[,<权限>]…
[ON<对象类型><对象名>]
TO<用户>[,用户>]…
[WITH GRANT OPTION];
其语义是将对指定操作对象的指定操作权限授予指定的用户。[WITH GRANT OPTION]是可将获得的权限授予他人。
授予的权限可以由DBA或其他授权者用REVOKE语句收回。
REVOKE语句的一般格式为:
REVOKE<权限>[,<权限>]…
[ON<时象类型><对象名>]
FROM <用户>[,<用户>]…;

单项选择题
单项选择题