Transcript 作业点评
第三章作业讲评
文洁
2012/4/10
完成情况
已交70份作业,9人未交作业:
• 王干、揭宇如、王庆一、李广耀、王嘉良、丁海
韬、刘一鸣、邓捷 、王灏
25
21
20
18
15
10
10
12
6
5
3
0
A+
A
A-
B+
B
B-
第3题
创建四张表S, P, J, SPJ.
CREATE TABLE S
( SNO varchar(2) PRIMARY KEY,
SNAME varchar(10),
STATUS smallint,
CITY varchar(20) )
CREATE TABLE SPJ
(…
PRIMARY KEY(SNO, PNO, JNO),
FOREIGN KEY (SNO) REFERENCES
S(SNO)
…)
Primary key, not null, unique;
CITY varchar(2);
SPJ表的外码SNO参照S表的
SNO属性
第4题 (4)
求没有使用天津供应商生产的红色零件的工程号JNO
SELECT JNO
FROM J
WHERE JNO NOT IN
(SELECT JNO
FROM SPJ, P, S
WHERE S.SNO = SPJ.SNO
AND P.PNO = SPJ.PNO
AND S.CITY = ‘天津’
AND P.COLOR = ‘红’)
SELECT JNO
FROM P, S, SPJ
WHERE S.SNO = SPJ.SNO
AND P.PNO = SPJ.PNO
AND S.CITY != ‘天津’
AND P.COLOR != ‘红’
J.JNO
P.PNO
P.COLOR
S.SNO
S.CITY
J1
红
天津
J1
蓝
上海
…
第4题 (5)
求至少用了供应商S1供应的全部零件的工程号JNO
1. SELECT JNO
FROM SPJ
WHERE SNO = ‘S1’
2. SELECT JNO
FROM SPJ
WHERE PNO=‘P1’
AND JNO IN
(SELECT JNO
FROM SPJ
WHERE PNO=‘P2’)
SELECT DISTINCT JNO
FROM SPJ X
WHERE NOT EXISTS
(SELECT *
FROM SPJ Y
WHERE SNO = ‘S1’
AND NOT EXISTS
(SELECT *
FROM SPJ Z
WHERE
Z.PNO=Y.PNO
AND Z.JNO=X.JNO)
第5题 (1)
找出所有供应商的姓名和所在城市
SELECT S.SNAME, S.CITY
FROM S
SELECT S.SNO, SNAME
FROM S, SPJ
WHERE S.SNO = SPJ.SNO
SELECT X.SNO, Y.JNO
FROM SPJ X, SPJ Y
第5题 (6)
找出使用上海产的零件的工程名称
SELECT DISTINCT SNAME
FROM SPJ, S, J
WHERE SPJ.SNO = S.SNO
AND SPJ.JNO = J.JNO
AND S.CITY=‘上海’
第5题 (7)
找出没有使用天津产的零件的工程号码
SELECT JNO
FROM J
WHERE JNO NOT IN
(SELECT JNO
FROM SPJ, S
WHERE S.SNO = SPJ.SNO
AND S.CITY = ‘天津’ )
第5题 (10)
从供应商关系中删除S2的记录,并从供应情况关系中删除相应的
记录
DELETE FROM SPJ
WHERE SNO=‘S2’
DELETE FROM S
WHERE SNO=‘S2’
SPJ
S
SNO
SNO
S1
S1
S2
S2
S1
S3
第5题 (11)
请将(S2, J6, P4, 200)插入SPJ表
INSERT INTO SPJ (SNO, JNO, PNO, QTY)
VALUES (‘S2’, ‘J6’, ‘P4’, 200)
表名后面添加列名,默认为所有列且按照建表时的顺序
排列各属性
字符类型的值需要加单引号(如CHAR, VARCHAR),
数值类型不加(INT, DOUBLE)
补充题2.21
求伦敦供应商提供的零件的信息
SELECT *
FROM S
WHERE S.CITY=‘伦敦’
SELECT DISTINCT P.*
FROM S, SPJ, P
WHERE SPJ.SNO=S.SNO
AND SPJ.PNO=P.PNO
AND S.CITY=‘伦敦’
补充题2.26
求由同一个供应商供应的零件号的对
SELECT DISTINCT FIRST.P#, SECOND.P#
FROM SPJ FIRST, SPJ SECOND
WHERE FIRST.S#=SECOND.S#
AND FIRST.P#>SECOND.P#
例如:供应商S1供应了三种
零件,P1,P2,P3。那么
他的零件号的对就是(P1,
P2),(P1,P3)和(P2,P3)。
注意事项
注意去重
Group by 的使用
SELECT P#, J#, SUM(QTY)
FROM SPJ
GROUP BY P#, J#
作业之星
陈一瑶、张微、仇浩波、徐晨灿、陈佳威、丁笛童、赵可君、胡婧
璇、王萌、常铭珊