数据库原理难题,设有一个SPJ数据库,包括S,P,J,SPJ四个关系模式:注意分别用关系代数和SQL语句哦
设有一个SPJ数据库,包括S,P,J,SPJ四个关系模式:S(SNO,SNAME,STATUS,CITY);P(PNO,PNAME,COLOR,WEIGHT);J(JNO...
设有一个SPJ数据库,包括S,P,J,SPJ四个关系模式:
S(SNO,SNAME,STATUS,CITY);
P(PNO,PNAME,COLOR,WEIGHT);
J(JNO,JNANE,CITY);
SPJ(SNO,PNO,JNO,QTY)。
其中:供应商表S由供应商代码(SNO)、供应商姓名(SNAME)、供应商状态(STATUS)、供应商所在城市(CITY)组成;零件表P由零件代码(PNO)、零件名(PNAME)、颜色(COLOR)、重量(WEIGHT)组成;工程项目表J 由工程项目代码(JNO)、工程项目名(JNAME)、工程项目所在城市(CITY)组成;供应情况表SPJ由供应商代码(SNO)、零件代码(PNO)、工程项目代码(JNO)、供应数量组成(QTY)组成,表示某供应商供应某种零件给某工程项目的数量为QTY。
试分别用关系代数和sql语句写出如下查询:
1)求供应工程J1 零件的供应商号码SNO。
2)求供应工程J1 零件P1的供应商号码SNO。
3)求供应工程J1 零件为红色的供应商号码SNO。
4)求没有使用天津供应商生产的红色零件的工程号。
5)求至少用了供应商S1所供应的全部零件的工程号。 展开
S(SNO,SNAME,STATUS,CITY);
P(PNO,PNAME,COLOR,WEIGHT);
J(JNO,JNANE,CITY);
SPJ(SNO,PNO,JNO,QTY)。
其中:供应商表S由供应商代码(SNO)、供应商姓名(SNAME)、供应商状态(STATUS)、供应商所在城市(CITY)组成;零件表P由零件代码(PNO)、零件名(PNAME)、颜色(COLOR)、重量(WEIGHT)组成;工程项目表J 由工程项目代码(JNO)、工程项目名(JNAME)、工程项目所在城市(CITY)组成;供应情况表SPJ由供应商代码(SNO)、零件代码(PNO)、工程项目代码(JNO)、供应数量组成(QTY)组成,表示某供应商供应某种零件给某工程项目的数量为QTY。
试分别用关系代数和sql语句写出如下查询:
1)求供应工程J1 零件的供应商号码SNO。
2)求供应工程J1 零件P1的供应商号码SNO。
3)求供应工程J1 零件为红色的供应商号码SNO。
4)求没有使用天津供应商生产的红色零件的工程号。
5)求至少用了供应商S1所供应的全部零件的工程号。 展开
4个回答
展开全部
关系代数:
1)求供应工程J1零件的供应商号码SNO:
πSno(σSno=‘J1’(SPJ))
2)求供应工程J1零件P1的供应商号码SNO:
πSno(σSno=‘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))
sql语句:
( l )求供应工程 Jl 零件的供应商号码 SNO ;
SELECT SNO FROM SPJ WHERE JNO=’J1’
( 2 )求供应工程 Jl 零件 Pl 的供应商号码 SNO ;
SELECT SNO FROM SPJ WHERE JNO='J1' AND PNO='P1'
( 3 )求供应工程 Jl 零件为红色的供应商号码 SNO ;
SELECT SNO FROM SPJ,P WHEREJNO='J1' AND SPJ.PNO=P.PNO AND COLOR='红'
( 4 )求没有使用天津供应商生产的红色零件的工程号 JNO ;
SELECT JNO FROM SPJ WHERE JNO NOT IN(SELE JNO FROM SPJ,P,S WHERE S.CITY='天津' AND COLOR='红' ANDS.SNO=SPJ.SNO AND P.PNO=SPJ.PNO)。
( 5 )求至少用了供应商 Sl 所供应的全部零件的工程号 JNO ;
由于VFP不允许子查询嵌套太深,将查询分为两步
A、查询S1供应商供应的零件号
SELECT PNO FROM SPJ WHERE SNO='S1'结果是(P1,P2)
B、查询哪一个工程既使用P1零件又使用P2零件。
SELECT FROM SPJ WHEREPNO='P1'
AND JNO IN (SELECT JNO FROM SPJ WHERE PNO='P2')
1)求供应工程J1零件的供应商号码SNO:
πSno(σSno=‘J1’(SPJ))
2)求供应工程J1零件P1的供应商号码SNO:
πSno(σSno=‘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))
sql语句:
( l )求供应工程 Jl 零件的供应商号码 SNO ;
SELECT SNO FROM SPJ WHERE JNO=’J1’
( 2 )求供应工程 Jl 零件 Pl 的供应商号码 SNO ;
SELECT SNO FROM SPJ WHERE JNO='J1' AND PNO='P1'
( 3 )求供应工程 Jl 零件为红色的供应商号码 SNO ;
SELECT SNO FROM SPJ,P WHEREJNO='J1' AND SPJ.PNO=P.PNO AND COLOR='红'
( 4 )求没有使用天津供应商生产的红色零件的工程号 JNO ;
SELECT JNO FROM SPJ WHERE JNO NOT IN(SELE JNO FROM SPJ,P,S WHERE S.CITY='天津' AND COLOR='红' ANDS.SNO=SPJ.SNO AND P.PNO=SPJ.PNO)。
( 5 )求至少用了供应商 Sl 所供应的全部零件的工程号 JNO ;
由于VFP不允许子查询嵌套太深,将查询分为两步
A、查询S1供应商供应的零件号
SELECT PNO FROM SPJ WHERE SNO='S1'结果是(P1,P2)
B、查询哪一个工程既使用P1零件又使用P2零件。
SELECT FROM SPJ WHEREPNO='P1'
AND JNO IN (SELECT JNO FROM SPJ WHERE PNO='P2')
推荐于2017-09-10 · 知道合伙人互联网行家
关注
展开全部
1、select SNO from SPJ, J where J.JNO=SPJ.JNO and JNAME='J1'
2、select SNO from SPJ, J, P where J.JNO=SPJ.JNO and P.PNO=SPJ.JNO and JNAME='J1' and PNAME='P1'
3、select SNO from SPJ, J, P where J.JNO=SPJ.JNO and P.PNO=SPJ.JNO and JNAME='J1' and COLOR='红色'
4、select JNO from SPJ where SNO IN (select SNO from S where city<>'天津') and PNO in (select PNO from P where COLOR='红色' )
5、
2、select SNO from SPJ, J, P where J.JNO=SPJ.JNO and P.PNO=SPJ.JNO and JNAME='J1' and PNAME='P1'
3、select SNO from SPJ, J, P where J.JNO=SPJ.JNO and P.PNO=SPJ.JNO and JNAME='J1' and COLOR='红色'
4、select JNO from SPJ where SNO IN (select SNO from S where city<>'天津') and PNO in (select PNO from P where COLOR='红色' )
5、
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
关系代数:
1)求供应bai工程J1零件的供应商du号码SNO:zhi
πSno(σSno=‘J1’(SPJ))
2)求供应工程daoJ1零件P1的供应商号码SNO:
πSno(σSno=‘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))
1)求供应bai工程J1零件的供应商du号码SNO:zhi
πSno(σSno=‘J1’(SPJ))
2)求供应工程daoJ1零件P1的供应商号码SNO:
πSno(σSno=‘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))
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
关系代数:
1)求供应工程J1零件的供应商号码SNO:
πSno(σSno=‘J1’(SPJ))
2)求供应工程J1零件P1的供应商号码SNO:
πSno(σSno=‘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))
sql语句:
( l )求供应工程 Jl 零件的供应商号码 SNO ;
SELECT SNO FROM SPJ WHERE JNO=’J1’
( 2 )求供应工程 Jl 零件 Pl 的供应商号码 SNO ;
SELECT SNO FROM SPJ WHERE JNO='J1' AND PNO='P1'
( 3 )求供应工程 Jl 零件为红色的供应商号码 SNO ;
SELECT SNO FROM SPJ,P WHEREJNO='J1' AND SPJ.PNO=P.PNO AND COLOR='红'
( 4 )求没有使用天津供应商生产的红色零件的工程号 JNO ;
SELECT JNO FROM SPJ WHERE JNO NOT IN(SELE JNO FROM SPJ,P,S WHERE S.CITY='天津' AND COLOR='红' ANDS.SNO=SPJ.SNO AND P.PNO=SPJ.PNO)。
( 5 )求至少用了供应商 Sl 所供应的全部零件的工程号 JNO ;
由于VFP不允许子查询嵌套太深,将查询分为两步
A、查询S1供应商供应的零件号
SELECT PNO FROM SPJ WHERE SNO='S1'结果是(P1,P2)
B、查询哪一个工程既使用P1零件又使用P2零件。
SELECT FROM SPJ WHEREPNO='P1'
AND JNO IN (SELECT JNO FROM SPJ WHERE PNO='P2')
1)求供应工程J1零件的供应商号码SNO:
πSno(σSno=‘J1’(SPJ))
2)求供应工程J1零件P1的供应商号码SNO:
πSno(σSno=‘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))
sql语句:
( l )求供应工程 Jl 零件的供应商号码 SNO ;
SELECT SNO FROM SPJ WHERE JNO=’J1’
( 2 )求供应工程 Jl 零件 Pl 的供应商号码 SNO ;
SELECT SNO FROM SPJ WHERE JNO='J1' AND PNO='P1'
( 3 )求供应工程 Jl 零件为红色的供应商号码 SNO ;
SELECT SNO FROM SPJ,P WHEREJNO='J1' AND SPJ.PNO=P.PNO AND COLOR='红'
( 4 )求没有使用天津供应商生产的红色零件的工程号 JNO ;
SELECT JNO FROM SPJ WHERE JNO NOT IN(SELE JNO FROM SPJ,P,S WHERE S.CITY='天津' AND COLOR='红' ANDS.SNO=SPJ.SNO AND P.PNO=SPJ.PNO)。
( 5 )求至少用了供应商 Sl 所供应的全部零件的工程号 JNO ;
由于VFP不允许子查询嵌套太深,将查询分为两步
A、查询S1供应商供应的零件号
SELECT PNO FROM SPJ WHERE SNO='S1'结果是(P1,P2)
B、查询哪一个工程既使用P1零件又使用P2零件。
SELECT FROM SPJ WHEREPNO='P1'
AND JNO IN (SELECT JNO FROM SPJ WHERE PNO='P2')
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询