【数据库作业10】用SQL语句来表示关系代数中的表达式

article/2025/11/9 1:34:31

1、有两个关系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 A,B
from S;

(3) S ⋈ T S \bowtie T ST

//自然连接
select S.*,T.*
from S,T;

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

//等值连接
select S.*,T.*
from S,T
where S.C=T.C;

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

//非等值连接
select S.*,T.*
from S,T
where A<E;

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

//S在cd上的投影与T的笛卡尔积
//方法一:
select C,D
from S
union 
select *
from T;
//方法二:
select S.C,S.D,T.*
from S,T

2、用SQL语句建立以下的4个表;针对建立的4个表用SQL完成第二章习题6中的查询。在这里插入图片描述
S表:

create table S(sno char(10),sname char(10),status smallint,city char(10));
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,'上海');

P表:

create table P(pno char(10),pname char(10),color char(10),weight smallint);
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);

J表:

create table J(jno char(10),jname char(10),city char(10));
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','半导体厂','南京');

SPJ:


CREATE TABLE SPJ(SNO CHAR(4),PNO CHAR(4),JNO CHAR(4),QTY SMALLINT);
INSERT INTO SPJ(SNO,PNO,JNO,QTY) VALUES('S1','P1','J1',200);
INSERT INTO SPJ(SNO,PNO,JNO,QTY) VALUES('S1','P1','J3',100);
INSERT INTO SPJ(SNO,PNO,JNO,QTY) VALUES('S1','P1','J4',700);
INSERT INTO SPJ(SNO,PNO,JNO,QTY) VALUES('S1','P2','J2',100);
INSERT INTO SPJ(SNO,PNO,JNO,QTY) VALUES('S2','P3','J1',400);
INSERT INTO SPJ(SNO,PNO,JNO,QTY) VALUES('S2','P3','J2',200);
INSERT INTO SPJ(SNO,PNO,JNO,QTY) VALUES('S2','P3','J4',500);
INSERT INTO SPJ(SNO,PNO,JNO,QTY) VALUES('S2','P3','J5',400);
INSERT INTO SPJ(SNO,PNO,JNO,QTY) VALUES('S2','P5','J1',400);
INSERT INTO SPJ(SNO,PNO,JNO,QTY) VALUES('S2','P5','J2',100);
INSERT INTO SPJ(SNO,PNO,JNO,QTY) VALUES('S3','P1','J1',200);
INSERT INTO SPJ(SNO,PNO,JNO,QTY) VALUES('S3','P3','J1',200);
INSERT INTO SPJ(SNO,PNO,JNO,QTY) VALUES('S4','P5','J1',100);
INSERT INTO SPJ(SNO,PNO,JNO,QTY) VALUES('S4','P6','J3',300);
INSERT INTO SPJ(SNO,PNO,JNO,QTY) VALUES('S4','P6','J4',200);
INSERT INTO SPJ(SNO,PNO,JNO,QTY) VALUES('S5','P2','J4',100);
INSERT INTO SPJ(SNO,PNO,JNO,QTY) VALUES('S5','P3','J1',200);
INSERT INTO SPJ(SNO,PNO,JNO,QTY) VALUES('S5','P6','J2',200);
INSERT INTO SPJ(SNO,PNO,JNO,QTY) 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 jno='j1' and p.pno=spj.pno and color='红';

在这里插入图片描述

(4)求没有使用天津供应商生产的红色零件的工程号JNO;

select jno
from j
where not exists(
select * 
from spj,s,p
where s.city='天津' and p.color='红' 
and spj.jno=j.jno and spj.pno=p.pno);

在这里插入图片描述

(5)求至少用了供应商S1所供应的全部零件的工程号JNO。

select distinct jno
from spj x
where not exists(select *from spj ywhere y.sno='s1'and not exists(select *from spj zwhere z.pno=y.pno and z.jno= x.jno)
);

在这里插入图片描述
3、针对习题4中的4个表使用SQL完成以下各项操作:
(1)找出所有供应商的姓名和所在城市;

select jname,city
from j;

在这里插入图片描述

