《数据库原理》部分习题解析2

《数据库原理》部分习题解析2

 

P123 3.

(1)

SELECT *

FROM S

WHERE A=10;

(2)

SELECT A,B

FROM S;

(3)

SELECT A,B,S.C,S.D,E,F

FROM S,T

WHERE S.C=T.C AND S.D=T.D;

(4)

SELECT S.* , T.*

FROM S,T

WHERE S.C=T.C;

(5)

SELECT S.* , T.*

FROM S,T

WHERE S.A<T.E;

(6)

SELECT SCD.C,SCD.D,T.C,T.D,E,F

FROM T,(SELECT DISTINCT C,D FROM S)

       AS SCD(SCD.C,SCD.D) ;

P123 4.

1 求供应工程 J1 零件的供应商号码 SNO

SELECT DISTINCT SNO

FROM SPJ

WHERE JNO = 'J1';

图4-1 求供应工程 J1 零件的供应商号码 SNO

2)求供应工程 J1 零件 P1 的供应商号码 SNO

SELECT DISTINCT SNO

FROM SPJ

WHERE JNO = 'J1' AND PNO = 'P1';

图4-2 求供应工程 J1 零件 P1 的供应商号码 SNO

3)求供应工程 J1 零件为红色的供应商号码 SNO

SELECT DISTINCT SPJ.SNO

FROM SPJ

JOIN P ON SPJ.PNO = P.PNO

WHERE SPJ.JNO = 'J1' AND P.COLOR = '红';

图4-3 求供应工程 J1 零件为红色的供应商号码 SNO

4)求没有使用天津供应商生产的红色零件的工程号 JNO

SELECT DISTINCT JNO

FROM SPJ

WHERE JNO NOT IN (

    SELECT DISTINCT SPJ.JNO

    FROM SPJ

    JOIN S ON SPJ.SNO = S.SNO

    JOIN P ON SPJ.PNO = P.PNO

    WHERE S.CITY = '天津' AND P.COLOR = '红'

);

图4-4 求没有使用天津供应商生产的红色零件的工程号 JNO

5)求至少用了供应商 S1 所供应的全部零件的工程号 JNO

SELECT JNO

FROM SPJ AS SPJ1

GROUP BY JNO

HAVING NOT EXISTS (

    SELECT *

    FROM SPJ AS SPJ2

    WHERE SNO = 'S1' AND PNO NOT IN (

        SELECT PNO

        FROM SPJ AS SPJ3

        WHERE SPJ3.JNO = SPJ1.JNO

    )

);

图4-5 求至少用了供应商 S1 所供应的全部零件的工程号 JNO

P123 5.

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

SELECT SNAME, CITY

FROM S;

图5-1 找出所有供应商的姓名和所在城市

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

SELECT PNAME, COLOR, WEIGHT

FROM P;

图5-2 找出所有零件的名称、颜色、重量

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

SELECT DISTINCT JNO

FROM SPJ

WHERE SNO = 'S1';

图5-3 找出使用供应商 S1 所供应零件的工程号码

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

SELECT P.PNAME, SPJ.QTY

FROM SPJ

JOIN P ON SPJ.PNO = P.PNO

WHERE SPJ.JNO = 'J2';

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

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

SELECT DISTINCT PNO

FROM SPJ

JOIN S ON SPJ.SNO = S.SNO

WHERE S.CITY = '上海';

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

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

SELECT DISTINCT J.JNAME

FROM SPJ

JOIN S ON SPJ.SNO = S.SNO

JOIN J ON SPJ.JNO = J.JNO

WHERE S.CITY = '上海';

图5-6 找出使用上海产的零件的工程名称

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

SELECT DISTINCT JNO

FROM J

WHERE JNO NOT IN (

    SELECT DISTINCT SPJ.JNO

    FROM SPJ

    JOIN S ON SPJ.SNO = S.SNO

    WHERE S.CITY = '天津'

);

图5-7 找出没有使用天津产的零件的工程号码

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

UPDATE P

SET COLOR = '蓝'

WHERE COLOR = '红';

图5-8 把全部红色零件的颜色改成蓝色

9)由 S5 供给 J2 的零件 P6 改为由 S3 供应

SELECT QTY FROM SPJ

WHERE SNO = 'S5' AND PNO = 'P6' AND JNO = 'J2';

DELETE FROM SPJ

WHERE SNO = 'S5' AND PNO = 'P6' AND JNO = 'J2';

INSERT INTO SPJ VALUES('S3', 'P6', 'J2', 200);

图5-9 由 S5 供给 J2 的零件 P6 改为由 S3 供应

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

DELETE FROM SPJ

WHERE SNO = 'S2';

DELETE FROM S

WHERE SNO = 'S2';

图5-10 从供应商关系中删除 S2 的记录,并从供应情况关系中删除相应的记录

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

INSERT INTO S VALUES('S2', '盛锡', 10, '北京');

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

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

P123 9.

创建视图

CREATE VIEW G

AS

SELECT SNO,PNO,QTY

FROM SPJ,J

WHERE J.JNO=SPJ.JNO AND JNAME='三建';

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

SELECT DISTINCT PNO,QTY

FROM G;

(2)找出供应商S1的三建工程情况

SELECT *

FROM G

WHERE SNO='S1';

图9-1 供应商S1的三建工程情况

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值