以下题目用到工程供应数据库关系模式:
供应商(供应商号,供应商名,城市)
        S(Sno,Sname,City)
零件(零件号,零件名,零件颜色)
     P(Pno,Pname,Color)
工程(工程号,工程名 )
     J(Jno,Jname)
供应(供应商号,零件号,工程号,供应数量)
     SPJ(Sno,Pno,Jno,Qty)

1. 求供应工程号‘J1’零件的供应商名SNAME。(用IN 子查询)
   结果应该是S-A

SELECT SNAME
FROM S
WHERE SNO IN
(
SELECT SNO
FROM SPJ
WHERE JNO='J1'
)

2. 求供应工程号‘J1’零件的供应商名SNAME。(用连接,  查询结果要消除重复)
   结果应该是S-A

SELECT DISTINCT SNAME
FROM S,SPJ
WHERE S.SNO=SPJ.SNO AND JNO='J1'

3. 求供应工程号‘J1’零件的供应商名SNAME。(EXISTS子查询)
   结果应该是S-A

SELECT SNAME
FROM S
WHERE EXISTS
(
SELECT *
FROM SPJ
WHERE S.SNO=SPJ.SNO AND JNO='J1'
)

4求没有供应过零件的供应商名。(NOT IN)
   结果应是S-C, S-D

SELECT SNAME
FROM S
WHERE SNO NOT IN
(
SELECT SNO
FROM SPJ
WHERE QTY!=0
)

5求没有供应过零件的供应商名。(NOT EXISTS)
   结果应是S-C, S-D

SELECT SNAME
FROM S
WHERE NOT EXISTS
(
SELECT *
FROM SPJ
WHERE S.SNO=SPJ.SNO AND QTY!=0
)

6. 求使用所有零件的工程名JNAME。
  (查询工程中的工程名, 条件是不存在这样的零件, 该工程不用)
结果应该是J-A

SELECT JNAME
FROM J
WHERE NOT EXISTS
(
SELECT *
FROM P
WHERE NOT EXISTS
(
SELECT *
FROM SPJ
WHERE JNO=J.JNO AND PNO=P.PNO
) )

7.求至少用了 工程号‘J2’ 工程所使用所有零件的工程名JNAME。
   (从J中查询JNAME, 条件是不存在这样的零件:  J2使用并且该工程不用)

结果应该是J-A, J-B

SELECT JNAME
FROM J
WHERE NOT EXISTS
(
SELECT *
FROM P
WHERE EXISTS
(
SELECT *
FROM SPJ
WHERE JNO='J2' AND PNO=P.PNO
)
AND
NOT EXISTS
(
SELECT *
FROM SPJ
WHERE JNO=J.JNO AND PNO=P.PNO
)
)

8. 求供应了供应商号为‘S2’所供应所有零件的供应商名SNAME
(查询供应商名,条件是不存在这样的零件:  S2供应并且该供应商不供应)

SELECT SNAME
FROM S
WHERE NOT EXISTS
( SELECT *
FROM P
WHERE EXISTS(
SELECT *
FROM SPJ
WHERE SPJ.SNO='S2'
AND SPJ.PNO=P.PNO
)
AND NOT EXISTS(
SELECT *
FROM SPJ
WHERE SPJ.SNO=S.SNO
AND SPJ.PNO=P.PNO
)
)

9. 查询供应了所有工程的供应商名。
(查询供应商名,条件是不存在这样的工程, 该供应商不供应)

SELECT SNAME
FROM S
WHERE NOT EXISTS
(
SELECT *
FROM J
WHERE NOT EXISTS
(
SELECT *
FROM SPJ
WHERE S.SNO=SNO
AND J.JNO=JNO
)
)

10.    查询没有使用北京供应商供应的’红’色零件的工程名(NOT IN)
结果应该是J-A, J-B,J-C

