数据库第三章习题 下载本文

SC(SNO,CNO,CN,G)(CNO为课程号,CN为课程名,G为成绩),试用SQL语言完成以下各操作:

(1)创建一个视图V-SSC(SNO,SN,CNO,CN,G)。 Create view V-SSC(SNO,SN,CNO,CN,G) AS

Select S.SNO, S.SN, SC.CNO, SC.CN, SC.G From S,SC

Where S.SNO=SC.SNO

(2)从视图V-SSC上查询平均成绩在90分以上的SNO和平均分。 Select SNO,AVG(G) From V-SSC Group by SNO Having AVG(G)

4.设有关系模式:

S(SN,SNAME,CITY)其中,S代表供应商,SN,代表供应商号,SNAME为供应商名字,CITY为供应商所在城市,主关键字为SN;

P(PN,PNAME,COLOR,WEIGHT)其中P代表零件,PN代表零件号,PNAME代表零件名,COLOR为零件颜色,WEGHT为零件重量,主关键字为PN; J(JN,JNAME,CITY)其中J表示工程,JN为工程编号,JNAME为工程名,CITY为工程所在城市,主关键字为JN。

如下图所示表示供应商(S)-零件(P)-工程(J)数据库表,写出实现以下各题功能的SQL语句:

5

S

SN S1 S2 S3 S4 S5 SPJ SNAME CITY N1 上海

N2 N3 N4 N5 P 北京 北京 上海 南京 COLOR 红 绿 蓝 红 蓝 绿 J SN S1 S1 S2 S2 S2 S2 S2 S2 S2 S2 S3 S3 S4 S4 S5 S5 S5 S5 S5 S5 S5 S5 S5 S5 PN P1 P1 P3 P3 P3 P3 P3 P3 P3 P3 P3 P4 P6 P6 P2 P2 P5 P5 P6 P1 P3 P4 P5 P6 JN J1 J4 J1 J2 J3 J4 J5 J6 J7 J2 J1 J2 J3 J7 J2 J4 J5 J7 J2 J4 J4 J4 J4 J4 QTY 200 700 400 200 200 500 600 400 800 100 200 500 300 300 200 100 500 100 200 1000 1200 800 400 500 WEIGHT 12 18 20 13 11 15 PN PNAME PN1 PN2 PN3 PN4 PN5 PN6 JN J1 J2 J3 J4 J5 J6 J7

P1 P2 P3 P4 P5 P6

JNAME CITY JN1 JN2 JN3 JN4 JN5 JN6 JN7 上海 广州 南京 南京 上海 武汉 上海 (1) 取出工程的全部细节。

Select * From J

(2) 取出所在城市为上海的所有工程的全部细节。

Select * From J

Where CITY=‘上海’; (3) 取出重量最轻的零件代号。

Select PN From P

Where WEIGHT=

(SelectMIN (WEIGHT) From P );

6

(4) 取出为工程J1提供零件的供应商代号。

Select SN From SPJ Where JN=?J1?;

(5) 取出为工程J1提供零件P1的供应商代号。

Select SN From SPJ

Where JN=?J1? AND PN=?P1?;

(6) 取出由供应商S1提供零件的工程名称。

Select J.JNAME From SPJ, J

Where SPJ.JN=J.JN AND SPJ.SN=‘S1’; (7) 取出供应商S1提供的零件的颜色。

Select Distinct P.COLOR From SPJ, P

Where SPJ.PN=P.PN AND SPJ.SN=?S1?; (8) 取出为工程J1或J2提供零件的供应商代号。

Select Distinct SN From SPJ

Where JN=?J1? OR JN=?J2?;

(9) 取出为工程J1提供红色零件的供应商代号。

Select Distinct SPJ.SN From SPJ, P

Where SPJ.PN=P.PN AND SPJ.JN=‘J1’ AND P.COLOR=‘红’; (10)取出为所在城市为上海的工程提供零件的供应商代号。

Select DISTINCT SPJ.SN From J, SPJ

Where J.JN=SPJ.JN AND J.CITY=‘上海’;

(11)取出为所在城市为上海或北京的工程提供红色零件的供应商代号。

Select SPJ.SN From P,J,SPJ

Where J.JN=SPJ.JNO ANDP.PN=SPJ.PN AND P.COLOR=‘红’AND (J.CITY=‘上海’OR J.CITY=‘北京’);

(12)取出供应商与工程所在城市相同的供应商提供的零件代号。

Select DISTINCT SPJ.PN From S, J, SPJ

Where J.JN=SPJ.JN AND S.SN=SPJ.SN AND J.CITY=S.CITY

7

S(SN,SNAME,CITY) P(PN,PNAME,COLOR,WEIGHT) J(JN,JNAME,CITY) SPJ(SN,PN,JN,QTY) (13)取出上海的供应商提供给上海的任一工程的零件的代号。

Select SPJ.PN From S, J, SPJ

Where J.JN=SPJ.JN ANDS.SN=SPJ.SN AND J.CITY=‘上海’ AND S.CITY=‘上海’;

(14)取出由供应商S1提供零件的工程的代号。

Select Distinct SPJ.JN From S,P,SPJ

Where S.SN=SPJ.SN AND P.PN=SPJ.PN AND S.SN=‘S1’;

(15)取出所有这样的一些二元组,使得第1个城市的供应商为

第2个城市的工程提供零件。 Select Distinct S.CITY,J.CITY From S, J, SPJ

Where S.SN=SPJ.SN AND J.JN=SPJ.JN ; (16)把零件P2的重量增加5,颜色改为黄色。

UPDATE P

SET WEIGHT=WEIGHT+5, COLOR=‘黄’ Where PN=‘P2’;

(17)将没有供货的所有工程项目从J表中删除。

Delete From J Where JN not in

( Select * From SPJ);

(18)查询提供全部零件的供应商名。

Select SNAME From S Where SNO IN (

SELECT SNO FROM SPJ);

(19)查询这样的工程项目号:该工程项目使用P1零件的平均使用量大于工程

项目J1使用的任何一种零件的最大数量。

SELECT JNO FROM SPJ

WHERE SPJ.PNO=P1 GROUP BY JNO

HAVING AVG(QTY)>ALL

(SELECT QTY FROM SPJ

8