数据库系统概论(第四版)课后习题答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第1章绪论习题参考答案
13.某工厂生产若干产品,每种产品由不同的零件组成,有的零件可用在不同的产品上。这些零件由不同的原材料制成,不同零件所用的材料可以相同。这些零件按所属的不同产品分别放在仓库中,原材料按照类别放在若干仓库中。请用E-R图画山此工厂产品,零件,材
第2章关系数据库习题参考答案
5.设有一个SPJ数据库,包括S,P,J,SPJ四个关系模式:
1)求供应工程J1零件的供应商号码SNO:
πSno(σJno=‘J1’(SPJ))
2)求供应工程J1零件P1的供应商号码SNO:
πSno(σJno=‘J1’∧Pno=‘P1‘(SPJ))
3)求供应工程J1零件为红色的供应商号码SNO:
πSno(σPno=‘P1‘(σCOLOR=’红‘(P)∞SPJ))
4)求没有使用天津供应商生产的红色零件的工程号JNO:
πJno(SPJ)- πJNO(σcity=‘天津’∧Color=‘红‘(S∞SPJ∞P)
5)求至少用了供应商S1所供应的全部零件的工程号JNO:
πJno,Pno(SPJ)÷πPno(σSno=‘S1‘(SPJ))
第3章 SQL语言习题参考答案
用SQL语句建立第二章习题5中的四个表。
S(SNO,SNAME,STATUS,CITY);
P(PNO,PNAME,COLOR,WEIGHT);
J(JNO,JNAME,CITY);
SPJ(SNO,PNO,JNO,QTY);
供应商表S由供应商代码(SNO)、供应商姓名(SNAME)、供应商状态(STATUS)、供应商所在城市(CITY)组成:
CREATE TABLE S
( Sno CHAR(2) UNIQUE,
Sname CHAR(6) ,
Status CHAR(2),
City CHAR(4)
);
零件表P由零件代码(PNO)、零件名(PNAME)、颜色(COLOR)、重量(WEIGHT)组成:
CREATE TABLE P
( Pno CHAR(2) UNIQUE,
Pname CHAR(6),
COLOR CHAR(2),
WEIGHT INT
);
工程项目表J由工程项目代码(JNO)、工程项目名(JNAME)、所在城市(CITY)组成:CREATE TABLE J
( JNO CHAR(2) UNlQUE,
JNAME CHAR(8),
CITY CHAR(4)
);
供应情况表SPJ由供应商代码(SNO)、零件代码(PNO)、工程项目代码(JNO)、供应数量(QTY)组成:
CREATE TABLE SPJ
( SNO CHAR(2),PNO CHAR(2),JNO CHAR(2), QTY INT);
4.针对上题中建立的四个表试用SQL语言完成第二章习题5中的查询:
求供应工程J1零件的供应商号码SNO:
SELECT SNO FROM SPJ
WHERE JNO=’J1’
求供应工程J1零件P1的供应商号码SNO:
SELECT SNO FROM SPJ
WHERE JNO='J1' AND PNO='P1'
求供应工程J1零件为红色的供应商号码SNO:
SELECT SNO FROM SPJ,P
WHERE JNO='J1' AND SPJ.PNO=P.PNO AND COLOR='红'
求没有使用天津供应商生产的红色零件的工程号JNO:
SELECT JNO FROM SPJ
WHERE JNO NOT IN (
SELECT JNO FROM SPJ,P,S
WHERE S.CITY='天津' AND COLOR='红' AND S.SNO=SPJ.SNO
AND P.PNO=SPJ.PNO);
或者:
SELECT JNO FROM J
WHERE NOT EXITS
( SELECT * FROM SPJ,S,P
WHERE S.SNO=SPJ.SNO AND P.PNO=SPJ.PNO);
求至少用了供应商S1所供应的全部零件的工程号JNO。
解法一:将查询分为两步
A、查询S1供应商供应的零件号
SELECT DIST PNO FROM SPJ WHERE SNO='S1'结果是(P1,P2)
B、查询哪一个工程既使用P1零件又使用P2零件。
SELECT JNO FROM SPJ WHERE PNO='P1'
AND JNO IN (SELECT JNO FROM SPJ WHERE PNO='P2')
解法二:
SELECT DISTINCT JNO FROM SPJ SPJZ
WHERE NOT EXISTS (
SELECT * FROM SPJ SPJX WHERE SPJX.SNO=’S1’ AND NOT EXISTS(
SELECT * FROM SPJ SPJY
WHERE SPJY.PNO=SPJX.PNO AND SPJY.JNO=SPJZ.JNO AND SPJY.SNO=’S1’)); 5.针对习题3中的四个表试用SQL语言完成以下各项操作:
(1)找出所有供应商的姓名和所在城市。
SELECT SNAME,CITY FROM S
(2)找出所有零件的名称、颜色、重量。
SELECT PNAME,COLOR,WEIGHT FROM P
(3)找出使用供应商S1所供应零件的工程号码。
SELECT DIST JNO FROM SPJ WHERE SNO='S1'
(4)找出工程项目J2使用的各种零件的名称及其数量。
SELECT PNAME,QTY FROM SPJ,P
WHERE P.PNO=SPJ.PNO AND SPJ.JNO='J2'
(5)找出上海厂商供应的所有零件号码。
SELECT PNO FROM SPJ,S WHERE S.SNO=SPJ.SNO AND CITY='上海'
(6)找出使用上海产的零件的工程名称。
SELECT JNAME FROM SPJ,S,J
WHERE S.SNO=SPJ.SNO AND S.CITY='上海' AND J.JNO=SPJ.JNO
(7)找出没有使用天津产的零件的工程号码。
注意: SELECT DISP JNO FROM SPJ
WHERE JNO NOT IN (
SELECT DIST 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的记录,并从供应情况关系中删除相应