SELECT JNAME
FROM J
WHERE JNO NOT IN
(
SELECT JNO
FROM SPJ,S,P
WHERE SPJ.SNO=S.SNO AND SPJ.PNO=P.PNO
AND CITY='北京' AND COLOR ='红'
)

11. 查询供应商号,供应商名,工程号,零件号,数量。包括未供应过零件的供应商。

SELECT S.SNO,SNAME,SPJ.JNO,SPJ.PNO,QTY
FROM S,SPJ
WHERE S.SNO *=SPJ.SNO

12 查询供应过颜色为’黑’的零件的供应商名

SELECT SNAME
FROM S,P,SPJ
WHERE S.SNO =SPJ.SNO AND P.PNO=SPJ.PNO AND COLOR='黑'

13查询供应商号,工程号, 供应零件数量合计

SELECT SNO,JNO,sum(QTY)
FROM SPJ
GROUP BY SNO,JNO

额,下面截图中的查询语句写错了。

14,查询工程号,工程名,供应的次数,供应的零件数量合计

SELECT J.JNO,JNAME,COUNT(*),SUM(QTY)
FROM J,SPJ
WHERE J.JNO=SPJ.JNO
GROUP BY J.JNO,JNAME

因为要统计供应次数,要按照供应的对象工程号和工程名来分组。

15查询与供应商名‘S-C’同城市的供应商名

SELECT SNAME
FROM S
WHERE CITY=
(
SELECT CITY
FROM S
WHERE SNAME='S-C'
)

16查询供应过>=3次的供应商名

SELECT SNAME
FROM S
WHERE SNO IN
(
SELECT SNO
FROM SPJ
GROUP BY SNO
HAVING COUNT(*)>=3
)

17. 查询供应次数大于S2供应次数的供应商号

SELECT SNO
FROM SPJ
GROUP BY SNO
HAVING COUNT(*)>
(
SELECT COUNT(*)
FROM SPJ
WHERE SNO='S2'
)

18查询供应给工程号’J2’ 零件数>=10的供应商名

SELECT SNAME
FROM S
WHERE SNO IN
(
SELECT SNO
FROM SPJ
WHERE JNO='J2'
GROUP BY SNO
HAVING SUM(QTY)>=10
)

