数据库实验报告高级查询
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验三高级查询
1实验目的
(1)掌握SQL的高级查询的使用方法,如分组统计、嵌套查询、集合查询等等。
2实验内容
2.1 掌握SQL高级查询使用方法
(1)分组统计。
(2)嵌套查询,包括IN查询、EXISTS查询。
(3)集合查询。
3实验要求
(1)深入复习教材第三章SQL有关高级查询语句。
(2)根据书上的例子,针对TPCH数据库模式设计分组统计查询、嵌套查询(IN、EXISTS)语句和集合查询语句,每种类型的基本查询至少要设计一个查询,描述清楚查询要求,运行你所设计的查询语句,并截图相应的实验结果,每幅截图并要有较为详细的描述。也可以按照附2所列示例查询做实验。
(3)实验步骤和实验总结中要详细描述实验过程中出现的问题、原因和解决方法。
4实验步骤
4.1 掌握SQL高级查询使用方法
1 不带分组过滤条件的分组统计查询。
统计每个顾客订购金额。
Select sum(totalprice)
From orders O,customer C
Where O.custkey=C.custkey
Group by O.custkey
2 带分组过滤条件的分组统计查询。
查询平均每个订单金额超过1000元的顾客编号及其姓名。
Select C.custkey,
From orders O,customer C
Where O.custkey=C.custkey
Group by C.custkey,
Having A VG (O.totalprice)>1000
3IN嵌套查询。
查询订购了“海大”制造的“船舶模拟驾驶舱”的顾客。
Select O.custkey
From orders O
Where O.orderkey in
(select L.orderkey
From lineitem L,
Where L.partkey in
(select P.partkey
From part P
Where =’ 船舶模拟驾驶舱’and
p.mfgr=’ 海大’))
4单层EXISTS嵌套查询。
查询没有购买过“海大”制造的“船舶模拟驾驶舱”的顾客。
Select O.custkey
From orders O
Where not exists
(select *
From lineitem L
Where L.orderkey=O.orderkey and
L.partkey in
(select P.partkey
From part P
Where =’ 船舶模拟驾驶舱’and
p.mfgr=’ 海大’))
5双层EXISTS嵌套查询。
查询至少购买过顾客“张三”购买过的全部零件的顾客姓名。
Select distinct
From customer C1,order O1,lineitem L1,part P1
Where C1.custkey=O1.custkey and O1.orderkey=L1.orderkey=P1.partkey and Not exists
(select *
Where C2.custkey=O2.custkey and O2.orderkey=L2.orderkey=P2.partkey and =’ 张三’and
Not exists
(select *
From customer C3,order O3,lineitem L3,part P3
Where C3.custkey=O3.custkey and O3.orderkey=L3.orderkey=P3.partkey and P2.partkey=P3.partkey
And C3,name=)
)
6集合查询(交、并、差各设计一个)。
查询顾客“张三”和“李四”都订购过的全部零件的信息。
Select *
From part P
Where P.partkey in
(select L.partkey
From customer C,lineitem L,orders O
Where C,name=’ 张三’and
c.custkey=O.custkey and
O.orderkey=L.orderkey)
INTERSECT
Select *
From part P1
Where P1.partkey in
(select L.partkey
From customer C,lineitem L,orders O
Where C,name=’李四’and
c.custkey=O.custkey and
O.orderkey=L.orderkey)
查询顾客“张三”和“李四”订购的全部零件的信息。
Select *
From part P
Where P.partkey in
(select L.partkey
From customer C,lineitem L,orders O
Where C,name=’ 张三’and
c.custkey=O.custkey and
O.orderkey=L.orderkey)
Uniom
Select *
From part P1
Where P1.partkey in
(select L.partkey
From customer C,lineitem L,orders O
Where C,name=’李四’and
c.custkey=O.custkey and
O.orderkey=L.orderkey)
顾客“张三”订购过,而“李四”没订购过的零件的信息。
Select *
From part P
Where P.partkey in
(select L.partkey
From customer C,lineitem L,orders O