文章目录

  • 问题重述
  • 数据表
    • S表:
    • P表:
    • J表:
    • SPJ表:
  • 问题解析
    • 1. 找出所有供应商的姓名和所在城市
    • 2. 找出所有零件的名称,颜色,重量
    • 3. 找出使用供应商S1所供应零件的工程号码
    • 4. 找出工程项目J2使用的各种零件的名称及数量
    • 5. 找出上海厂商供应的所有零件号码
    • 6. 找出使用上海产的零件的工程名称
    • 7. 找出没有使用天津产的零件的工程号码
    • 8. 求供应工程J1零件的不重复的供应商号码sno
    • 9. 求供应工程J1零件P1的供应商号码sno
    • 10. 求供应工程J1零件为红色的供应商号码sno
  • 附加项
    • 1. 求没有使用天津供应商生产的红色零件的工程号jno
    • 2. 求至少用了供应商S1所供应的全部零件的工程号Jno
  • 附录1:

问题重述

设有一个SPJ数据库,包括S、P、J及SPJ4个关系模式:
问题

  1. 找出所有供应商的姓名和所在城市
  2. 找出所有零件的名称,颜色,重量
  3. 找出使用供应商S1所供应零件的工程号码
  4. 找出工程项目J2使用的各种零件的名称及数量
  5. 找出上海厂商供应的所有零件号码
  6. 找出使用上海产的零件的工程名称
  7. 找出没有使用天津产的零件的工程号码
  8. 求供应工程J1零件的不重复的供应商号码sno
  9. 求供应工程J1零件P1的供应商号码sno
  10. 求供应工程J1零件为红色的供应商号码sno

附加项:

  1. 求没有使用天津供应商生产的红色零件的工程号jno
  2. 求至少用了供应商S1所供应的全部零件的工程号Jno

数据表

S表:

S(SNO,SNAME,STATUS,CITY)
供应商表S由供应商代码(SNO)、供应商姓名(SNAME)、供应商状态(STATUS)、供应商所在城市(CITY)组成。

SNO SNAME STATUS CITY
S1 精益 20 天津
S2 盛锡 10 北京
S3 东方红 30 北京
S4 丰泰盛 20 天津
S5 为民 30 上海

P表:

P(PNO,PNAME,COLOR,WEIGHT)
零件表P由零件代码(PNO)、零件名(PNAME)、颜色(COLOR)、重量(WEIGHT)组成。

PNO PNAME COLOR WEIGHT
P1 螺母 12
P2 螺栓 绿 17
P3 螺丝刀 14
P4 螺丝刀 14
P5 凸轮 40
P6 齿轮 30

J表:

J(JNO,JNAME,CITY)
工程项目表J由工程项目代码(JNO)、工程项目名(JNAME)、工程项目所在城市(CITY)组成。

JNO JNAME CITY
J1 三建 北京
J2 一汽 长春
J3 弹簧厂 天津
J4 造船厂 天津
J5 机车厂 唐山
J6 无线电厂 常州
J7 半导体厂 南京

SPJ表:

SPJ(SNO,PNO,JNO,QTY)
供应商情况表SPJ由供应商代码(SNO)、零件代码(PNO)、工程项目代码(JNO)、供应数量(QTY)组成,表示某供应商供应某种零件给某工程项目的数量为QTY。

SNO PNO JNO QTY
S1 P1 J1 200
S1 P1 J3 100
S1 P1 J4 700
S1 P2 J4 700
S1 P2 J2 100
S2 P3 J1 400
S2 P3 J2 200
S2 P3 J4 500
S2 P3 J5 400
S2 P5 J1 400
S2 P5 J2 100
S3 P1 J1 200
S3 P3 J1 200
S4 P5 J1 100
S4 P6 J3 300
S4 P6 J4 200
S5 P2 J4 100
S5 P3 J1 200
S5 P6 J2 200
S5 P6 J4 500

创建及插入数据表的SQL语句在文末附录1

问题解析

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 SPJ.PNO=P.PNO AND SPJ.JNO='J2';

运行结果:

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

SELECT PNO
FROM S,SPJ
WHERE SPJ.SNO=S.SNO AND S.CITY = '上海';

运行结果:

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

