第三章课后题

article/2025/11/6 5:45:52

3.有两个关系S(A,B,C,D)和T(C,D,E,F),写出与下列等价的SQL表达式。
(1) σ A = 10 ( S ) \sigma_{A=10}(S) σA=10(S)

对行的选择,列全部显示。

SELECT *
FROM S
WHERE A=10;

(2) Π A , B ( S ) \Pi_{A,B}(S) ΠA,B(S)

对列的选择。

SELECT DISTINCT A,B
FROM S;

(3) S ⋈ T S \Join T ST

自然连接,等值连接的基础上再去掉重复元组和重复列。

SELECT DISTINCT A,B,S.C,S.D,E,F
FROM S,T
WHERE S.C=T.C AND S.D=T.D;

(4) S ⋈ S . C = T . C T S \underset{S.C=T.C} \Join T SS.C=T.CT

SELECT *
FROM S,T
WHERE S.C=T.C;

(5) S ⋈ A < E T S \underset{A<E} \Join T SA<ET

SELECT *
FROM S,T
WHERE A<E;

(6) Π C , D ( S ) × T \Pi_{C,D}(S) \times T ΠC,D(S)×T

SELECT S.C,S.D,T.*
FROM S,T;

表示笛卡尔积,就去掉WHERE条件语句。

4.用SQL语句建立2.6中的四个表,针对建立的4个表,完成2.6中的查询。
S(SNO,SNAME,STATUS,CITY)
P(PNO,PNAME,COLOR,WEIGHT)
J(JNO,JNAME,CITY)
SPJ(SNO,PNO,JNO,QTY)

表SPJ中主码为SNO,PNO,JNO,这三者又分别为外码,参照于S,P,J表。

建表:

CREATE TABLE S
(SNO VARCHAR(5) PRIMARY KEY,
SNAME VARCHAR(10) UNIQUE,
STATUS INT NOT NULL,
CITY VARCHAR(10) NOT NULL);CREATE TABLE P
(PNO VARCHAR(5) PRIMARY KEY,
PNAME VARCHAR(10) NOT NULL,
COLOR VARCHAR(5) NOT NULL,
WEIGHT INT NOT NULL);CREATE TABLE J
(JNO VARCHAR(5) PRIMARY KEY,
JNAME VARCHAR(10) UNIQUE,
CITY VARCHAR(10) NOT NULL);CREATE TABLE SPJ
(SNO VARCHAR(5) NOT NULL,
PNO VARCHAR(5) NOT NULL,
JNO VARCHAR(5) NOT NULL,
QTY INT NOT NULL
PRIMARY KEY(SNO,PNO,JNO),
FOREIGN KEY(SNO) REFERENCES S(SNO),
FOREIGN KEY(PNO) REFERENCES P(PNO),
FOREIGN KEY(JNO) REFERENCES J(JNO)
);

插入数据:

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);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','半导体厂','南京');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','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);

在这里插入图片描述
在这里插入图片描述
(1)求供应工程J1零件的供应商号码SNO。

SELECT SNO
FROM SPJ
WHERE JNO='J1';

在这里插入图片描述 在这里插入图片描述
(2)求供应工程J1零件P1的供应商号码SNO。

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

在这里插入图片描述
(3)求供应工程J1零件为红色的供应商号码SNO。

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

在这里插入图片描述
(4)求没有使用天津供应商生产的红色零件的工程号JNO。

SELECT DISTINCT JNO
FROM SPJ
WHERE JNO NOT IN(SELECT JNOFROM SPJ,S,PWHERE  S.SNO=SPJ.SNO AND P.PNO=SPJ.PNOAND CITY='天津'  AND COLOR='红'); 

子查询结果如图:
在这里插入图片描述
该题结果为:
在这里插入图片描述
(5)求至少用了供应商S1所供应的全部零件的工程号JNO。

等价转换:没有一个S1供应的零件是该工程没有用到的。

SELECT DISTINCT JNO
FROM SPJ SPJ1
WHERE NOT EXISTS(SELECT *FROM SPJ SPJ2WHERE SPJ2.SNO='S1'AND NOT EXISTS(SELECT *FROM SPJ SPJ3WHERE JNO = SPJ1.JNOAND PNO = SPJ2.PNO));

这个题不太确定,运行出来的结果是J4,感觉不太对,看表里面没有工程是完全使用S1供应的P1和P2的。

5.针对4题中的表做如下问题。

供应商表S(SNO,SNAME,STATUS,CITY)
零件表P(PNO,PNAME,COLOR,WEIGHT)
工程项目表J(JNO,JNAME,CITY)
供应表SPJ(SNO,PNO,JNO,QTY)

(1)找出所有供应商的姓名和所在城市

SELECT SNAME,CITY
FROM S;

(2)找出所有零件的名称,颜色,重量

SELECT PNAME,COLOR,WEIGHT
FROM P;

(3)找出所有供应商S1所供应零件的工程号码JNO

SELECT JNO
FROM SPJ
WHERE SNO='S1';

