数据库实验报告高级查询

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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

相关文档
最新文档