SELECT JNO
FROM SNO,PNO
WHERE S.SNO=SPJ.SNO AND S.CITY = '上海';
或
SELECT JNO
FROM J
WHERE JNO IN (SELECT JNO
FROM S,SPJ
WHERE S.SNO=SPJ.SNO AND S.CITY = '上海');

运行结果:

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

SELECT JNO
FROM J
WHERE JNO NOT IN(SELECT JNO
FROM  SPJ,S
WHERE S.SNO=SPJ.SNO AND S.CITY='天津');

运行结果:

8. 求供应工程J1零件的不重复的供应商号码sno

SELECT  DISTINCT SNO
FROM SPJ
WHERE SPJ.JNO = 'J1' ;

运行结果:

9. 求供应工程J1零件P1的供应商号码sno

SELECT SNO
FROM SPJ
WHERE SPJ.JNO='J1' AND SPJ.PNO = 'P1';

运行结果:

10. 求供应工程J1零件为红色的供应商号码sno

SELECT SNO
FROM P,SPJ
WHERE SPJ.PNO=P.PNO AND SPJ.JNO = 'J1' AND P.COLOR='红';

运行结果:

附加项

1. 求没有使用天津供应商生产的红色零件的工程号jno

SELECT JNO
FROM J
WHERE JNO NOT IN (SELECT JNO
FROM P,SPJ,S
WHERE SPJ.SNO=S.SNO AND SPJ.PNO=P.PNO AND S.CITY='天津' AND P.COLOR = '红 ' ;

运行结果:

2. 求至少用了供应商S1所供应的全部零件的工程号Jno

此题中用到了EXISTS谓词的子查询,可查看带有EXISTS谓词的子查询—查询语句中含有‘至少’条件的查询文章。

SELECT DISTINCT JNO
FROM J
WHERE NOT EXISTS(
SELECT *
FROM SPJ SPJY
WHERE SPJY.SNO = 'S1' AND NOT EXISTS(
SELECT *
FROM SPJ SPJZ
WHERE J.JNO = SPJZ.JNO AND
SPJZ.PNO = SPJY.PNO
AND SPJZ.SNO = 'S1'
) );

运行结果:

附录1:

/*建立S表*/
CREATE TABLE S(SNO CHAR(9) PRIMARY KEY,
SNAME CHAR(24) UNIQUE,
STATUS INT(4),
CITY CHAR(16));/*P表*/
CREATE TABLE P(PNO CHAR(9) PRIMARY KEY,
PNAME CHAR(24),
COLOR CHAR(8),
WEIGHT INT(4));/*J表*/
CREATE TABLE J(JNO CHAR(9) PRIMARY KEY,
JNAME CHAR(24),
CITY CHAR(16));/*spj表*/
CREATE TABLE SPJ(SNO CHAR(9),
PNO CHAR(9),
JNO CHAR(9),
QTY INT(6),
PRIMARY KEY(SNO,PNO,JNO),
FOREIGN KEY(SNO) REFERENCES S(SNO),
FOREIGN KEY(PNO) REFERENCES P(PNO),
FOREIGN KEY(JNO) REFERENCES J(JNO));/*S表添加数据*/
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,'上海');SELECT * FROM S;/*P表添加数据*/
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);SELECT * FROM P;
/*J表添加数据*/
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','半导体厂','南京');
SSSSSS
SELECT * FROM J;
/*SPJ表添加数据*/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', '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);
INSERT INTO SPJ VALUES('S1', 'P2', 'J4',700);SELECT * FROM SPJ;

此文为期末MYSQL查询语句复习题,祝大家期末考出个好成绩。goodbye!

END!

