阅读以下说明,回答问题1至问题3,将答案写在对应栏内。
【说明】
关于一位花商有以下一些事实。
(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 <用户>[,<用户>]…;