习题五参考答案.doc_第1页
习题五参考答案.doc_第2页
习题五参考答案.doc_第3页
习题五参考答案.doc_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1. 以图3-6的数据库为例(可参照图5-1,该数据库的实例),用关系代数完成以下检索:(注意:此处暂以 * 表示连接运算符。)1) 检索在仓库WH2工作的职工的工资。职工号,工资(仓库号=WH2(职工)2) 检索在上海工作的职工的工资。职工号,工资(城市=上海(仓库) * 职工)3) 检索北京的供应商的名称。供应商名(地址=北京(供应商)4) 检索目前与职工E6有业务联系的供应商的名称。供应商名(职工号=E6(订购单) * 供应商)5) 检索所有职工的工资都大于1220元的仓库所在的城市。城市(仓库) -城市(工资=1220(职工) * 仓库)6) 检索和北京的所有供应商都有业务联系的职工的工资。职工号,工资(职工 * (订购单供应商号(地址=北京(供应商)7) 检索至少和职工E1、E4、E7都有联系的供应商的名称。供应商名(订购单(“E1”,”E4”,”E7”) * 供应商)习题五1. 试概述SQL语言的功能。SQL是一种一体化的语言,它包括了数据定义、数据查询、数据操纵和数据控制等方面的功能,它可以完成数据库活动中的全部工作。2. 以图5-1的数据库为例,用SQL完成以下检索: 1) 检索在北京的供应商的名称。SELECT * FROM 供应商 WHERE 地址=北京2) 检索发给供应商S6的订购单号。SELECT 订购单号 FROM 订购单 WHERE 供应商号=S63) 检索出职工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 供应商 WHERE 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 供应商号 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 仓库 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 仓库号,COUNT(*) 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 职工 inne WHERE 仓库号=out.仓库号)3. 试述关系数据库中视图(View)的含义和作用。在关系数据库中,视图也称作窗口,即视图是操作基本表的窗口。在三层数据库体系结构中,视图是外部数据库,它是从基本表中派生出来的并依赖于基本表,它并不独立存在。利用视图一方面可以限定对数据的访问(对数据列起到安全保护的作用),另一方面又可以简化对数据的访问(用户可以直接通过视图访问数据库)。除此之外,从三层数据库体系结构的角度它还提供了概念数据独立性。4. 以图5-1的数据库为例,用SQL语句完成以下更新操作,并讨论数据完整性约束对这些操作的影响:1) 插入一个新的供应商元组(S9,智通公司,沈阳)。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) 给低于所有职工平均工资的职工提高5%的工资。UPDATE 职工 SET 工资=工资*1.05 WHERE 工资(SELECT AVG(工资) FROM 职工)5. SQL要嵌入到宿主语言中使用要解决哪几方面的问题?把SQL嵌入到宿主语言中使用必须要解决以下三个方面的问题:1) 嵌入识别问题。宿主语言的编译程序不能识别SQL语句,所以首要的问题就是要解决如何区分宿主语言的语句和SQL语句。2) 宿主语言与SQL语言的数据交互问题。SQL语句的查询结果必须能够交给宿主语言处理,宿主语言的数据也要能够交给SQL语句使用。3) 宿主语言的单记录与SQL的多记录的问题。宿主语言一般一次处理一条记录,而SQL常常处理的是记录(元组)的集合,这个矛盾必须解决。6. 试述预编译的作用。宿主语言的编译系统不能识别SQL语句。解决这个问题的一般方法是,为SQL语句加一个特殊的前缀,在用宿主语言的编译系统编译源程序之前,首先由预编译系统将SQL语句转换为宿主语言的合法函数调用。7. 试述游标(Cursor)的作用,并解释实现此功能的诸条语句的用途。宿主语言一般只能在单记录方式下工作,即一次处理一个记录。而SQL语句的查询结果常常是一张表,它包含多个记录,为此需要用游标(CURSOR)作为桥梁做一些特殊处理,即利用游标来临时存放SQ

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论