logo资料库

数据库萨师宣王珊第四版习题答案配讲解.doc

第1页 / 共21页
第2页 / 共21页
第3页 / 共21页
第4页 / 共21页
第5页 / 共21页
第6页 / 共21页
第7页 / 共21页
第8页 / 共21页
资料共21页,剩余部分请下载后查看
[第一章]P38(1.1-1.3-1.12-1.22)
[第二章]P74(2.3-2.4-2.5仅关系代数)
[第三章]P127(3.3-3.4-3.5-3.11)
[第四章]P148(4.1-4.8-4.9)
[第五章] P164(5.1-5.2-5.6)
[第六章] P195(6.1不含多值依赖和4NF-6.2-6.3-6.12不含(3))
[第7章]P234 数据库设计(7.1-7.2-7.3-7.19)
目录 [第一章]P38(1.1-1.3-1.12-1.22)........................................................................................ 2 [第二章]P74(2.3-2.4-2.5 仅关系代数)..............................................................................3 [第三章]P127(3.3-3.4-3.5-3.11)........................................................................................ 5 [第四章]P148(4.1-4.8-4.9)...............................................................................................13 [第五章] P164(5.1-5.2-5.6)..............................................................................................15 [第六章] P195(6.1 不含多值依赖和 4NF-6.2-6.3-6.12 不含(3)).............................17 [第 7 章]P234 数据库设计(7.1-7.2-7.3-7.19)................................................................ 19
[第一章]P38(1.1-1.3-1.12-1.22)
[第二章]P74(2.3-2.4-2.5 仅关系代数)
[第三章]P127(3.3-3.4-3.5-3.11) 3、用 SQL 语句建立第二章习题 5 中的 4 个表。 CREATE TABLE S (SNO CHAR(3), SNAME CHAR(10), STATUS CHAR(2), CITY CHAR(10), primary key(SNO)); CREATE TABLE P (PNO CHAR(3), PNAME CHAR(10), COLOR CHAR(4), WEIGHT INT, primary key(PNO)); CREATE TABLE J (JNO CHAR(3), JNAME CHAR(10), CITY CHAR(10), primary key(JNO)); CREATE TABLE SPJ (SNO CHAR(3), PNO CHAR(3), JNO CHAR(3), QTY INT, primary key(SNO,PNO,JNO), foreign key (SNO) foreign key (PNO) foreign key (JNO) references S(SNO), references P(PNO), references J(JNO)); INSERT INTO S VALUES('S1','精益',20,'天津'); INSERT INTO S VALUES('S2','万胜',10,'北京'); INSERT INTO S VALUES('S3','东方',30,'北京'); INSERT INTO S VALUES('S4','丰泰隆',20,'上海'); INSERT INTO S VALUES('S5','康健',30,'南京'); INSERT INTO P VALUES('P1','螺母','红',12); INSERT INTO P VALUES('P2','螺栓','绿',17); INSERT INTO P VALUES('P3','螺丝刀','蓝',14); INSERT INTO P VALUES('P4','螺丝刀','红',14); INSERT INTO P VALUES('P5','凸轮','蓝',40); INSERT INTO P VALUES('P6','齿轮','红',30);
INSERT INTO J VALUES('J1','三建','北京'); INSERT INTO J VALUES('J2','一汽','长春'); INSERT INTO J VALUES('J3','弹簧厂','天津'); INSERT INTO J VALUES('J4','造船厂','天津'); INSERT INTO J VALUES('J5','机车厂','唐山'); INSERT INTO J VALUES('J6','无线电厂','常州'); INSERT INTO J VALUES('J7','半导体厂','南京'); INSERT INTO SPJ VALUES('S1','P1','J1',200); INSERT INTO SPJ VALUES('S1','P1','J3',100); INSERT INTO SPJ VALUES('S1','P1','J4',700); INSERT INTO SPJ VALUES('S1','P2','J2',100); INSERT INTO SPJ VALUES('S2','P3','J1',400); INSERT INTO SPJ VALUES('S2','P3','J2',200); INSERT INTO SPJ VALUES('S2','P3','J4',500); INSERT INTO SPJ VALUES('S2','P3','J5',400); INSERT INTO SPJ VALUES('S2','P5','J1',400); INSERT INTO SPJ VALUES('S2','P5','J2',100); INSERT INTO SPJ VALUES('S3','P1','J1',200); INSERT INTO SPJ VALUES('S3','P3','J1',200); INSERT INTO SPJ VALUES('S4','P5','J1',100); INSERT INTO SPJ VALUES('S4','P6','J3',300); INSERT INTO SPJ VALUES('S4','P6','J4',200); INSERT INTO SPJ VALUES('S5','P2','J4',100); INSERT INTO SPJ VALUES('S5','P3','J1',200); INSERT INTO SPJ VALUES('S5','P6','J2',200); INSERT INTO SPJ VALUES('S5','P6','J4',500); 4、针对上题建立的四个表试用 SQL 完成第二章习题 5(P74)中的 查询 (1)求供应工程 J1 零件的供应商号码 SNO select sno from spj where jno='J1'; (2)求供应工程 J1 零件 P1 的供应商号码 SNO select sno from spj where jno='J1' and pno='P1'; (3)求供应工程 J1 零件红色零件的供应商号码 SNO 解法一(嵌套查询): select sno from spj where jno='J1' and pno in /*找出红色零件的零件号码 pno*/ (select pno from p /*从 P 表中找*/ where color='红'); 解法二(连接查询): select sno from spj,p where spj.pno=p.pno
and jno='J1' and color='红'; (4)求没有使用天津供应商生产的红色零件的工程号 JNO 解法一(多重嵌套查询): select jno from j where not exists (select * from spj where spj.jno=j.jno and sno in (select sno from s where city='天津') and pno in (select pno from p where color='红')); 解法二(连接查询): select jno from j where not exists (select * from spj,s,p where spj.jno=j.jno and spj.sno=s.sno and spj.pno=p.pno and s.city='天津' and p.color='红'); (5)(稍难)求至少用了 S1 供应商所供应的全部零件的工程号 JNO 这是一个相关子查询,父查询和子查询均引用了 spj 表用别名将父查询与子查询 中的 spj 表区分开 select distinct jno from spj z where not exists (select * from spj x where sno='S1' and not exists (select * from spj y where y.pno=x.pno and y.jno=z.jno)); (思路:不存在这样的零件 A,供应商 S1 供应了 A,而工程 B 没有选用 A) 5、针对习题 3 中建立的四个表试用 SQL 完成第二章习题 5(P74) 中的查询
分享到:
收藏