数据库系统概论-第三章习题5

建立表:

-- S table
create table S(
	sno varchar(10) primary key,
	sname varchar(10) unique,
	status int,
	city varchar(10)
	);

-- P table
create table P(
	pno varchar(10) primary key,
	pname varchar(10),
	color varchar(3),
	weight int
	); 

-- J table
create table J(
	jno varchar(10) primary key,
	jname varchar(10) unique,
	city varchar(10)
	);

-- SPJ table
create table SPJ(
	sno varchar(10),
	pno varchar(10),
	jno varchar(10),
	qty int,
	primary key(sno, pno, jno),
	foreign key(sno) references s(sno),
	foreign key(pno) references p(pno),
	foreign key(jno) references j(jno)
	);

插入数据:

-- s table
insert into s(sno,sname,status,city) values('s1','精益',20,'天津');
insert into s(sno,sname,status,city) values('s2','盛锡',10,'北京');
insert into s(sno,sname,status,city) values('s3','东方红',30,'北京');
insert into s(sno,sname,status,city) values('s4','丰泰盛',20,'天津');
insert into s(sno,sname,status,city) values('s5','为民',30,'上海');

-- p table
insert into p(pno,pname,color,weight) values('p1','螺母','红',12);
insert into p(pno,pname,color,weight) values('p2','螺栓','绿',17);
insert into p(pno,pname,color,weight) values('p3','螺丝刀','蓝',14);
insert into p(pno,pname,color,weight) values('p4','螺丝刀','红',14);
insert into p(pno,pname,color,weight) values('p5','凸轮','蓝',40);
insert into p(pno,pname,color,weight) values('p6','齿轮','红',30);

-- j table
insert into j(jno,jname,city) values('j1','三建','北京');
insert into j(jno,jname,city) values('j2','一汽','长春');
insert into j(jno,jname,city) values('j3','弹簧厂','天津');
insert into j(jno,jname,city) values('j4','造船厂','天津');
insert into j(jno,jname,city) values('j5','机车厂','唐山');
insert into j(jno,jname,city) values('j6','无线电厂','常州');
insert into j(jno,jname,city) values('j7','半导体厂','南京');

-- spj table
insert into spj(sno,pno,jno,qty) values('s1','p1','j1',200);
insert into spj(sno,pno,jno,qty) values('s1','p1','j3',100);
insert into spj(sno,pno,jno,qty) values('s1','p1','j4',700);
insert into spj(sno,pno,jno,qty) values('s1','p2','j2',100);

insert into spj(sno,pno,jno,qty) values('s2','p3','j1',400);
insert into spj(sno,pno,jno,qty) values('s2','p3','j2',200);
insert into spj(sno,pno,jno,qty) values('s2','p3','j4',500);
insert into spj(sno,pno,jno,qty) values('s2','p3','j5',400);
insert into spj(sno,pno,jno,qty) values('s2','p5','j1',400);
insert into spj(sno,pno,jno,qty) values('s2','p5','j2',100);

insert into spj(sno,pno,jno,qty) values('s3','p1','j1',200);
insert into spj(sno,pno,jno,qty) values('s3','p3','j1',200);

insert into spj(sno,pno,jno,qty) values('s4','p5','j1',100);
insert into spj(sno,pno,jno,qty) values('s4','p6','j3',300);
insert into spj(sno,pno,jno,qty) values('s4','p6','j4',200);

insert into spj(sno,pno,jno,qty) values('s5','p2','j4',100);
insert into spj(sno,pno,jno,qty) values('s5','p3','j1',200);
insert into spj(sno,pno,jno,qty) values('s5','p6','j2',200);
insert into spj(sno,pno,jno,qty) values('s5','p6','j4',500);

习题:

-- 1. 找出所有供应商的姓名和所在城市
select sname, city from s;

-- 2. 找出所有零件的名称,颜色,重量
select pname,color,weight from p;

-- 3. 找出使用供应商s1所共有零件的工程号码
select jno from spj where sno='s1';

-- 4. 找出工程项目j2使用的各种零件的名称及其数量
select pname,qty from p,spj where p.pno=spj.pno and spj.jno='j2';

-- 5. 找出上海商供应的所有零件号码
select pno from s,spj where s.sno=spj.sno and s.city='上海';

-- 6. 找出使用上海产的零件的工程名称
select jname from s,spj,j where 
	s.sno=spj.sno and 
	j.jno=spj.jno and 
	s.city='上海';

-- 7. 找出没有使用添加产的零件的工程号码
select jno from j where jno not in(
	select jno from s,spj where s.sno=spj.sno and s.city='天津'
);

-- 8. 把全部红色零件改为蓝色
update p set color='蓝' where color='红';

-- 9. 由s5供给j4的零件p6改为由s3供应
update spj set sno='s3' where sno='s5' and jno='j4' and pno='p6';

-- 10. 从供应商关系中删除s2的记录,并从供应商情况关系中删除相应的记录
DELETE FROM s WHERE sno='s2' ;
DELETE FROM spj WHERE sno='s2';
SELECT * FROM s;
SELECT  DISTINCT sno FROM spj ;

-- 11. 请将(s2,j6,p4,200)插入供应情况关系
insert into spj(sno,pno,jno,qty) values('s2','p4','j6',200);
SELECT * FROM spj WHERE jno='j6';

每题查询结果如下:
– 1. 找出所有供应商的姓名和所在城市

sname city
精益 天津
盛锡 北京
东方红 北京
丰泰盛 天津
为民 上海

– 2. 找出所有零件的名称,颜色,重量

pname color weight
螺母 12
螺栓 绿 17
螺丝刀 14
螺丝刀 14
凸轮 40
齿轮 30

– 3. 找出使用供应商s1所共有零件的工程号码

jno
j1
j3
j4
j2

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

pname qty
螺栓 100
螺丝刀 200
凸轮 100
齿轮 200

– 5. 找出上海商供应的所有零件号码

pno
p2
p3
p6
p6

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

jname
造船厂
三建
一汽
造船厂

– 7. 找出没有使用添加产的零件的工程号码

jno
j7
j6
j5

– 8. 把全部红色零件改为蓝色

pno pname color weight
p1 螺母 12
p2 螺栓 绿 17
p3 螺丝刀 14
p4 螺丝刀 14
p5 凸轮 40
p6 齿轮 30

– 9. 由s5供给j4的零件p6改为由s3供应

sno pno jno qty
s3 p6 j4 500

– 10. 从供应商关系中删除s2的记录,并从供应商情况关系中删除相应的记录

sno sname status city
s1 精益 20 天津
s3 东方红 30 北京
s4 丰泰盛 20 天津
s5 为民 30 上海
sno
s1
s3
s5
s2
s4

– 11. 请将(s2,j6,p4,200)插入供应情况关系

sno pno jno qty
s2 p4 j6 200

你可能感兴趣的:(数据库系统概论)