数据库---[复习2]---数据查询---设有一个SPJ数据库,包括S、P、J及SPJ4个关系模式··· ···相关推荐

  1. 数据库复习(数据管理系统)

    数据库复习 面向老师的话 重点:关系数据库,数据库是什么,跟文件系统相比的优势,面向数据库比的劣势,跟noSQL数据库比的劣势: 数据库:长期存储在计算机内.有组织的.可共享的.大量的数据集合 比较: ...

  2. 红橙Darren视频笔记 数据库操作优化 数据查询(数据库操作)中

    上一节仅仅是做到了有这个功能,这次我们对上一次的代码进行优化 主要有两个方面可以优化 1.利用数据库事务进行优化 我们作如下修改: IDaoSupport增加批量插入接口 // 批量插入数据publi ...

  3. 数据库作业4——数据查询

    3.4 数据查询 3.4.1 单表查询 1 选择表中的若干列 (3)查询经过计算的值 2 选择表中的若干元组 (1)消除取值重复的行 (2)查询满足条件的元组 3 ORDER BY 子句 4. 聚集函 ...

  4. 数据库实验报告 数据查询

    桂 林 理 工 大 学 实  验  报  告 班级软件2班学号3162052051734姓名梁振宇同组实验者 实验名称数据查询日期 2018年 06 月05 日 一.实验目的: 1.      观察查 ...

  5. 数据库复习——SQL子查询(IN,θsome,Exists子查询)

    前言 战神的课实例好多太棒了,推荐,本节关于SQL复杂查询 正文 首先可以根据课程ppt上的图文建立一个SCT数据库,老师上课的内容大部分都用的是这个数据库中的实例,除了手写,可以实际操作敲一敲巩固记 ...

  6. 按学号和姓名进行查询c语言,数据库实验4 数据查询(答案)

    数据库技术与应用实验 实验4 数据查询 实验4 数据查询 学号:18103317 专业:电子信息工程 一.实验内容和步骤 1.在studentsdb数据库中,使用下列SQL语句将输出什么?并说明语句中 ...

  7. 达梦数据查询编码_从数据库到全栈数据解决方案,达梦不走捷径

    "世界上最快的捷径,就是不走捷径."--这句名言在达梦公司二十年的发展历程中体现的淋漓尽致. 四十年前,达梦公司董事长冯裕才还是华中科技大学一名教师,在一次偶然的学习机会中,目睹了 ...

  8. 数据库——实验二 数据查询

    1.实验目的 理解SQL 程序设计基本规范,熟练运用SQL 语言实现数据查询,包括单表查询.分组统计查询和连接查询.嵌套查询合和集合查询. 2.实验内容和要求 针对tpch 数据库或自建数据库test ...

  9. Android sqlite数据库update之后数据查询数据获取不实时。。。

    最近写项目的时候用android自带的数据库SqliteDatabase,使用过程中发生了这样一件事情,我在Activity B中读取数据库表User中的数据,显示在UI上,然后跳转到Activity ...

  10. python数据库操作nosql_用Python写一个NoSQL数据库

    Set Up 下面是我们服务器所需的一些样板代码: """NoSQL database written in Python""" # Sta ...

最新文章

  1. html 链接 pdf,简单的HTML DOM只解析名称和含有PDF链接链接
  2. xbox acc驱动win7_Xbox老大:希望第一方工作室能推出更多单机游戏_电竞
  3. Python使用matplotlib画图,设置曲线颜色、类型及标记
  4. css 动画使用_如何在CSS中使用动画
  5. php object oriented,PHP学习记录之面向对象(Object-oriented programming,OOP)基础【接口、抽象类、静态方法等】...
  6. scala 学习笔记一 列表List
  7. 2.24 js处理内嵌div滚动条
  8. 不是方阵有逆矩阵吗_Lecture 3 | 乘法和逆矩阵
  9. unity3D 移动开发代码优化
  10. 学习电子书和视频大全
  11. 第一节计算机课开场白,老师第一节课的开场白
  12. 计算机网络保密承诺书,保密承诺书集合5篇
  13. 我用AI生成了这些明星一生的样貌变化 | 已填坑附源码
  14. linux_Flatpak
  15. 如何用不到200行代码实现经典小游戏贪吃蛇,附源代码及详细实现思路
  16. php 获取中英文字符的数量;和JS获取中英文字符的数量
  17. 一名85后老程序员的真心话
  18. Jetson TX2 刷机中遇到的奇葩大坑
  19. 学习Masonry框架 - iOS
  20. 怎样使input失去焦点

热门文章

  1. 台式计算机连不上网怎么办,台式电脑插了网卡连不上网怎么办?几个方面介绍及解决方法...
  2. 【源起Netty 正传】升级版卡车——ByteBuf
  3. 不伤虫蚁,使虫蚁远离的方法
  4. CTF-隐写术(三)
  5. 邮件服务器没有MX类型,mx记录和邮件服务器的关系究竟是什么?
  6. β冲刺第二周第二次例会报告
  7. 儿童学习与发展指南《倾听与表达》篇
  8. win10 高分屏显示模糊的解决办法
  9. Autovue 问答
  10. 软工网络15团队作业9——项目验收与总结