当前位置:主页 > 查看内容

第三章课后习题

发布时间:2021-07-27 00:00| 位朋友查看

简介:课后习题 3.有两个关系SA,B,C,D和TC,D,E,F,写出与下列查询等价的SQL表达式 4.用SQL语句建立第2章习题6中的4个表针对建立的4各表用SQL完成第二章习题6中的查询 (1)求供应工程J1零件的供应商号码SNO (2)求供应工程J零件P1的供应商号码SNO; (3)求供应工程JI零件……

课后习题

3.有两个关系S(A,B,C,D)和T(C,D,E,F),写出与下列查询等价的SQL表达式:

在这里插入图片描述

select * 
from S 
where A='10';

在这里插入图片描述

select A,B
from S;

在这里插入图片描述

select A,B,S.C,S.D,E,F
from S,T
where S.C=T.C and S.D=T.D;

在这里插入图片描述

select *
from S,T
where S.C=T.C;

在这里插入图片描述

select *
from S,T
where S.A<T.E;

在这里插入图片描述

select S.C,S.D,T.*
from S,T;

4.用SQL语句建立第2章习题6中的4个表;针对建立的4各表用SQL完成第二章习题6中的查询:

1.先把表建立出来然后把数据插入进去,在进行后面SQL语句操作。

create table S
	(sno char(6) unique,
	 sname char(15),
	 status int,
	 city char(10)
	);
create table P
	(pno char(6) unique,
	 pname char(10),
	 color char(3),
	 weight int
	);
create table J
	(jno char(6) unique,
	 jname char(20),
	 city char(20)
	);
create table SPJ
	(sno char(6),
	 pno char(6),
	 jno char(6),
	 qty int,
	 foreign key(sno) references S(sno),
	 foreign key(pno) references P(pno),
	 foreign key(jno) references J(jno)
	);

在这里插入图片描述

INSERT INTO S VALUES ('S1','精益',20,'天津');
INSERT INTO S VALUES ('S2','盛锡',10,'北京');
INSERT INTO S VALUES ('S3','东方红',20,'北京');
INSERT INTO S VALUES ('S4','丰泰盛',20,'天津');	
INSERT INTO S VALUES ('S5','为民',20,'上海');
	
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);

select * from S;
select * from P;
select * from J;
select * from SPJ;

在这里插入图片描述
??enmmm,数据好多,最后select查看一下,应该没什么问题。这里需要注意的是先把S,P,J表插入数据后,再对SPJ表插入数据,因为SPJ中有外码。

(1)求供应工程J1零件的供应商号码SNO;

select sno
from SPJ 
where jno='J1';

(2)求供应工程J零件P1的供应商号码SNO;

select sno
from SPJ
where jno='J1' and pno='P1';

(3)求供应工程JI零件为红色的供应商号码SNO;

select sno
from SPJ,P
where SPJ.pno=P.pno and color='红' and jno='J1';

(4)求没有使用天津供应商生产的红色零件的工程号JNO;

select jno
from SPJ
where jno not in(
				select jno
				from SPJ,P,S
				where S.city='天津' and color='红' and S.sno=SPJ.sno and P.pno=SPJ.pno
				);

(5)求至少用了供应商S1所供应的全部零件的工程号JNO。

select pno
from SPJ
where sno='S1';
select jno
from SPJ
where pno='P1' and jno in(
						 select jno
						 from SPJ
						 where pno='P2'
						);
--或者可以用连接查询
select pno
from SPJ
where sno='S1';
select x.jno
from SPJ x,SPJ y
where x.jno=y.jno and x.pno='P1' and y.pno='P2';

在这里插入图片描述

5.针对上面的四个表用SQL完成以下各项操作:

(1)找出所有供应商的姓名和所在地:

select sname,city
from S;

在这里插入图片描述

(2)找出所有零件的名称、颜色、重量:

select pno,color,weight
from P;

在这里插入图片描述

(3)找出使用供应商S1所供应零件的工程号码:

select jno
from SPJ
where sno='S1';

在这里插入图片描述

(4)找出工程项目J2使用的各种零件的名称及其数量:

select pname,qty
from SPJ,P
where jno='J2' and P.pno=SPJ.pno;

在这里插入图片描述

(5)找出上海厂商供应的所有零件号码:

select pno
from SPJ,S
where city='上海' and S.sno=SPJ.sno;

在这里插入图片描述

(6)找出使用上海产的零件的工程名称:

select jname
from SPJ,S,J
where S.city='上海' and  S.sno=SPJ.sno and J.jno=SPJ.jno;

在这里插入图片描述

(7)找出没有使用天津产的零件的工程号码:

select jno 
from SPJ
where jno not in(
				select jno
				from SPJ,S
				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';

(11)请将(S2 , J6 , P4, 200) 插入供应关系情况:

insert 
into SPJ
values('S2','P4','J6',200);

在这里插入图片描述

9.为三建工程项目建立一个供应情况的视图,包括供应商代码(SNO)、零件代码(PNO)、供应数量(QTY)。基于上面的视图完成以下查询:

1.按照题意,先建立出基于三建项目的视图。

create view v1_SPJ
as select sno,pno,qty
from SPJ
where jno in(
			select jno
			from J
			where jname='三建'
			);

在这里插入图片描述

(1)找出三建工程项目使用的各种零件代码及其数量:

select pno,qty
from v1_SPJ;
--视图消解
select pno,qty
from SPJ,J
where jname='三建' and SPJ.jno=J.jno;

enmmm,下面的 select 语句应该为视图消解后的基于基本表的 select 语句
在这里插入图片描述
通过实验可以看出,验证一下视图消解,enmm,没毛病。。。

(2)找出供应商S1的供应情况:

select *
from v1_SPJ
where sno='S1';

select sno,pno,qty
from SPJ,J
where SPJ.jno=J.jno and jname='三建' and sno='S1';

在这里插入图片描述
enmmm,同理,下面为视图消解后的基于基本表的查询,查询出来的一样。

总结:最近课有点小多,作业有的都写不过来啦,坚持一下,再坚持一下吧!!!

;原文链接:https://blog.csdn.net/Codingzyk/article/details/115762972
本站部分内容转载于网络,版权归原作者所有,转载之目的在于传播更多优秀技术内容,如有侵权请联系QQ/微信:153890879删除,谢谢!
上一篇:数据库第七周作业——第四章课后题 下一篇:没有了

推荐图文


随机推荐