《数据库系统概论》第三章课后习题 (4个表+三建工程项目)

目录

5. 针对习题4中的4个表试用SQL完成以下各项操作:

 9. 为三建工程项目建立一个供应情况的视图,包括供应商代码SNO, 零件代码PNO, 供应数量QTY,针对该视图完成下列查询: 

5. 针对习题4中的4个表试用SQL完成以下各项操作:

(1)找出所有供应商的姓名和所在城市

SELECT SNAME,CITY
FROM S;

《数据库系统概论》第三章课后习题 (4个表+三建工程项目)_第1张图片  

 (2)找出所有零件的名称、颜色、重量

SELECT PNAME,COLOR,WEIGHT
FROM P;

《数据库系统概论》第三章课后习题 (4个表+三建工程项目)_第2张图片  

 (3)找出使用供应商S1所供应零件的工程号码

本题思考:关于distinct 

① 没有distinct:  查询语句返回所有在SPJ表中SNO等于’S1’的行的JNO值,可能会有重复的值。

②使用了DISTINCT关键字,它会返回所有不重复的JNO值,即使在SPJ表中有多个行的SNO等于’S1’,也只会返回一次相应的JNO值。

因为是S1,对应的JNO为J1,J2,J3,J4,没有重复的,所以可有可无

SELECT JNO
FROM SPJ
WHERE SNO = 'S1';

《数据库系统概论》第三章课后习题 (4个表+三建工程项目)_第3张图片  

(4)找出工程项目J2使用的各种零件的名称及其数量

SELECT P.PNAME,SPJ.QTY
FROM SPJ,P
WHERE SPJ.JNO = 'J2'  AND P.PNO = SPJ.PNO

 《数据库系统概论》第三章课后习题 (4个表+三建工程项目)_第4张图片

 (5)找出上海厂商供应的所有零件号码

SELECT DISTINCT PNO
FROM SPJ,S
WHERE S.CITY = '上海' AND  S.SNO = SPJ.SNO

  《数据库系统概论》第三章课后习题 (4个表+三建工程项目)_第5张图片

(6)找出使用上海产的零件的工程名称

使用三个表,连接。注意两个表city不是同一个

SELECT JNAME
FROM S,J,SPJ
WHERE S.SNO = SPJ.SNO AND J.JNO  = SPJ.JNO AND S.CITY = '上海';

《数据库系统概论》第三章课后习题 (4个表+三建工程项目)_第6张图片  

(7)找出没有使用天津产的零件的工程号码

SELECT JNO
FROM SPJ
WHERE JNO NOT IN(SELECT DISTINCT JNO FROM SPJ,S WHERE S.SNO=SPJ.SNO AND S.CITY='天津'

《数据库系统概论》第三章课后习题 (4个表+三建工程项目)_第7张图片 

(8)把全部红色零件的颜色改为蓝色

UPDATE P
SET COLOR = '蓝'
WHERE COLOR = '红';

《数据库系统概论》第三章课后习题 (4个表+三建工程项目)_第8张图片 

(9)由S5供给J4的零件P6改为由S3供应,请作必要的修改

UPDATE SPJ
SET SNO='S3' 
WHERE SNO='S5' AND JNO='J4' AND PNO='P6';

《数据库系统概论》第三章课后习题 (4个表+三建工程项目)_第9张图片 

(10)从供应商关系中删除S2的记录,并从供应情况关系中删除相应的记录

DELETE FROM SPJ
WHERE SNO='S2' ;
DELETE FROM S
WHERE SNO='S2' ;

《数据库系统概论》第三章课后习题 (4个表+三建工程项目)_第10张图片 

(11)请将  (S2,J6,P4,200)  插入供应情况关系

INSERT INTO SPJ
VALUES('S2','J6','P4',200);

 9. 为三建工程项目建立一个供应情况的视图,包括供应商代码SNO, 零件代码PNO, 供应数量QTY,针对该视图完成下列查询: 2100300805 毛姝垚

CREATE VIEW GONG_YING_SHANG
AS 
SELECT SNO,PNO,QTY
FROM SPJ,J
WHERE J.JNO=SPJ.JNO AND JNAME='三建';

(1)找出三建项目使用的各种零件代码PNO和其数量。

SELECT DISTINCT PNO,QTY
FROM GONG_YING_SHANG;

(2)找出供应商S1的供应情况。

SELECT *
FROM GONG_YING_SHANG
WHERE SNO='S1';

你可能感兴趣的:(数据库系统概论,数据库)