(4)找出所有工程项目J2使用的各种零件的名称和数量

SELECT PNAME,QTY
FROM P,SPJ
WHERE JNO='J2' AND P.PNO=SPJ.PNO;

在这里插入图片描述

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

用S,SPJ表

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

在这里插入图片描述在这里插入图片描述

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

上海产的零件如(5)所示,将(5)中的语句作为子查询即可。

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

在这里插入图片描述
在这里插入图片描述
(7)找出没有使用天津产的零件的工程号码


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

子查询结果:
在这里插入图片描述
该题结果:
在这里插入图片描述

(8)把全部红色零件的颜色改为蓝色

改数据用UPDATE,该表用ALTER!!!

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 SPJ
WHERE SNO='S2';DELETE 
FROM S
WHERE SNO='S2';

这里需要先删掉SPJ表中的相应记录,在删S表中的,因为SPJ中的SNO是外码,先删S表中的,无法删除。
在这里插入图片描述
(11)请将(S2,J6,P4,200)插入供应情况关系中。

INSERT INTO SPJ
VALUES('S2','J6','P4',200);

9.为三建工程项目建立一个供应情况的视图,包括SNO,PNO,QTY.

CREATE VIEW SAN_JIAN
AS SELECT SNO,PNO,QTYFROM SPJ,JWHERE SPJ.JNO=J.JNO AND JNAME='三建';

在这里插入图片描述

(1)找出三建项目使用的各种零件代码PNO和其数量。

SELECT DISTINCT PNO,QTY
FROM SAN_JIAN;

(2)找出供应商S1的供应情况。

SELECT *
FROM SAN_JIAN
WHERE SNO='S1';

做下来,感觉题都还可以,第四题的(5)有些难,还是有些反应不过来,做出来的情况感觉也不太对,也比较耗时。


http://chatgpt.dhexx.cn/article/yso4B1LN.shtml

相关文章

SQL 数据库上机实验(查询操作)

大二数据库上机实验 实验一实验二 实验一 实验步骤&#xff1a; 1&#xff1a;创建数据库“shiyan2”&#xff1b; 2&#xff1a;创建数据表’s’,’p’,’j’&#xff1b; 3&#xff1a;创建数据表’spj’并设定’sno’,’pno’,’jno’三列为外键&#xff0c;分别关联于s表的…

实验3 SQL的复杂多表查询以及视图

第1关 查询所有“红色”的15公斤及以上的零件名 任务描述 查询所有“红色”的15公斤及以上的零件名 相关知识 零件表P由零件代码&#xff08;PNO&#xff09;、零件名(PNAME)、颜色(COLOR)、重量(WEIGHT)组成&#xff1b; P表如下图&#xff1a; 现已构建P表&#xff0c;结构信…

【系统分析师之路】第十五章 复盘数据库系统(关系数据库应用)

【系统分析师之路】第十五章 复盘数据库系统&#xff08;关系数据库应用&#xff09; 复盘数据库系统—关系数据库应用 【系统分析师之路】第十五章 复盘数据库系统&#xff08;关系数据库应用&#xff09;前言部分 历年真题考点分析1&#xff09;考点分析2&#xff09;重要知识…

数据库系统概论练习3

一、填空题 能够唯一标识实体的属性或属性组称为____实体的码______。如果两个关系没有公共属性&#xff0c;则其自然联接操作与____笛卡尔积_____操作等价。SQL中聚合函数“COUNT&#xff08;*&#xff09;”的功能是___统计元组个数________。关系模式如果为1NF&#xff0c;则…

数据库第七周作业——第三章课后习题

3.有两个关系S&#xff08;A,B,C,D&#xff09;和T&#xff08;C,D,E,F&#xff09;,写出与下列查询等价的SQL表达式&#xff1a; (1&#xff09;σ A10(S&#xff09; SELECT * FROM S WHERE A10;(2&#xff09;π A , B ( S ) SELECT A,B FROM S;(3&#xff09;S ⋈ T SEL…

第三章作业【数据库原理】

第二章作业【数据库原理】 前言推荐第三章作业第3章第1题简答题第3章第2题&#xff08;关系代数->SQL代码&#xff09;第3章第3题&#xff08;创建SPJ数据库中的四张表&#xff09;模拟数据第3章第4题&#xff08;SPJ数据库上完成查询&#xff09;第3章第5题&#xff08;SPJ…