(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 jno='j2' and spj.pno=p.pno;

在这里插入图片描述

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

select distinct pno
from spj,s
where city='上海' and spj.sno=s.sno;

在这里插入图片描述
(6)找出使用上海产的零件的工程项目;

select distinct jname
from spj,s,j
where s.sno=spj.sno 
and s.city='上海'
and j.jno=spj.jno;

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

select jno
from j
where not exists(select *from spj,swhere spj.jno=j.jnoand spj.sno=s.snoand s.city='天津');

在这里插入图片描述
(8)把全部红色零件的颜色改成蓝色;

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';

(11)请将(S2,J6,P4,200)插入供应情况关系;

insert into spj
values('s2','p4','j6',200);

4、请为三建工程项目建立一个供应情况的视图,包括供应商代码(SNO)、零件代码(PNO)、供应商数量(QTY)。针对该视图完成下列查询:

create view view_s
as
select sno,pno,qty
from spj
where jno=(select jnofrom jwhere jname='三建');

(1)找出三建工程项目使用的各种零件代码及其数量;

select pno,qty
from view_s

在这里插入图片描述
(2)找出供应商S1的供应情况;

select *
from view_s
where sno='s1'

在这里插入图片描述


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

相关文章

① 数据库介绍 及 关系型数据库的关系代数表达式

查看专栏更多内容&#xff1a; ① 数据库介绍 及 关系型数据库的关系代数表达式 ② 关系数据库标准语言SQL 数据定义&#xff08;创建、修改基本表&#xff09;、数据更新&#xff08;增删改&#xff09; ③ 关系数据库标准语言SQL 数据查询&#xff08;SELECT&#xff09; …

关系代数表达式优化步骤

关系代数表达式优化步骤 本篇主要讲解怎么画查询语法树并对其优化&#xff0c;因为我在学关系代数的语法树的时候&#xff0c;在网上找不到比较详细的教法或者技巧&#xff0c;最后通过答案反推原理&#xff0c;所以想写一篇技巧来描述一下这类题的解题方法。 先上书内讲解 …

关系代数表达式学习

一、关系代数的9种操作&#xff1a; 关系代数中包括了&#xff1a;并、交、差、乘、选择、投影、联接、除、自然联接等操作。 五个基本操作&#xff1a; 并(∪)、差(-)、笛卡尔积()、投影(π)、选择(σ) 四个组合操作&#xff1a; 交(∩)、联接(等值联接)、自然联接(RS)、除法(…

数据库考点之关系代数表达

如题&#xff1a;2018年4月 分析&#xff1a;有难度&#xff0c;书上没有明确介绍元组关系演算&#xff0c;所以也有些超纲了。只能作为扩展部分来了解下&#xff1a; 就看懂了前面的部分为广义笛卡尔积定义。 关系代数这部分虽然在2019年10月14日《软考考点之数据库关系运算…

数据库应用之关系代数(relational algebra)

关系代数表达式的五个基本算子 1.选择&#xff08;selection&#xff09;&#xff1a;即选择某些行。代码&#xff1a;select from where。表达式&#xff1a;σ<条件>&#xff08;<表>&#xff09;。 2.投影&#xff08;projection&#xff09;&#xff1a;即…

Linux压缩打包命令——tar、zip、unzip

打包跟压缩的区别&#xff1a; 打包是指将多个文件或者目录放在一起&#xff0c;形成一个总的包&#xff0c;这样便于保存和传输&#xff0c;但是大小是没有变化的&#xff0c;压缩是指将一个或者多个大文件或者目录通过压缩算法使文件的体积变小以达到压缩的目的&#xff0c;…

linux tar压缩文件命令,tar打包压缩文件命令

tar命令 tar命令用于将多个文件合成1个文件,wiki中把这个命令和cpio、shar等一起叫做archive文件,个人理解是归档,合成一个文件,后就可以用gzip、bz2、xz等工具进行压缩,同时也能方便在各个计算机间传输,有点类似windows下共享的zip文件。 wiki上这个图比较形象,tar把零…

解压缩 tar命令详解

1、 tar命令进行文档的归档和压缩 归档和压缩文件 归档和压缩文件的好处&#xff1a;节约硬盘的资源&#xff0c;加快文件传输速率 tar命令 作用&#xff1a;打包、压缩文件&#xff1b;tar文件是把几个文件和&#xff08;或&#xff09;目录集合在一个文件里&#xff0c;该存…

使用sobel、prewitt、拉普拉斯算子、差分法提取图像的边缘

参考&#xff1a; https://www.cnblogs.com/dengdan890730/p/6145585.html https://blog.csdn.net/touch_dream/article/details/62447801 https://blog.csdn.net/xiahn1a/article/details/42141429 https://blog.csdn.net/swj110119/article/details/51777422 什么是边缘…

图像边缘检测——一阶微分算子 Roberts、Sobel、Prewitt、Kirsch、Robinson(Matlab实现)

图像边缘一般指图像的灰度变化率最大的位置。成因主要如下&#xff1a; 1.图像灰度在表面法向变化不连续&#xff1b; 2.图像中物体在空间上的深度不一致&#xff1b; 3.在光滑的表面上颜色不一致&#xff1b; 4.图像中物体的光影 边缘检测指的是从图像中检测边缘点和边缘段…

python图像处理(十一)——图像锐化与边缘检测之Roberts算子、Prewitt算子、Sobel算子、Laplacian算子

在图像增强过程中&#xff0c;通常利用各类图像平滑算法消除噪声&#xff0c;图像的常见噪声主要有加性噪声、乘性噪声和量化噪声等。一般来说&#xff0c;图像的能量主要集中在其低频部分&#xff0c;噪声所在的频段主要在高频段&#xff0c;同时图像边缘信息也主要集中在其高…

机器学习MATLAB实现:Matlab-梯度Roberts算子、拉普拉斯算子、Sobel算子、Prewitt算子对图像进行锐化

机器学习MATLAB实现&#xff1a;Matlab-梯度Roberts算子、拉普拉斯算子、Sobel算子、Prewitt算子对图像进行锐化 欢迎大家来到安静到无声的《模式识别与人工智能&#xff08;程序与算法&#xff09;》&#xff0c;如果对所写内容感兴趣请看模式识别与人工智能&#xff08;程序与…

10.1 Python图像处理之边缘算子-Sobel算子、Roberts算子、拉普拉斯算子、Canny算子、Prewitt算子、高斯拉普拉斯算子

10.1 Python图像处理之边缘算子-Sobel算子、Roberts算子、拉普拉斯算子、Canny算子、Prewitt算子、高斯拉普拉斯算子 文章目录 10.1 Python图像处理之边缘算子-Sobel算子、Roberts算子、拉普拉斯算子、Canny算子、Prewitt算子、高斯拉普拉斯算子1 算法原理1.1 Sobel 算子1.2 Ro…

【计算机视觉】卷积、均值滤波、高斯滤波、Sobel算子、Prewitt算子(Python实现)

##1.环境的搭建 Python 3.6OpenCV Open Source Computer Vision Library.OpenCV于1999年由Intel建立&#xff0c;如今由Willow Garage提供支持。OpenCV是一个基于BSD许可&#xff08;开源&#xff09;发行的跨平台计算机视觉库&#xff0c;可以运行在Linux、Windows、MacOS操作…

几种边缘检测算子的比较Roberts,Sobel,Prewitt,LOG,Canny

from&#xff1a;https://blog.csdn.net/gdut2015go/article/details/46779251 边缘检测是图像处理和计算机视觉中的基本问题&#xff0c;边缘检测的目的是标识数字图像中亮度变化明显的点。图像属性中的显著变化通常反映了属性的重要事件和变化。这些包括&#xff1a;深度上的…

prewitt算子实现

原理&#xff1a; 实现&#xff1a; /*** description: prewitt算子* param src 输入图像* param dst 输出图像*/ void prewitt(cv::Mat& src, cv::Mat& dst) {cv::Mat getPrewitt_horizontal (cv::Mat_<float>(3, 3) << -1, -1, -1, 0, 0, 0, 1, 1, …

数字图像处理——Sobel算子锐化、Prewitt算子锐化

数字图像处理——Sobel算子锐化、Prewitt算子锐化 一、Sobel算子锐化 %函数名称为Image_Sobel,输入参数Image,输出参数IMAGE function [IMAGE] Image_Sobel(Image) %获取矩阵的行、列、波段数 [m,n,bands] size(Image); %定义模板大小&#xff0c;假设模板大小33 A 1; %定义…

Python 图像处理 OpenCV (12): Roberts 算子、 Prewitt 算子、 Sobel 算子和 Laplacian 算子边缘检测技术

前文传送门&#xff1a; 「Python 图像处理 OpenCV &#xff08;1&#xff09;&#xff1a;入门」 「Python 图像处理 OpenCV &#xff08;2&#xff09;&#xff1a;像素处理与 Numpy 操作以及 Matplotlib 显示图像」 「Python 图像处理 OpenCV &#xff08;3&#xff09;&…

[Python从零到壹] 五十七.图像增强及运算篇之图像锐化Roberts、Prewitt算子实现边缘检测

欢迎大家来到“Python从零到壹”&#xff0c;在这里我将分享约200篇Python系列文章&#xff0c;带大家一起去学习和玩耍&#xff0c;看看Python这个有趣的世界。所有文章都将结合案例、代码和作者的经验讲解&#xff0c;真心想把自己近十年的编程经验分享给大家&#xff0c;希望…

Prewitt算子计算图像梯度

Prewitt算子是一阶微分算子的边缘检测&#xff0c;利用像素点上下、左右邻点的灰度差&#xff0c;在边缘处达到极值检测边缘&#xff0c;去掉部分伪边缘&#xff0c;对噪声具有平滑作用。其原理是在图像空间利用两个方向模板与图像进行邻域卷积来完成&#xff0c;这两个方向模板…