数据库—第三章课后作业

一、有两个关系S(A,B,C,D)和T(C,D,E,F),写出下列查询等价的SQL表达式
(1) 在这里插入图片描述

select * 
from S 
where A='10';

(2)
在这里插入图片描述

select A,B
from S;

(3)在这里插入图片描述

select A,B,S.C,S.D,E,F 
from S,T
where S.C = T.C and S.D = T.D;//因为是自然链接所以需要去掉重复列。

(4)
在这里插入图片描述

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

(5)
在这里插入图片描述

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

(6)
在这里插入图片描述

select S.C,S.D,T.*
from S,T;----这个刚开始其实看着有点晕的,但是(其实是第二章忘了hhh),回头看其实并不难,就是一个笛卡尔积的语句。

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

--建立S表:
create table S(Sno char(2) unique,
Sname char(6),
Status char(2),
City char(4));
--建立P表
create table P(Pno char(2) unique,
Pname char(6),
COLOR char(2),
WEIGHT int);
--建立J表:
create table J(Jno char(2) unique,
JNAME char(8),
CITY char(4));
--建立SPJ表:
create table SPJ(	Sno char(2),Pno char(2),
					Jno char(2),QTY int);

复习一下建表知识点
1、create table 表名()
2、列名 类型
3、列定义之间要加“ ,”
4、unique表示唯一 primary key表示主键 (加在列后面)
5、foreign key(a) references B(c)这应该在最后一行,因为是表级完整条件。

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);


-------------------------------

后面的就参照着写吧(下午继续写的时候忘记保存了),感觉有点傻hhh。

针对建立的4各表用SQL完成第二章习题6中的查询:

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

select DIST SNO 
from SPJ 
where  JNO='J1';

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

select  DIST SNO 
from SPJ 
where JNO = 'J1' and PNO = 'P1';

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

select SNO 
from SPJ,P 
where JNO='J1' 	and SPJ.PNO = P.PNO 
				and COLOR = '红';
-----涉及到两个表应该先链接后查询。

(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 Jno from SPJ A
where A.Sno='S1' and not exists(
								select Pno from SPJ B
								where B.Sno='S1' and not exists(
								select Jno from SPJ C
								where C.Pno=B.Pno and  C.Jno=a.Jno
								))

针对上面的四个表用SQL完成以下各项操作:
(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 SPJ,P
where P.PNO = SPJ.PNO and SPJ.JNO = 'J2';

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

select PNO 
from SPJ,S 
where S.SNO = SPJ.SNO and CITY = '上海';

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

select JNAME 
from SPJ,S,J
where S.SNO = SPJ.SNO and S.CITY = '上海' and J.JNO = SPJ.JNO;

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

select JNO 
from SPJ  
where JNO not in (
					select DIST 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' , 'J6' , 'P4' , 200);

三、为三建工程项目建立一个供应情况的视图,包括供应商代码(SNO)、零件代码(PNO)、供应数量(QTY)。

create view V
as
select SNO,SPJ.PNO,QTY 
from SPJ,J
where SPJ.JNO = J.JNO and J.JNAME = '三建';----先链接再选择。

- 基于上面的视图完成以下查询:
(1)找出三建工程项目使用的各种零件代码及其数量

select PNO,QTY
from Three;

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

select * from Three 
where SNO = 'S1';

总结:

  1. 第二道大题查询虽然本题答案对了但是没有进行多余的测试,所以如果有错误请大家纠正(exists刚开始可能用不太好)
  2. 视图这样不常用的语句快忘了还需要加强记忆
  3. 多对比语句的不同
  4. 注意类似自然链接的特殊性
  5. 注意附加条件的使用,类似unique和distinct等。

共勉

  • 6
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值