程序员

数据库—第三章课后作业

作者:admin 2021-07-17 我要评论

一、有两个关系SA,B,C,D和TC,D,E,F写出下列查询等价的SQL表达式 1 select * from S where A 10 ; (2 select A , Bfrom S ; 3 select A , B , S . C , S . D , E ...

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)

一、有两个关系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等。

共勉

;原文链接:https://blog.csdn.net/weixin_51599965/article/details/115699921

版权声明:本文转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本站转载出于传播更多优秀技术知识之目的,如有侵权请联系QQ/微信:153890879删除

相关文章
  • 数智洞察丨和死神赛跑,那些不得不“闯

    数智洞察丨和死神赛跑,那些不得不“闯

  • 酒店小程序开发瑞蚁解决方案

    酒店小程序开发瑞蚁解决方案

  • 自建Kubernetes集群如何使用阿里云CSI

    自建Kubernetes集群如何使用阿里云CSI

  • 【kafka运维】数据迁移、分区副本重分

    【kafka运维】数据迁移、分区副本重分

腾讯云代理商
海外云服务器