实验3-高级查询

更新时间:2024-05-17 15:05:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

实验三 高级查询

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) 不带分组过滤条件的分组统计查询。 统计每个顾客订购金额。

(2) 带分组过滤条件的分组统计查询。

查询平均每个订单金额超过1000元的顾客编号及其姓名。

(3) IN嵌套查询。

查询订购了“精益”制造的“螺母”的顾客。

(4) 单层EXISTS嵌套查询。

查询没有购买过“精益”制造的“螺母”的顾客。

开始的时候没有加WHRER语句,结果CUSTKEY中啥都没有

(5) 双层EXISTS嵌套查询。

查询至少购买过顾客“路飞”购买过的全部零件的顾客姓名。

(6) 集合查询(交、并、差各设计一个)。

查询顾客“李明”和“乔治”订购的全部零件的信息。

顾客“李明”订购过,而“乔治”没订购过的零件的信息。

(7) FROM 子句中的嵌套查询

查询平均每个订单金额超过1000元的顾客中属于中国的顾客信息。

Select C.* From customer C

Where C.custkey in (select O.custkey From orders O,customer C2 Where O.custkey=C2.custkey Group by C2.custkey,O.custkey Having AVG (O.totalprice)>1000)

And C.nationkey=(select N.nationkey From nation N Where N.name='中国')

5 总结与体会

5.1 实验中出现的问题及其解决方案

1. 聚集函数出现在查询条件中的where语句中时,不可以单纯的写AVG(***),必须写成 Select AVG(***) From *** Where ***

的形式,否则就只能写在having 语句中,并且在having语句前加上group by 语句 2.在使用count函数统计数量时,加上一个DISTINCT语句,以避免重复计算。 3.在使用exists 语句时,要注意各个表之间的关系。

5.2 总结

嵌套查询,包括IN查询、EXISTS查询属于比较高级的查询方式,但是它们可以实现复杂的查询,配合查询连接,多条件查询等,可以实现很多种查询,从而减少了查询步骤,使数据库查询更加简便。

5.3 体会

高级查询使查询步骤变得简短,但是增加了写语句的难度。要想使用高级查询,需要充分了解各种语句的使用方法、范围以及注意事项。

在使用双重not exists 语句时,要特别注意各个表之间的关系,一般是第一个表与第三个表之间有联系,第二个表与第三个表之间还有联系。

在使用聚集函数是也要注意格式,配合having 语句使用很方便。

本文来源:https://www.bwwdw.com/article/1aq7.html

Top