数据库实验二 数据查询

该博客详细介绍了多个SQL查询实例,包括单表查询、分组统计、连接查询、嵌套查询和集合查询。通过tpch数据库或test数据库,展示了查询地区信息、供应商详情、特定条件的订单、顾客订购总金额、平均金额超过特定值的顾客、同国供应商、价格比较、特定顾客订单详情、特定制造商顾客、共同订购零件和唯一订购零件等操作,进一步巩固了SQL语言的应用能力。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.实验目的

理解 SQL 程序设计基本规范,熟练运用 SQL 语言实现数据查询,包括单表查询、分组统计查询和连接查询、嵌套查询合和集合查询。

2.实验内容和要求

针对 tpch 数据库或自建数据库 test 设计各种单表查询、分组统计查询和连接查询、嵌套查询合和集合查询,理解和掌握 SQL 查询语句各个子句的特点和作用,按照 SQL 程序设计规范写出具体的 SQL 查询语句,并调试通过。

3.实验步骤

(1)查询各个地区的编号和名称。

源代码:

SELECT regionkey,name
		FROM region;

结果截图:

(2)查询各个供应商的编号、名称、地址、电话和供应商所在国家名称。

源代码:

SELECT 
			suppkey,
			supplier.name,
			address,phone,
			nation.name
		FROM 
			nation,
			supplier
		WHERE
			supplier.nationkey = nation.nationkey;

结果截图:

 (3)查询 2021 年 9 月份每个订单金额超过 10000 元的订单编号、顾客姓名、顾客所在国家名称、和订单日期。

源代码:

SELECT 
			orderkey,
			customer.name,
			nation.name,
			orderdate
		FROM
			nation,
			customer,
			orders
		WHERE
			customer.nationkey = nation.nationkey
		AND customer.custkey = orders.custkey
		AND YEAR(orderdate) = '2021'
		AND MONTH(orderdate) = '9'
		AND totalprice > 10000;

查询过程中出现了无结果的问题,经检验是导入到表中的数据日期乱码均为空,处理数据后重新导入从而解决了无结果的问题。

查询结果:

(4)统计每个顾客在 2020 年的订购总金额,显示顾客编号、顾客姓名、订购总金额。

源代码:

SELECT 
			customer.custkey,
			name,SUM(totalprice) AS sum_totalprice
		FROM 
			customer,
			orders
		WHERE
			customer.custkey = orders.custkey
		AND YEAR(orderdate) = '2020'
		GROUP BY customer.custkey
		ORDER BY customer.custkey;

查询结果:

(5)查询订单平均金额超过 5 万元的顾客编号、姓名、所在国家名称和订单平均金额。

源代码:

SELECT
			customer.custkey,
			customer.name,
			nation.name,
			AVG(totalprice)
		FROM
			customer,
			orders,
			nation
		WHERE
			customer.custkey = orders.custkey
		AND customer.nationkey = nation.nationkey
		GROUP BY customer.custkey
		HAVING AVG(totalprice)>50000
		ORDER BY customer.custkey;

查询结果:

(6)查询与“金石印刷有限公司”在同一个国家的供应商编号、名称和地址信息。

源代码:

SELECT 
			sup.suppkey,
			sup.name,
			sup.address
		FROM
			supplier sup,
			supplier supp
		WHERE
			sup.nationkey = supp.nationkey
		AND supp.name = '金石印刷有限公司';

使用两个别名,将一个supplier表当做两个表使用

查询结果:

(7)查询供应价格小于零售价格的零件编号、零件名称、制造厂、品牌、零售价格、供应商名称和供应价格。

源代码:

SELECT
			part.partkey,
			part.name,
			mfgr,
			brand,
			retailprice,
			supplier.name,
			supplycost
		FROM 
			supplier,
			part,
			partsupp
		WHERE
			partsupp.supplycost < part.retailprice
		AND partsupp.partkey = part.partkey
		AND partsupp.suppkey = supplier.suppkey;

查询结果:

(8)查询顾客“曹玉书”订购的订单编号、订单金额及其订购的零件编号、数量和订单明细价格。

源代码:

SELECT
			orders.orderkey,
			totalprice,
			lineitem.partkey,
			quantity,
			extendedprice
		FROM
			lineitem,
			orders,
			customer
		WHERE
			customer. name = '曹玉书'
		AND lineitem.orderkey = orders.orderkey
		AND customer.custkey = orders.custkey;

查询结果:

(9)查询订购了“南昌矿山机械厂”制造的“缝盘机”的顾客编号、姓名。

源代码:

SELECT
			customer.custkey,
			customer.name,
		FROM
			lineitem,
			orders,
			customer,
			part
		WHERE
			part.mfgr = '南昌矿山机械厂'
		AND part.name = '缝盘机'
		AND part.partkey = lineitem.partkey
		AND lineitem.orderkey = orders.orderkey
		AND customer.custkey = orders.custkey;

 查询结果:

(10)查询订单平均金额超过 1 万元的顾客中的中国籍顾客的顾客编号、姓名。

 源代码:

SELECT
			customer.custkey,
			customer.name
		FROM
			nation,
			orders,
			customer
		WHERE
			customer.nationkey = nation.nationkey
		AND nation.name = '中国'
		AND customer.custkey = orders.custkey
		GROUP BY customer.custkey
		HAVING AVG(totalprice) > 10000
		ORDER BY customer.custkey;

 查询结果:

(11)查询顾客“刘玉龙”和“钱岚”都订购过的全部零件的信息。

源代码:

SELECT
	*
FROM
	part
WHERE
	part.partkey IN
(
	SELECT lineitem.partkey
	FROM
		lineitem
	WHERE
		lineitem.orderkey IN
	(
		SELECT orders.orderkey
		FROM
			orders
		WHERE
			orders.custkey IN
		(
			SELECT customer.custkey
			FROM
				customer
			WHERE
				customer.name = '刘玉龙'
		)
	)
)
AND
	part.partkey IN
(
	SELECT lineitem.partkey
	FROM
		lineitem
	WHERE
		lineitem.orderkey IN
	(
		SELECT orders.orderkey
		FROM
			orders
		WHERE
			orders.custkey IN
		(
			SELECT customer.custkey
			FROM
				customer
			WHERE
				customer.name = '钱岚'
		)
	)
);

 查询结果:

(12)查询顾客“刘玉龙”或“钱岚”订购的全部零件的信息。

源代码:

SELECT
	*
FROM
	part
WHERE
	part.partkey IN
(
	SELECT lineitem.partkey
	FROM
		lineitem
	WHERE
		lineitem.orderkey IN
	(
		SELECT orders.orderkey
		FROM
			orders
		WHERE
			orders.custkey IN
		(
			SELECT customer.custkey
			FROM
				customer
			WHERE
				customer.name = '刘玉龙'
				OR customer.name = '钱岚'
		)
	)
);

 查询结果;

(13)查询顾客“刘玉龙”订购过而“钱岚”没订购过的零件的信息。 

源代码:

SELECT
	*
FROM
	part
WHERE
	part.partkey IN
(
	SELECT lineitem.partkey
	FROM
		lineitem
	WHERE
		lineitem.orderkey IN
	(
		SELECT orders.orderkey
		FROM
			orders
		WHERE
			orders.custkey IN
		(
			SELECT customer.custkey
			FROM
				customer
			WHERE
				customer.name = '刘玉龙'
				AND customer.name != '钱岚'
		)
	)
);

查询结果:

实验 基本数据查询 一、实验目的 1.熟悉大型数据库实验环境,以MS SQL SERVER为例。 2.掌握MS SQL SERVER的查询分析器的用法。 3.能够完成对单表的查询操作。 4.能够完成对多表的联合查询操作。 5.能够完成带据聚合函的查询。 实验内容 (1)以实验一中创建的数据库abc作为查询对象,完成如下查询要求: 1.查询200112月31日之后的销售情况,要求列出销售人员姓名、销售的产品名以及销售日期。 2.查询销售电冰箱的销售人员的最大年龄。 3.统计每个产品的销售总量,要求只列出销售量前3名的产品号和销售总量。 4.查询销售人员的销售情况,包括有销售记录的销售人员和没有销售记录的销售人员,要求列出销售人员姓名、销售的产品号、销售量和销售日期。 5.列出2000年11日以后销售总量第一的产品的名称和生产厂家。 (2)以MS SQL SERVER的例子数据库pubs为查询对象,完成如下查询: 6.Pubs数据库:没有写过business或者popular_comp类型书籍的作者编号和姓名 7.Pubs数据库:查询出版物价格在20元以上的作者编号和姓名 8.Pub数据库:版税大于80%且state=ks的作者信息 9.Pub数据库:查询作者量小于5的州 10.Pub数据库:查询价格最高的书的作者,和他写的所有书的名称 11.Pub数据库:查询销量较少的10本书的作者编写的所有书的书名 12.Pubs数据库:查询写了价格PRICE高于平均价的书,而且所在的州STATE=CA的作者名称,图书名称,价格。 注意:如果数据库服务器中的pubs例子数据库被破坏,请用SQL Server 2000 Sample Databases.rar中的instpubs.sql还原
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

努力敲代码呀~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值