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

文章展示了如何使用SQL进行数据库操作,包括查询供应商信息、零件详情、工程使用零件等,并创建了一个关于三建工程项目的供应情况视图。此外,还涉及了视图查询、数据更新、插入和删除操作。
摘要由CSDN通过智能技术生成

目录

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

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

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

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

SELECT SNAME,CITY
FROM S;

  

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

SELECT PNAME,COLOR,WEIGHT
FROM P;

  

 (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)找出工程项目J2使用的各种零件的名称及其数量

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

 

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

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

  

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

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

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

  

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

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

 

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

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

 

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

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

 

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

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

 

(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';

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值