数据库——SQL-SERVER练习(5) 供应关系的更多相关文章

  1. 数据库SQL Server与C#中数据类型的对应关系

    ylbtech- .NET-Basic:数据库SQL Server与C#中数据类型的对应关系 数据库SQL SServer与C#中数据类型的对应关系 1.A,返回顶部 数据库 C#程序 int int ...

  2. 数据库管理工具神器-DataGrip,可同时管理多个主流数据库[SQL Server,MySQL,Oracle等]连接

    前言 DataGrip:Jet Brains出品的一款数据库管理工具(没错,是Jet Brains出品,必属精品).DataGrip整合集成了当前主流数据库(如:SQL Server, MySQL, ...

  3. sql server ------创建本地数据库 SQL Server 排序规则

    sql server完整复制数据库 sql server导入导出方法 SQL Server 排序规则

  4. 数据库 SQL Server 到 MySQL 迁移方法总结

    最近接手一起老项目数据库 SQL Server 到 MySQL 的迁移.因此迁移前进行了一些调查和总结.下面是一些 SQL Server 到 MySQL 的迁移方法. 1. 使用 SQLyog 迁移 ...

  5. [数据库]SQL Server 用户NT AUTHORITY\IUSR 登录失败

    今天打开网站时,突然报这个错误,平时都好好的 Cannot open database "JMECC" requested by the login. The login fail ...

  6. 数据库SQL Server DAC 导入导出数据到SQL Azure问题

    对Export data-tier application报错的处理 Error:SQL71564 这个问题是数据库中一些对象如MS_Description,MS_DiagramPane1不支持DAC ...

  7. 如何分离数据库 (SQL Server Management Studio)

    在 SQL Server Management Studio 对象资源管理器中,连接到 SQL Server 数据库引擎的实例上,再展开该实例. 展开“数据库”,并选择要分离的用户数据库的名称. 分离 ...

  8. 批量还原数据库 SQL Server 2008

    1.如果你够懒,不想一步一步点路径,一步一步选择 2.如果你连单个备份数据库的存储过程都不想多执行,一般每还原一个需要修改数据库名 下面的脚本适合你: /*********************** ...

  9. 基础知识(C#语法、数据库SQL Server)回顾与总结

    前言 已经有大概一个多月没有更新博客,可能是开始变得有点懒散了吧,有时候想写,但是又需要额外投入更多的时间去学习,感觉精力完全不够用啊,所以为了弥补这一个多月的潜水,决定写一篇,衔接9月未写博客的空缺 ...

  10. 数据库 --> SQL Server 和 Oracle 以及 MySQL 区别

    SQL Server 和 Oracle 以及 MySQL 区别 三者是目前市场占有率最高(依安装量而非收入)的关系数据库,而且很有代表性.排行第四的DB2(属IBM公司),与Oracle的定位和架构非 ...

随机推荐

  1. 3.华为路由交换技术_IP子网划分

    IP地址组成 地址包含两部分:网络号+主机号 比如:深圳市(网络号)宝安区坂田华为基地A10(主机号) 约定黄色部分为网络号. D类地址作为组播,E类地址保留使用(用于研究) 路由器只关心IP地址的网 ...

  2. csp2019后的感慨

    你还记得曾经加入oi的初衷吗? ... 我们都不想输,可谁都没有赢... --前言 没有太大的感想,也不配去写感想...就记录一下初学者失败的原因吧.希望看过的人能引以为戒. 做题的时候,不到万不得已 ...

  3. ubuntu vscode 写一个C++程序

    博客转载:https://blog.csdn.net/weixin_43374723/article/details/84064644 Visual studio code是微软发布的一个运行于 Ma ...

  4. SpringBoot2.0 基础案例(16):配置Actuator组件,实现系统监控

    本文源码 GitHub地址:知了一笑 https://github.com/cicadasmile/spring-boot-base 一.Actuator简介 1.监控组件作用 在生产环境中,需要实时 ...

  5. shell生成指定长度的随机数

    生成指定长度是随机数 # 8位纯数字的随机数 tr -cd '0-9' </dev/urandom | head -c 8 # 16位包含字母.数字的随机数 tr -cd '[:alnum:]' ...

  6. .net core 拦截器的使用

    .net core 拦截器的使用 实例代码:https://gitee.com/D_C_L/InterceptorTest.git 拦截器主要是将程序中的一些可以独立出去的模块进行拦截,比如幕等性,和 ...

  7. ASP.NET Core 2.2 WebApi 系列【八】统一返回格式(返回值、模型验证、异常)

    现阶段,基本上都是前后端分离项目,这样一来,就需要前后端配合,没有统一返回格式,那么对接起来会很麻烦,浪费时间.我们需要把所有接口及异常错误信息都返回一定的Json格式,有利于前端处理,从而提高了工作 ...

  8. PlayJava Day016

    今日所学: /* 2019.08.19开始学习,此为补档. */ 数组 1.一维数组:数据类型[ ] 变量名 = new 数据类型[长度] 获取长度:array.length 在使用下标时确保不超过a ...

  9. 对象流,它们是一对高级流,负责即将java对象与字节之间在读写的过程中进行转换。 * java.io.ObjectOutputStream * java.io.ObjectInputStream

    package seday06; import java.io.Serializable;import java.util.Arrays; /** * @author xingsir * 使用当前类来 ...

  10. Dynamics CRM命令栏定制基础知识及手动编辑customization.xml实例

    关注本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复166或者20151028可方便获取本文,同时可以在第一时间得到我发布的最新的博文信息,follow me! 前面的博文:Dynamics C ...