数据库系统(二)数据库关系代数 | 选择 投影 笛卡尔积 自然连接 外连接等

文章目录

  • 1 单张表运算
    • 1.1 选择
    • 1.2 投影
  • 2 多张表之间运算
    • 2.1 笛卡尔积
    • 2.2 Theta连接 操作
    • 2.3 自然连接操作
    • 2.4 外连接
    • 2.5 并,交,差运算
    • 2.6 除法
  • 3 其他
    • 3.1 赋值操作
    • 3.2 重命名

1 单张表运算

1.1 选择

选择就是从一个表中选择满足条件的一些元组

“Predicate” 可以翻译为 “谓词” 或者 “断言”。在数据库和计算机科学的上下文中,谓词通常是用来描述条件或断言的术语,用于筛选数据或控制程序的执行流程。

在这里插入图片描述

选择的条件可以 是表达式

可以包括等于,大于小于,不等于等等

当有多个条件时,可以通过and,or等连接

在这里插入图片描述

还可以连接两个属性

在这里插入图片描述

1.2 投影

投影可以理解为选择某些属性的值(注意去掉重复的,如下图例子

在这里插入图片描述

允许算术表达式,如下面的例子,会计算salary/12的值

在这里插入图片描述

关系代数运算可以组合成一个关系代数表达式

如下面的例子,可以发现这里的参数是一个表达式

在这里插入图片描述

2 多张表之间运算

2.1 笛卡尔积

前面表的第一行依次和后面表的每一行连接

前面表的第二行依次和后面表的每一行连接

……

在这里插入图片描述

当然这样得到的结果可能是不合理的,所以我们可以在这个的基础上进行一些操作,选出符合要求的

自然引出我们下面的一种操作叫Theta连接

2.2 Theta连接 操作

先笛卡尔积,再选出符合要求θ的

Theta-Join 操作是数据库中的一种关联操作,它不仅仅基于相等的条件来关联两个表,而是允许使用任何满足特定谓词(通常是一个比较运算符,如小于、大于、等于等)的条件来关联表中的行。这个谓词通常用θ(希腊字母Theta)来表示,因此得名 Theta-Join。在这里插入图片描述

2.3 自然连接操作

自然连接依赖于表之间的隐式连接条件,这些条件是基于表的列名相匹配的(找两个表中相同的列名)。具体来说,自然连接将两个表中列名相同的列用作连接条件,并且只返回这些列的一份副本。

——只有两个表都有的元素才会被链接

在这里插入图片描述

举例如下

在这里插入图片描述

注意这里会产生悬浮元组,即没有对应一样的元组

所以就产生了下面的一种连接方式

2.4 外连接

把悬浮元组保存在结果表中,在其他属性上填NULL

右外连接:保留右边表中的悬浮元组

在这里插入图片描述

左外连接:保留左边表中的悬浮元组

在这里插入图片描述

2.5 并,交,差运算

使用并运算条件

1 两个表必须有相同的属性

2 属性域必须兼容(对于每个 i,输入关系的第 i 个属性的类型必须相同)

举例

在这里插入图片描述

交运算

1 两个表必须有相同的属性

2 属性域必须兼容(对于每个 i,输入关系的第 i 个属性的类型必须相同)

举例

在这里插入图片描述

差运算

1 两个表必须有相同的属性

2 属性域必须兼容(对于每个 i,输入关系的第 i 个属性的类型必须相同)

在这里插入图片描述

2.6 除法

除操作是同时从行和列角度进行运算

在这里插入图片描述

在这里插入图片描述

3 其他

3.1 赋值操作

为了方便,简化表达式

在这里插入图片描述

3.2 重命名

对表达式的结果或者表等重命名

两种表达形式

在这里插入图片描述

举例

可以方便复用一个表
在这里插入图片描述

在这里插入图片描述

对于查询,可能有多种表达形式,他们的结果是一样的

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/267344.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

APP自动化测试工具大全

一、UI自动化测试工具 1. uiautomator2 openatx开源的ui自动化工具,支持Android和iOS。主要面向的编程语言是Python,API设计简洁易用,在开源社区也是很受欢迎。 安装: pip install --upgrade --pre uiautomator2# Or you can …

day23_jdbc详解

JDBC JDBC概述 什么jdbc Java DataBase Connectivity是一种用于执行SQL语句的Java API,它由一组用Java语言编写的类和接口组成。通过这些类和接口,JDBC把SQL语句发送给不同类型的数据库进行处理并接收处理结果。 jdbc的作用 提供java 操作不同数据库…

Blender学习--制作带骨骼动画的机器人

1. 首先创建一个机器人模型 时间关系,这部分步骤有时间补充 2. 然后为机器人创建一副骨架 时间关系,这部分步骤有时间补充 3.骨骼绑定 切换到物体模式,选中机器人头部,Shift选中骨骼,切换到姿态模式,&am…

【Linux】进程周边002之进程状态

👀樊梓慕:个人主页 🎥个人专栏:《C语言》《数据结构》《蓝桥杯试题》《LeetCode刷题笔记》《实训项目》《C》《Linux》 🌝每一个不曾起舞的日子,都是对生命的辜负 目录 前言 1.什么是状态? …

零拷贝的方式以及理解

零拷贝的方式以及理解 DMAmmapsendfilesendfile DMA scatter / Gatherdirect I/O 上一篇: 什么是零拷贝 DMA 正常的IO流程中,不管是物理设备之间的数据拷贝(比如:磁盘到内存),还是内存之间的数据拷贝(比…

rv1126-rv1109-以太网功能-eth-(调试篇)

先参考:以太网常见问题处理方法排查手册.pdf 调试指令: 1.首先dts修改 参考:Rockchip_Developer_Guide_Linux_GMAC_Mode_Configuration_CN.pdf 2.芯片地址尝试匹配 0~3地址都试下 &mdio { phy: phy0 { compatible "ethernet-phy-ieee802.3-c22"; reg <0…

C++之STL算法(1)

STL容器算法主要由、、组成&#xff1b;   algorithm主要有遍历、比较、交换、查找、拷贝、修改等&#xff1b; 1.遍历容器for_each for_each()函数用于完成容器遍历&#xff0c;函数参数如下&#xff1a; for_each(_InIt _First, _InIt _Last, _Fn _Func) 形参&#xff1a…

中伟视界:煤矿行业借力人工智能,防控灾害风险迈出新步伐 《“十四五”矿山安全生产规划》(应急(2022)64号),煤矿重大灾害风险防控系统

随着煤矿行业的发展&#xff0c;煤矿重大灾害风险防控成为了行业关注的重点之一。为了更好地预防和应对灾害风险&#xff0c;煤矿行业开始引入人工智能分析算法和检测场景&#xff0c;以提高灾害风险的识别和预警能力。 在煤矿的重大灾害风险防控中&#xff0c;AI算法发挥着重要…

MachMap:End-to-End Vectorized Solution for Compact HD-Map Construction

参考代码&#xff1a;None 动机与出发点 地平线的MapTR展现出了构建高精地图的能力&#xff0c;但是它的机制确实是有点复杂了。为了兼容不同车道线的朝向&#xff0c;环形车道线的起终点等情况&#xff0c;针对性设计了permute-equal的匹配逻辑&#xff0c;这样的逻辑真的是太…

VMWARE虚拟机无法正常复制粘贴

解决办法&#xff1a; 只要你拿25块钱给我&#xff0c;我立刻协助你完成这个任务&#xff0c;而且帮助你做到可以复制粘贴文件哈哈哈&#xff0c;搞不好不要钱&#xff0c;微信付款 我仔细看了&#xff0c;全网没有一个全面的解决方法&#xff0c;我这个是最全面的

以csv为源 flink 创建paimon 临时表相关 join 操作

目录 概述配置关键配置测试启动 kyuubi执行配置中的命令 bug解决bug01bug02 结束 概述 目标&#xff1a;生产中有需要外部源数据做paimon的数据源&#xff0c;生成临时表&#xff0c;以使用与现有正式表做相关统计及 join 操作。 环境&#xff1a;各组件版本如下 kyuubi 1.8…

【Kubernetes】存储类StorageClass

存储类StorageClass 一、StorageClass介绍二、安装nfs provisioner&#xff0c;用于配合存储类动态生成pv2.1、创建运行nfs-provisioner需要的sa账号2.2、对sa授权2.3、安装nfs-provisioner程序 三、创建storageclass&#xff0c;动态供给pv四、创建pvc&#xff0c;通过storage…