目录
[第一章]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)
中的查询