数据库l分组查询和嵌套查询Word下载.docx
《数据库l分组查询和嵌套查询Word下载.docx》由会员分享,可在线阅读,更多相关《数据库l分组查询和嵌套查询Word下载.docx(9页珍藏版)》请在冰豆网上搜索。
FromP
GroupbyCOLOR
2.求北京供应商和天津供应商的总个数。
Selectcount(CITY)
FromS
whereCITY='
北京'
or='
天津’
3.求各供应商供应的零件总数。
SelectSNO,SUM(QTY)
FromSPJ
GROUPBYSNO,JNO
4.求各供应商供应给各工程的零件总数。
selectSNO,JNO,sum(QTY)
fromSPJ
groupbysno,jno
5.求使用了100个以上P1零件的工程名称。
SelectdistinctJNAME
FromJ,SPJ
WhereQTY>
100ANDPNO='
P1'
andJ.JNO=SPJ.JNO
6.求各工程使用的各城市供应的零件总数。
SelectJNAME,S.CITY,SUM(QTY)
FROMS,SPJ,J
WHERES.SNO=SPJ.SNOANDJ.JNO=SPJ.JNO
GROUPBYS.CITY,J.JNO,JNAME
(二)嵌套查询:
1.in连接谓词查询:
1查询没有使用天津供应商供应的红色零件的工程名称。
selectdistinctJNAME
fromJ
whereJNOnotin
(selectJNO
fromSPJ,P,S
whereS.CITY='
天津'
ANDCOLOR='
红'
ANDS.SNO=SPJ.SNOANDP.PNO=SPJ.PNO)
查询供应了1000个以上零件的供应商名称。
(having)
SelectSNAME
WHERESNOin(
Selectsno
Groupbysno
Havingsum(QTY)>
1000
)
2.比较运算符:
求重量大于所有零件平均重量的零件名称。
SelectPNAME
Whereweight>
(selectAVG(weight)
FromP)
3.Exists连接谓词:
1查询供应J1的所有的零件都是红色的供应商名称。
WhereExists
(
select*
FromP,SPJ
WhereP.PNO=SPJ.PNOAND
S.SNO=SPJ.SNOAND
COLOR='
ANDJNO='
J1'
2至少用了供应商S1所供应的全部零件的工程号JNO。
SelectDISTINCTJNO
FROMSPJSPJx
WHERENOTEXISTS
SELECT*
FROMSPJSPJy
WHERESPJy.SNO='
S1'
AND
NOTEXISTS
SELECT*
FROMSPJSPJz
WHERESPJz.PNO=SPJy.PNOAND
SPJz.JNO=SPJx.JNOAND
SPJz.SNO='
三、出现问题及其解决办法:
1、对分组查询概念理解不清,总是写错语句。
解决办法:
在同学的帮助下,我又重新看了一下课本,基本掌握吧。
2、在做“至少用了供应商S1所供应的全部零件的工程号JNO。
”
时开始分了两张表,但总表达不了完整的意思。
解决办法:
最后想起了这里的表比书本上多了一张表,最后分成xyz三张表。
四、思考题:
(1)嵌套查询中的in连接谓词查询,关键字in可以直接用any代替么?
什么情况下in和any可以互相代替?
答:
关键字in不可以直接用any代替。
但“=any”的等价于in
(2)嵌套查询中的内查询为外查询返回的内容是什么?
是表达式?
视图?
还是物理数据集合?
含in,any的嵌套查询返回的结果常是一个集合,而还exists谓词的子查询不返回任何数据,只产生逻辑值“true”或“false”。
五、实验总结:
心得体会,建议等。
本次实验,使我对书本上的知识有了进一步的了解,尤其是分组查询那部分。
只有自己亲自去做去实践,才能发现问题,自己解决问题,也只有这样才能对理论的知识掌握更牢固,理解更透彻。