建立表:
-- 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 |