数据库第一、二、三章课后习题答案(3)

2019-08-30 20:07

表3:工程向目表J由项目号(JNO)、项目名(JNAME)、项目所在城市(CITY)组成,记录各个工程项目的情况。

解:CREATE TABLE J(JNO CHAR(2) UNIQUE, JNAME CHAR(8), CITY CHAR(4));

表4:供应情况表SPJ由供应商号(SNO)、零件号(PNO)、项目号(JNO)、供应数量(QTY)组成,记录各供应商供应各种零件给各工程项目的数量。

解:CRATE TABLE SPJ(SNO CHAR(2) , PNO CHAR(2), JNO CHAR(2), QTY NVARCHAR(2));

4.针对第2题创建的表,用SQL语言进行下列各项操作: (1)统计每种零件的供应总量; select pno, sum(qty) from spj

group by pno

(2)求零件供应总量在1000种以上的供应商名字; select s.sname from s

where s.sno in (

select spj.sno from spj

group by spj.sno having sum(qty)>=1000 );

(3)在S表中插入一条供应商信息:(S6,华天,深圳); insert into s values('S6', '华天', '深圳');

(4)把全部红色零件的颜色改为粉红色; alter table p alter column color char(6); update p

set color='粉红' where color='红';

(5)将S2供应给J1的零件P1改为由P2供给; update spj set pno='P2'

where sno='S2' and jno='J1' and pno='P1'; (6)删去全部蓝色零件及相应的SPJ记录。 delete from spj

where pno in (

select pno from p

where color='蓝');

以上连敲否则每题末尾加\

5.视图有什么优点?

视图的优点主要表现在以下几点:

(1)视点集中:试图集中即是使用户关心它感兴趣的某些特定数据和他们所负责的特定任务。这样通过只允许用户看到视图中所定义的数据而不是试图引用表中的数据而提高了数据的安全性。

(2)简化操作:视图大大简化了用户对数据的操作。因为在定义视图时,若试图本身就是一个复杂查询的结果集,这样在每一次执行相同的查询时,不必重新写这些复杂的查询语句,只要一条简单的查询视图语句即可。可见视图向用户隐藏了表与表之间的复杂的连接操作。 (3)定制数据:视图能够实现让不同的用户以不同的方式看到不同或相同的数据集。因此,当有许多不同水平的用户共用同一数据库时,这显得极为重要。

(4)合并分割数据:在有些情况下,由于表中数据量太大,故在表的设计时常将表进行水平分割或垂直分割,但表的结构的变化却对应用程序产生不良的影响。如果使用视图就可以重新保持原有的结构关系,从而使外模式保持不变,原有的应用程序仍可以通过视图重载数据。

(5)安全性:视图可以作为一种安全机制。通过视图用户只能查看和修改他们所能看到的数据。其它数据库或表既不可见也不可以访问。如果某一用户想要访问视图的结果集,必须授予其访问权限。视图所引用表的访问权限与视图权限的设置互不影响。

6.在上面各表的基础上创建下列视图VSJ,它记录了给“三建”工程项目的供应灵感见的情况,包括供应商号、零件号和零件数量;并对该视图查询S1供应商的供货情况。 创建VSJ视图:

CREATE VIEW SANJAN_SPJ AS

SELECT SNO, PNO,QTY FROM SPJ, J

WHERE SOJ.JNO=J.JNO AND J.JNAME='三建'

查询三件工程使用的各种零件号和零件数量: SELECT PNO, SUM(QTY) SELECT PNO,QTY FROM SANJIAN_SPJ FROM SANJIAN_SPJ GROUP BY PNO;

查询S1供应商的供货情况: SELECT *

FROM SANJIAN_SPJ WHERE SNO='S1'

7.针对第2题创建的表,用SQL语言进行下列各项操作: (1)将S,P,J和SPJ表的所有权限授予用户张成。 GRANT ALL PRIVILEGES ON TABLE S,P,J,SPJ TO 张成

(2)将SPJ表的SELECT权和QTY列的UPDATE权授予用户徐天,并允许他传播这些权限。 GRANT UPDATE (QTY); SELECT ON TABLE SPJ; TO 徐天;

WITH GRANT OPTION);

(3)回收刘澜用户对S表SNO列的修改权。 REVOKE UPDATE (SNO) ON TABLE S FROM 刘澜);

8.嵌入式SQL语句与主语言之间如何进行通信? 在嵌入式SQL中,向主语言传递SQL执行状态信息主要用SQL通信区(SQL communication area,简称SQLCA)实现;主语言向SQL语句输入数据主要用主变量(host variable)实现;SQL语句向主语言输出数据主要用主变量和游标(cursor)实现。

9.嵌入式SQL什么情况下需要使用游标?使用游标的步骤分别是什么?

答:while循环,子查询,临时表,表变量,自建函数或其他方式都无法处理某种操作的时候使用游标。

(1)定义/声明游标:就是定义一个游标名,以及与其相对应的SELECT语句。

(2)打开游标:就是执行游标所对应的SELECT语句,将其查询结果放入工作区,并且指针指向工作区的首部,标识游标结果集合。如果游标查询语句中带有FOR UPDATE选项,OPEN语句还将锁定数据库表中游标结果集合对应的数据行。

(3)提取游标数据:就是检索结果集合众的数据行,放入指定的输出变量中。

(4)关闭游标:当提取和处理完游标结果集合数据后,应及时关闭游标,以释放该游标所占用的系统资源,并使该游标的工作区变成无效,不能再使用FETCH 语句取其中数据。关闭后的游标可以使用OPEN 语句重新打开。


数据库第一、二、三章课后习题答案(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:网络技术(第一章 计算机基础)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: