习题五参考答案

上传人:M****1 文档编号:560266910 上传时间:2023-03-30 格式:DOC 页数:4 大小:46.50KB
返回 下载 相关 举报
习题五参考答案_第1页
第1页 / 共4页
习题五参考答案_第2页
第2页 / 共4页
习题五参考答案_第3页
第3页 / 共4页
习题五参考答案_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《习题五参考答案》由会员分享,可在线阅读,更多相关《习题五参考答案(4页珍藏版)》请在金锄头文库上搜索。

1、1. 以图3-6的数据库为例(可参照图5-1,该数据库的实例),用关系代数完成以下检索:(注意:此处暂以 * 表示连接运算符。)1) 检索在仓库WH2工作的职工的工资。职工号,工资(仓库号=WH2(职工)2) 检索在上海工作的职工的工资。职工号,工资(城市=上海(仓库) * 职工)3) 检索北京的供应商的名称。供应商名(地址=北京(供应商)4) 检索目前与职工E6有业务联系的供应商的名称。供应商名(职工号=E6(订购单) * 供应商)5) 检索所有职工的工资都大于1220元的仓库所在的城市。城市(仓库) -城市(工资=1220(职工) * 仓库)6) 检索和北京的所有供应商都有业务联系的职工的

2、工资。职工号,工资(职工 * (订购单供应商号(地址=北京(供应商)7) 检索至少和职工E1、E4、E7都有联系的供应商的名称。供应商名(订购单(“E1”,”E4”,”E7”) * 供应商)习题五1. 试概述SQL语言的功能。SQL是一种一体化的语言,它包括了数据定义、数据查询、数据操纵和数据控制等方面的功能,它可以完成数据库活动中的全部工作。2. 以图5-1的数据库为例,用SQL完成以下检索: 1) 检索在北京的供应商的名称。SELECT * FROM 供应商 WHERE 地址=北京2) 检索发给供应商S6的订购单号。SELECT 订购单号 FROM 订购单 WHERE 供应商号=S63)

3、检索出职工E6发给供应商S6的订购单信息。SELECT * FROM 订购单 WHERE 供应商号=S6 AND 职工号=E64) 检索出向供应商S3发过订购单的职工的职工号和仓库号。SELECT 职工号,仓库号 FROM 职工 WHERE 职工号 IN( SELECT 职工号 FROM 订购单 WHERE 供应商号=S3 )5) 检索出目前与S3供应商没有联系的职工信息。SELECT * FROM 职工 WHERE 职工号 NOT IN( SELECT 职工号 FROM 订购单 WHERE 供应商号=S3 )6) 检索出目前没有任何订购单的供应商信息。SELECT * FROM 供应商 WH

4、ERE NOT EXISTS( SELECT * FROM 订购单 WHERE 供应商号=供应商.供应商号 )7) 检索出和职工E1、E3都有联系的北京的供应商信息。SELECT * FROM 供应商 WHERE 地址=北京 and 供应商号 IN( SELECT 供应商号 FROM 订购单 WHERE 职工号=E1 )AND 供应商号 IN( SELECT 供应商号 FROM 订购单 WHERE 职工号=E3 )8) 检索出目前和华通电子公司有业务联系的每个职工的工资。SELECT 职工号,工资 FROM 职工 WHERE 职工号 IN(SELECT 职工号 FROM 订购单 WHERE 供

5、应商号 IN(SELECT 供应商号 FROM 供应商 WHERE 供应商名=华通电子公司)9) 检索出与工资在1220元以下的职工没有联系的供应商的名称。SELECT 供应商名 FROM 供应商 WHERE 供应商号 IN(SELECT 供应商号 FROM 订购单 WHERE 职工号 NOT IN(SELECT 职工号 FROM 职工 WHERE 工资 1230) AND 供应商号 IN(SELECT 供应商号 FROM 供应商 WHERE 地址=北京)14) 检索出仓库的个数。SELECT COUNT(*) FROM 仓库15) 检索出有最大面积的仓库信息。SELECT * FROM 仓库

6、 WHERE 面积=(SELECT MAX(面积) FROM 仓库)16) 检索出所有仓库的平均面积。SELECT AVG(面积) FROM 仓库17) 检索出向S4供应商发出订购单的那些仓库的平均面积。SELECT AVG(面积) FROM 仓库 WHERE 仓库号 IN(SELECT 仓库号 FROM 职工 WHERE 职工号 IN(SELECT 职工号 FROM 订购单 WHERE 供应商号=S4)18) 检索出每个城市的供应商个数。SELECT 地址,COUNT(*) FROM 供应商 GROUP BY 地址19) 检索出每个仓库中工资多于1220元的职工个数。SELECT 仓库号,C

7、OUNT(*) FROM 职工 WHERE 工资1220 GROUP BY 仓库号20) 检索出和面积最小的仓库有联系的供应商的个数。SELECT COUNT(*) FROM 供应商 WHERE 供应商号 IN(SELECT 供应商号 FROM 订购单 WHERE 职工号 IN(SELECT 职工号 FROM 职工 WHERE 仓库号 IN(SELECT 仓库号 FROM 仓库 WHERE 面积=(SELECT MIN(面积) FROM 仓库)21) 检索出工资低于本仓库平均工资的职工信息。SELECT * FROM 职工 out WHERE 工资(SELECT AVG(工资) FROM 职工

8、 inne WHERE 仓库号=out.仓库号)3. 试述关系数据库中视图(View)的含义和作用。在关系数据库中,视图也称作窗口,即视图是操作基本表的窗口。在三层数据库体系结构中,视图是外部数据库,它是从基本表中派生出来的并依赖于基本表,它并不独立存在。利用视图一方面可以限定对数据的访问(对数据列起到安全保护的作用),另一方面又可以简化对数据的访问(用户可以直接通过视图访问数据库)。除此之外,从三层数据库体系结构的角度它还提供了概念数据独立性。4. 以图5-1的数据库为例,用SQL语句完成以下更新操作,并讨论数据完整性约束对这些操作的影响:1) 插入一个新的供应商元组(S9,智通公司,沈阳)

9、。INSERT INTO 供应商 VALUES(S9,智通公司,沈阳)2) 删除目前没有任何订购单的供应商。DELETE FROM 供应商 WHERE 供应商号 NOT IN(SELECT 供应商号 FROM 订购单)3) 删除由在上海仓库工作的职工发出的所有订购单。DELETE FROM 订购单 WHERE 职工号 IN(SELECT 职工号 FROM 职工 WHERE 仓库号 IN(SELECT 仓库号 FROM 仓库 WHERE 城市=上海)4) 北京的所有仓库增加100m2的面积。UPDATE 仓库 SET 面积=面积+100 WHERE 城市=北京5) 给低于所有职工平均工资的职工提

10、高5%的工资。UPDATE 职工 SET 工资=工资*1.05 WHERE 工资(SELECT AVG(工资) FROM 职工)5. SQL要嵌入到宿主语言中使用要解决哪几方面的问题?把SQL嵌入到宿主语言中使用必须要解决以下三个方面的问题:1) 嵌入识别问题。宿主语言的编译程序不能识别SQL语句,所以首要的问题就是要解决如何区分宿主语言的语句和SQL语句。2) 宿主语言与SQL语言的数据交互问题。SQL语句的查询结果必须能够交给宿主语言处理,宿主语言的数据也要能够交给SQL语句使用。3) 宿主语言的单记录与SQL的多记录的问题。宿主语言一般一次处理一条记录,而SQL常常处理的是记录(元组)的

11、集合,这个矛盾必须解决。6. 试述预编译的作用。宿主语言的编译系统不能识别SQL语句。解决这个问题的一般方法是,为SQL语句加一个特殊的前缀,在用宿主语言的编译系统编译源程序之前,首先由预编译系统将SQL语句转换为宿主语言的合法函数调用。7. 试述游标(Cursor)的作用,并解释实现此功能的诸条语句的用途。宿主语言一般只能在单记录方式下工作,即一次处理一个记录。而SQL语句的查询结果常常是一张表,它包含多个记录,为此需要用游标(CURSOR)作为桥梁做一些特殊处理,即利用游标来临时存放SQL语句的查询结果,并利用游标与宿主语言的主变量进行数据交互。与游标有关的命令共有四条:DECLARE CURSOR、OPEN、FETCH和CLOSE。其中DECLARE CURSOR用SQL SELECT语句说明一个游标;OPEN打开游标,即执行说明游标的SQL SELECT语句;FETCH从游表中读一条记录到主变量;CLOSE关闭游标。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑/环境 > 建筑资料

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号