设有一个工程供应数据库系统,包括如下四个关系模式:S(Sno,Sname, Status,City) ;P(Pno,Pname,Color ,Weight);J(Jno,Jname, Ci

设有一个工程供应数据库系统&#xff0c;包括如下四个关系模式&#xff1a; S(Sno&#xff0c;Sname&#xff0c; Status&#xff0c;City) &#xff1b; P(Pno&#xff0c;Pname&#xff0c;Color &#xff0c;Weight)&#xff1b; J(Jno&#xff0c;Jname&#xff0c; City) …

高通WLAN框架学习(17)-- NIO和PNO

本章详细介绍了preferred network offload (PNO)扫描概述、流、模式和配置文件。 18.1 PNO扫描概述 WLAN STA在通过AP模组连接AP之前,需要偶尔对环境进行扫描。 在WLAN请求程序中对扫描结果进行解析和处理,以确定是否至少有一个目标(附近)AP在附近。 为了偶尔发出扫描,应用…

Wi-Fi PNO扫描流程(Android P)

简介&#xff1a;当手机灭屏情况下&#xff0c;有保存网络时&#xff0c;若已连接&#xff0c;不扫描&#xff0c;否则&#xff0c;PNO扫描&#xff0c;即只扫描已保存的网络。最小间隔min20s&#xff0c;最大间隔max20s*360s PNO 即Preferred Network Offload&#xff0c;用于…

[RK3288][Android6.0] WiFi之PNO功能了解

Platform: Rockchip OS: Android 6.0 Kernel: 3.10.92 概念: PNO 即Preferred Network Offload,用于系统在休眠的时候连接WiFi 此功能是在Android3.1加入的 缺陷: 在使用PNO时,有潜在泄露个人隐私的风险。这里没明白,意思是说PNO会发送之前的连接过的网络给AP,然…

二值化的方法

1.二值化 图像二值化的目的是最大限度的将图像中感兴趣部分保留下来&#xff0c;在很多情况下&#xff0c;也是进行图像分析、特征提取与模式识别之前的必要的图像预处理过程。在这些庞大的图像二值化分类方法中&#xff0c;基于直方图的全局二值算法占有了绝对的市场份额&…

OpenCV-Python学习(10)—— OpenCV 图像二值化处理(cv.threshold)

1. 学习目标 理解图像的分类&#xff0c;不同类型的图像的区别&#xff1b;对图像进行二值化处理&#xff0c;对【 cv.threshold 】函数的理解。 2. 图像分类 2.1 不同类型图像说明 按照颜色对图像进行分类&#xff0c;可以分为二值图像、灰度图像和彩色图像。 二值图像&…

python 图像二值化处理

python 图像二值化处理 import os from PIL import Image import shutilfile_path ./5-crack919/mask/ save_path ./5-crack919/mask01/ if not os.path.exists(save_path):os.makedirs(save_path) ###二值化 for filename in os.listdir(file_path):print(filename)img …

图像处理之二值化图像

图像二值化就是将图像上的像素点的灰度值设置为0或255&#xff0c;也就是将整个图像呈现出明显的黑白效果。将所有灰度大于或等于阈值的像素被判定为属于特定物体&#xff0c;其灰度值为255表示&#xff0c;否则这些像素点被排除在物体区域以外&#xff0c;灰度值为0&#xff0…

二值化之阈值处理

写于开头的废话&#xff1a;哒哒哒.......这应该是马蹄的声音&#xff01;我在告诉你&#xff0c;我又来了&#xff01;不得不说的还是自己的悲伤&#xff0c;经营了那么久的CSDN居然说关就给我关了&#xff0c;过去的还是没法过去&#xff0c;我始终不能从失去的痛苦之中走出来…

图像处理之二值化

图像处理之二值化 二值化方式 二值化算法 二值化方式 二值化方式分为五种&#xff1a; THRESH_BINARY&#xff1a;将大于某一个阈值的变成最大值&#xff0c;其他为0 THRESH_BINARY_INV&#xff1a;和THRESH_BINARY恰好相反 THRESH_TRUNC&#xff1a; trunc就是截断的意思&…

二值化方法

一、全局阈值法 1.固定阈值方法 该方法是对于输入图像中的所有像素点统一使用同一个固定阈值。其基本思想如下: 其中&#xff0c;T为全局阈值。 缺点:很难为不同的输入图像确定最佳阈值。 2.Otsu算法 Otsu算法又称最大类间方差法 先明确两个概念: (1)均值 (2)方差 图像的阈…

图像处理一之-摄像头二值化处理-(什么是二值化)

图像二值化 binary image 什么是二值化&#xff1a; 二值化是图像分割的一种最简单的方法。二值化可以把灰度图像转换成二值图像。把大于某个临界灰度值(阈值)的像素灰度设为灰度极大值(255)&#xff0c;把小于这个值的像素灰度设为灰度极小值&#xff08;0&#xff09;&#…

C#多线程详解(一) Thread.Join()的详解

什么是进程&#xff1f; 当一个程序开始运行时&#xff0c;它就是一个进程&#xff0c;进程包括运行中的程序和程序所使用到的内存和系统资源。 而一个进程又是由多个线程所组成的。 什么是线程&#xff1f; 线程是程序中的一个执行流&#xff0c;每个线程都有自己的专有寄存器…

1.java的协程_虚拟线程

盼过了春天盼秋天&#xff0c;从2017年到今天五年了&#xff0c;终于盼到loom转正了&#xff0c;当看到jdk19预览api的时候心情那个激动。。。期待已久的协程终于来临&#xff0c;再也不羡慕别人家的go孩子&#xff0c;咱终于可以理直气壮的说一句&#xff1a;咱也有&#xff0…