【说明】
关于一位花商有以下一些事实。
(1)销售在不同地区生长的花,这些地区一年的最低气温在一定范围内变化。
(2)想用编号来表示发货类型。
(3)要出售某些类型的花。
假定已经通过SQL语句建立了基本表:
CREATE TABLE Zone(ID CHAR(2) PRIMARY KEY,
LowerTemp NUMERIC(3),
UpperTemp NUMERIC(3));
CREATE TABLE Delivery(ID CHAR (2) PRIMARY KEY,
Category CHAR(5),
DelSize NUMERIC(5,3));
CREATE TABLE FlowerInfo(ID CHAR (3),
ComName CHAR(25),
LatName CHAR(30),
Czone NUMERIC(3),
Hzone NUMERIC(3),
Delivered NUMERIC(3),
SunNeed CHAR(3),
PRIMARY KEY(ID));
地区(ID,最高温度,最低温度)
发货(ID,发货类型,发货规格)
花的信息(ID,普通名,拉丁名,花能够生长的最冷地区,花能够生长的最热地区,发货类型,日光需求)
【问题3】
写出如下SQL实现语句。
(1)把对表Zone的INSERT权限授予用户Smith,并允许它再将此权限授予他人。
(2)收回已经授予Tom的对表FlowerInfo中属性ComName的修改权限。
(3)建立视图viewpot,表现问题2的功能。
参考答案:(A) GREANT INSERT ON TABLE Zone TO Smith WITH GRANT OPTION
(B) REVOKE UPDATE(ComName)ON TABLE FlowerInfo FROM Tom
(C) CREATE VIEW Viewpot(ID,ComName, DeISize)
AS
SELECT FlowerInfo.ID,FlowerInfo.ComName,Delivery.DelSize
FROM FlowerInfo AS F, Delivery AS D
WHERE F.Delivered=D.id AND D.Category=’pot’
ORDER BY F.ComName DESC
解析:
[分析]: SQL语言中的数据控制语句有授权(GRANT)和收获权限(REVOKE),其基本格式分别如下:
GRANT<权限>[,<权限>]…
[ON<对象类型><对象名>]
TO<用户>[,<用户>]…
[WHERE GRANT OPTION]
REVOKE<权限>[,<权限>]…
[ON<对象类型><对象名>]
FROM<用户>[,<用户>]…
据此可得问题(1)对应的SQL语句为GREANT INSERT ON TABLE Zone TO Smith WITH GRANT OPTION;问题(2)对应的SQL语句为REVOKE UPDATE(ComName)ON TABLE FlowerInfO FROM Tom。
问题(3)是创建视图,用CREATE VIEW语句实现,其基本格式为:
CREATE VIEW 视图名(列表名)
AS SELECT 查询子句
[WITH CHECK OPTION]
根据题意可得对应的SQL语句为:
CREATE VIEW Viewpot(ID,ComName,DelSize)
AS
SELECT FlowerInfo.ID,FlowerInfo.ComName,Delively.DelSize
FROM FlowerInfo AS F,Delivery AS D
WHERE F.Delivered=D.id AND D.Category=’pot’
ORDER BY F.ComName DESC