数据库---[复习2]---数据查询---设有一个SPJ数据库,包括S、P、J及SPJ4个关系模式··· ···
文章目录
- 问题重述
- 数据表
- 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个关系模式:
问题:
- 找出所有供应商的姓名和所在城市
- 找出所有零件的名称,颜色,重量
- 找出使用供应商S1所供应零件的工程号码
- 找出工程项目J2使用的各种零件的名称及数量
- 找出上海厂商供应的所有零件号码
- 找出使用上海产的零件的工程名称
- 找出没有使用天津产的零件的工程号码
- 求供应工程J1零件的不重复的供应商号码sno
- 求供应工程J1零件P1的供应商号码sno
- 求供应工程J1零件为红色的供应商号码sno
附加项:
- 求没有使用天津供应商生产的红色零件的工程号jno
- 求至少用了供应商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个关系模式··· ···相关推荐
- 数据库复习(数据管理系统)
数据库复习 面向老师的话 重点:关系数据库,数据库是什么,跟文件系统相比的优势,面向数据库比的劣势,跟noSQL数据库比的劣势: 数据库:长期存储在计算机内.有组织的.可共享的.大量的数据集合 比较: ...
- 红橙Darren视频笔记 数据库操作优化 数据查询(数据库操作)中
上一节仅仅是做到了有这个功能,这次我们对上一次的代码进行优化 主要有两个方面可以优化 1.利用数据库事务进行优化 我们作如下修改: IDaoSupport增加批量插入接口 // 批量插入数据publi ...
- 数据库作业4——数据查询
3.4 数据查询 3.4.1 单表查询 1 选择表中的若干列 (3)查询经过计算的值 2 选择表中的若干元组 (1)消除取值重复的行 (2)查询满足条件的元组 3 ORDER BY 子句 4. 聚集函 ...
- 数据库实验报告 数据查询
桂 林 理 工 大 学 实 验 报 告 班级软件2班学号3162052051734姓名梁振宇同组实验者 实验名称数据查询日期 2018年 06 月05 日 一.实验目的: 1. 观察查 ...
- 数据库复习——SQL子查询(IN,θsome,Exists子查询)
前言 战神的课实例好多太棒了,推荐,本节关于SQL复杂查询 正文 首先可以根据课程ppt上的图文建立一个SCT数据库,老师上课的内容大部分都用的是这个数据库中的实例,除了手写,可以实际操作敲一敲巩固记 ...
- 按学号和姓名进行查询c语言,数据库实验4 数据查询(答案)
数据库技术与应用实验 实验4 数据查询 实验4 数据查询 学号:18103317 专业:电子信息工程 一.实验内容和步骤 1.在studentsdb数据库中,使用下列SQL语句将输出什么?并说明语句中 ...
- 达梦数据查询编码_从数据库到全栈数据解决方案,达梦不走捷径
"世界上最快的捷径,就是不走捷径."--这句名言在达梦公司二十年的发展历程中体现的淋漓尽致. 四十年前,达梦公司董事长冯裕才还是华中科技大学一名教师,在一次偶然的学习机会中,目睹了 ...
- 数据库——实验二 数据查询
1.实验目的 理解SQL 程序设计基本规范,熟练运用SQL 语言实现数据查询,包括单表查询.分组统计查询和连接查询.嵌套查询合和集合查询. 2.实验内容和要求 针对tpch 数据库或自建数据库test ...
- Android sqlite数据库update之后数据查询数据获取不实时。。。
最近写项目的时候用android自带的数据库SqliteDatabase,使用过程中发生了这样一件事情,我在Activity B中读取数据库表User中的数据,显示在UI上,然后跳转到Activity ...
- python数据库操作nosql_用Python写一个NoSQL数据库
Set Up 下面是我们服务器所需的一些样板代码: """NoSQL database written in Python""" # Sta ...
最新文章
- html 链接 pdf,简单的HTML DOM只解析名称和含有PDF链接链接
- xbox acc驱动win7_Xbox老大:希望第一方工作室能推出更多单机游戏_电竞
- Python使用matplotlib画图,设置曲线颜色、类型及标记
- css 动画使用_如何在CSS中使用动画
- php object oriented,PHP学习记录之面向对象(Object-oriented programming,OOP)基础【接口、抽象类、静态方法等】...
- scala 学习笔记一 列表List
- 2.24 js处理内嵌div滚动条
- 不是方阵有逆矩阵吗_Lecture 3 | 乘法和逆矩阵
- unity3D 移动开发代码优化
- 学习电子书和视频大全
- 第一节计算机课开场白,老师第一节课的开场白
- 计算机网络保密承诺书,保密承诺书集合5篇
- 我用AI生成了这些明星一生的样貌变化 | 已填坑附源码
- linux_Flatpak
- 如何用不到200行代码实现经典小游戏贪吃蛇,附源代码及详细实现思路
- php 获取中英文字符的数量;和JS获取中英文字符的数量
- 一名85后老程序员的真心话
- Jetson TX2 刷机中遇到的奇葩大坑
- 学习Masonry框架 - iOS
- 怎样使input失去焦点