数据库概论实验二

  • 实验数据库,表,详情不见

实验二 多表查询与子查询

【实验目的】
1、 熟悉基本的连接操作,掌握内连接与外连接的方法,学会应用自身连接;
2、 掌握相关子查询的使用方法;
3、 掌握嵌套子查询的使用方法;

【实验性质】
验证型实验

【实验内容】
完成如下查询:(将查询语句保存为题号.sql,如:A.sql、B.sql….)
基本连接查询:
A. 找出上海厂商供应的所有零件号码;
select pno from spj,s where spj.sno=s.sno and city=‘上海’
在这里插入图片描述

B. 取出供应商S1提供的零件的颜色;
select color from s,spj,p where s.sno=spj.sno and spj.pno=p.pno and s.sno=‘S1’
在这里插入图片描述

C. 取出天津的供应商提供给天津任一工程的零件的代号;
select pno from s,spj,j where s.sno=spj.sno and spj.jno=j.jno and s.city=‘天津’ and j.city=‘天津’
在这里插入图片描述

D. 找出工程项目J2所使用的各种零件的名称以及数量;
select pname,qty from p,spj where p.pno=spj.pno and spj.jno=‘J2’
在这里插入图片描述

E. 取出至少有一个和工程不在同一城市的供应商提供零件的工程代号;
select spj.jno from j,spj,s where s.sno=spj.sno and j.jno=spj.jno and s.city!=j.city group by spj.jno
在这里插入图片描述

F. 取出为工程J1提供红色零件的供应商代号;
select spj.sno from spj,p where spj.pno=p.pno and p.color=‘红’ and spj.jno=‘J1’
在这里插入图片描述

G. 取出为所在城市为北京的工程提供零件的供应商代号;
select spj.sno from spj,j where spj.jno=j.jno and j.city=‘北京’
在这里插入图片描述

H. 取出这样一些供应商代号,他们能够提供至少一种红色零件的供应商所提供的零件;
select sno from spj,p where spj.pno=p.pno and p.color=‘红’ group by sno
在这里插入图片描述

I. 取出由供应商S1提供零件的工程名称;
select j.jname from spj,j where spj.jno=j.jno and spj.sno=‘S1’
在这里插入图片描述

J. 取出为所在城市为上海或北京的工程提供红色零件的供应商代号;
select sno from spj,j,p where spj.pno=p.pno and spj.jno=j.jno and (j.city='上海’or j.city=‘北京’) and p.color=‘红’
在这里插入图片描述

K. 取出供应商与工程所在城市相同的供应商提供的零件代号;
select pno from s,spj,j where s.sno=spj.sno and spj.jno=j.jno and s.city=j.city
在这里插入图片描述

外连接操作:
L. 显示所有的项目以及其供应商、所用零件情况;
select jno,sno,p.pno,pname,color,weight from spj left outer join p on (spj.pno=p.pno)
在这里插入图片描述

M. 显示所有的零件以及所用于的项目、供应商商情况;
select pno,jno,s.sno,sname,status,city from spj left outer join s on (spj.sno=s.sno)
在这里插入图片描述

自连接:
N. 求和“东方红”在同一个城市的供应商的名称;
select A.sname from s A,s B where A.sname=B.sname and A.city =(select B.city from s B where B.sname=‘东方红’) and A.sname!=‘东方红’
在这里插入图片描述

O. 求和“螺母”的颜色相同的零件的的编号、名称以及重量;
select A.pno,A.pname,A.weight from p A,p B where A.pno=B.pno and A.color=(select B.color from p B where B.pname=‘螺母’) and A.pname!=‘螺母’
在这里插入图片描述

使用IN关键字:
P. 取出重量最轻的零件代号;
select pno from p where weight in( select min(weight)from p)
在这里插入图片描述

Q. 找出没有使用天津产的零件的工程名称;
select jname from s,spj,j where s.sno=spj.sno and j.jno=spj.jno and s.sno not in( select sno from s where city!=‘天津’ ) group by jname
在这里插入图片描述

R. 求没有使用天津供应商生产的红色零件的工程号;
select spj.jno from s,spj,p where s.sno=spj.sno and p.pno=spj.pno and spj.pno not in( select spj.pno from p,s,spj where s.sno=spj.sno and p.pno=spj.jno and s.city=‘天津’ and p.color=‘红’ )
在这里插入图片描述

S. 求和“东方红”在同一个城市的供应商的名称;
select sname from s where city in( select city from s where sname=‘东方红’) and sname!=‘东方红’
在这里插入图片描述

T. 求和“螺母”的颜色相同的零件的的编号、名称以及重量;
select pno,pname,weight from p where color in( select color from p where pname=‘螺母’) and pname!=‘螺母’
在这里插入图片描述

U. 取出上海供应商不提供任何零件的工程代号;
select jno from s,spj where spj.sno=s.sno and jno not in( select jno from s,spj where spj.sno=s.sno and s.city=‘上海’) group by jno
在这里插入图片描述

使用EXISTS关键字:(选做)
V. 求使用了所有零件的工程号;

W. 求至少用了供应商S1所提供的所有零件的工程号;

使用比较运算符(含ANY、ALL):
X. 求出重量最重的零件的编号、名称以及重量;
lect pno,pname,weight from p where weight>=All( select weight from p)
在这里插入图片描述

Y. 求比S1供应商提供的所有零件都重的零件的编号、名称以及重量。
select pno,pname,weight from p where weight>All( select weight from p where pno in( select pno from spj where sno=‘S1’))
在这里插入图片描述

  • 8
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值