《数据库原理与应用》第三章习题(二)

第三章习题(二)

            • 1.解释相关子查询和不相关子查询。
            • 2.写出ANY和ALL谓词与聚集函数或IN谓词可能存在的等价转换关系。
            • 3.用SQL语句建立第2章习题6中的4个表,对建立的4个表试用SQL完成以下各项操作:
          • 建立表格
            • - 找出所有供应商的姓名和所在城市;
            • - 找出所有零件的名称、颜色、重量;
            • - 找出使用供应商S1所供应零件的名称及其数量;
            • - 找出工程项目J2使用的各种零件的名称及其数量;
            • - 找出上海厂商供应的所有零件号码 ;
            • - 找出使用上海产的零件的工程名称;

1.解释相关子查询和不相关子查询。

非相关子查询的执行不依赖与外部的查询。
执行过程:
(1)执行子查询,其结果不被显示,而是传递给外部查询,作为外部查询的条件使用。
(2)执行外部查询,并显示整个结果。  
非相关子查询一般可以分为:返回单值的子查询和返回一个列表的子查询。
相关子查询的执行依赖于外部查询。子查询的WHERE子句或者HAVING中引用了外部查询的表。
执行过程:
(1)从外层查询中取出一个元组,将元组相关列的值传给内层查询。
(2)执行内层查询,得到子查询操作的值。
(3)外查询根据子查询返回的结果或结果集得到满足条件的行。
(4)然后外层查询取出下一个元组重复做步骤1-3,直到外层的元组全部处理完毕。

2.写出ANY和ALL谓词与聚集函数或IN谓词可能存在的等价转换关系。

在这里插入图片描述

3.用SQL语句建立第2章习题6中的4个表,对建立的4个表试用SQL完成以下各项操作:
  • 找出所有供应商的姓名和所在城市;
  • 找出所有零件的名称、颜色、重量;
  • 找出使用供应商S1所供应零件的名称及其数量;
  • 找出工程项目J2使用的各种零件的名称及其数量;
  • 找出上海厂商供应的所有零件号码 ;
  • 找出使用上海产的零件的工程名称;
建立表格
CREATE TABLE S
(	
	SNO CHAR(3),
	SNAME CHAR(10), 
	STATUS CHAR(2), 
	CITY CHAR(10)​​​);;

CREATE TABLE P
(
	PNO CHAR(3), 
	PNAME CHAR(10), 
	COLOR CHAR(4), 
	WEIGHT INT​​​
);

CREATE TABLE J
(
	JNO CHAR(3), 
	JNAME CHAR(10),
	CITY CHAR(10)​​
);

CREATE TABLE SPJ
(
	SNO CHAR(3), 
	PNO CHAR(3),
	JNO CHAR(3), 
	QTY INT​​​
);
- 找出所有供应商的姓名和所在城市;
SELECT SNAME,CITY
FROM S
- 找出所有零件的名称、颜色、重量;
SELECT PNAME,COLOR,WEIGHT
FROM P
- 找出使用供应商S1所供应零件的名称及其数量;
SELECT PNAME,QTY
FROM P,SPJ
WHERE SNO = 'S1'
- 找出工程项目J2使用的各种零件的名称及其数量;
SELECT PNAME,QTY
FROM P,QTY
WHERE P.PNO = QTY.PNO AND JNO = 'J2'
- 找出上海厂商供应的所有零件号码 ;
SELECT PNO
FROM P,S
WHERE S.SNO = SPJ.SNO AND CITY = '上海'
- 找出使用上海产的零件的工程名称;
SELECT JNAME
FROM J,SPJ
WHERE SNO IN
	(
	SELECT S.SNO
	FROM S,SPJ
	WHERE S.SNO = SPJ.SNO AND CITY = '上海'
	)

你可能感兴趣的:(Database)