欢迎来到天天文库
浏览记录
ID:11009053
大小:32.00 KB
页数:4页
时间:2018-07-09
《第3章部分习题与解答》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第三章习题4.针对上题中建立的四个表试用SQL语言完成第2章习题5中的查询。答案:(1)求供应工程J1零件的供应商号码SNO;SELECTSNOFROMSPJWHEREJNO=‘J1’;(2)求供应工程J1零件P1的供应商号码SNO;SELECTSNOFROMSPJWHEREJNO=‘J1’ANDPNO=‘P1’;(3)求供应工程J1零件为红色的供应商号码SNO;SELECTSNO/*这是嵌套查询*/FROMSPJWHEREJNO=‘J1’ANDPNOIN/*找出红色的零件的零件号码PNO*/(SELECTPNOFROMP/*从P表中找*/WHERECOLOR=‘红’);或SEL
2、ECTSNOFROMSPJ,P/*这是两表连接查询*/WHEREJNO=‘J1’/*这是复合条件连接查询*/ANDSPJ.PNO=P.PNOANDCOLOR=‘红’;(4)求没有使用天津供应商生产的红色零件的工程号JNO;*解析:第一种解法是使用多重嵌套查询,第二种方法的子查询是一个多表连接。注意:从J表入手,以包含那些尚未使用任何零件的工程号。SELECTJNOFROMJWHERENOTEXISTS(SELECT*FROMSPJWHERESPJ.JNO=J.JNOANDSNOIN/*天津供应商的SNO*/(SELECTSNOFROMSWHERECITY=‘天津’)ANDPNOI
3、N/*红色零件的PNO*/(SELECTPNOFROMPWHERECOLOR=‘红’));或SELECTJNOFROMJWHERENOTEXISTS(SELECT*FROMSPJ,S,PWHERESPJ.JNO=J.JNOANDSPJ.SNO=S.SNOANDSPJ.PNO=P.PNOANDS.CITY=‘天津’ANDP.COLOR=‘红’);//注:本例中父查询和子查询均引用了Student表,可以像自身连接那样用别名将父查询中的Student表与子查询中的Student表区分开://(5)求至少用了供应商S1所供应的全部零件的工程号JNO(类似于P113例44)。解析:它所表
4、达的语义为:不存在这样的零件y,供应商S1供应了y,而工程x没有选用y。用SQL语言表示如下:SELECTDISTINCTJNOFROMSPJSPJZWHERENOTEXISTS(SELECT*FROMSPJSPJXWHERESNO='S1'ANDNOTEXISTS(SELECT*FROMSPJSPJYWHERESPJY.PNO=SPJX.PNOANDSPJY.JNO=SPJZ.JNOANDSPJY.SNO=’S1’));5.针对习题3中的四个表试用SQL语言完成以下各项操作:(1)找出所有供应商的姓名和所在城市。(2)找出所有零件的名称、颜色、重量。(3)找出使用供应商S1所供
5、应零件的工程号码。(4)找出工程项目J2使用的各种零件的名称及其数量。(5)找出上海厂商供应的所有零件号码。(6)找出使用上海产的零件的工程名称。(7)找出没有使用天津产的零件的工程号码。(8)把全部红色零件的颜色改成蓝色。(9)由S5供给J4的零件P6改为由S3供应,请作必要的修改。(填空题)(10)从供应商关系中删除S2的记录,并从供应情况关系中删除相应的记录。(11)请将(S2,J6,P4,200)插入供应情况关系。答案:(1)找出所有供应商的姓名和所在城市。SELECTSNAME,CITYFROMS;(2)找出所有零件的名称、颜色、重量。SELECTPNAME,COLOR
6、,WEIGHTFROMP;(3)找出使用供应商S1所供应零件的工程号码。SELECTJNOFROMSPJWHERESNO=‘S1’;(4)找出工程项目J2使用的各种零件的名称及其数量。SELECTP.PNAME,SPJ.QTYFROMP,SPJWHEREP.PNO=SPJ.PNOANDSPJ.JNO='J2';(5)找出上海厂商供应的所有零件号码。SELECTDISTINCTPNOFROMSPJWHERESNOIN(SELECTSNOFROMSWHERECITY='上海');(6)找出使用上海产的零件的工程名称。SELECTJNAMEFROMJ,SPJ,SWHEREJ.JNO=S
7、PJ.JNOANDSPJ.SNO=S.SNOANDS.CITY='上海';或SELECTJNAMEFROMJWHEREJNOIN(SELECTJNOFROMSPJ,SWHERESPJ.SNO=S.SNOANDS.CITY='上海');(7)找出没有使用天津产的零件的工程号码。SELECTJNOFROMJWHERENOTEXISTS(SELECT*FROMSPJWHERESPJ.JNO=J.JNOANDSNOIN(SELECTSNOFROMSWHERECITY=‘天津’));或SE
此文档下载收益归作者所有