数据库关系代数 - 连接操作

数据库关系代数 - 连接操作

前言

本文整理数据库关系代数中所有连接操作,包含定义、运算规则、示例、区别,适合期末复习、面试背诵,简洁无废话,知识点全覆盖。


一、基础概念

  1. 连接:从两个关系的笛卡尔积中选取满足条件的元组
  2. 所有连接的基础:笛卡尔积
  3. 内连接:只保留匹配成功的元组
  4. 外连接:保留所有元组,不匹配用NULL填充

二、详细连接操作

1. 笛卡尔积 (Cartesian Product)

  • 符号 :R×SR \times SR×S
  • 定义:无条件将两个关系的元组进行全组合
  • 特点:无筛选、无去重,结果行数 = R行数 × S行数
  • 适用:所有连接的基础操作

2. θ-连接 (θ-Join)

  • 符号 :R⋈conditionSR \bowtie_{condition} SR⋈conditionS
  • 定义:笛卡尔积 + 条件筛选
  • 条件:=、>、<、≥、≤、≠
  • 分类
    • 等值连接(条件为=)
    • 非等值连接(条件为>、<等)
  • 特点:保留所有列,不去重

3. 等值连接 (Equijoin)

  • 定义 :θ-连接的特例,条件仅为属性相等
  • 特点
    • 按属性值相等匹配
    • 保留重复列

4. 自然连接 (Natural Join)

  • 符号 :R⋈SR \bowtie SR⋈S
  • 定义:特殊的等值连接
  • 规则
    1. 自动匹配同名同类型属性
    2. 按等值连接
    3. 删除重复列
  • 地位:实际使用最频繁的连接

5. 左外连接 (Left Outer Join)

  • 符号 :R⋈leftSR \bowtie_{left} SR⋈leftS
  • 规则
    • 保留左表全部元组
    • 右表能匹配则显示,不能匹配填NULL
  • 适用:以左表数据为准,不丢失任何左表记录

6. 右外连接 (Right Outer Join)

  • 符号 :R⋈rightSR \bowtie_{right} SR⋈rightS
  • 规则
    • 保留右表全部元组
    • 左表能匹配则显示,不能匹配填NULL
  • 适用:以右表数据为准,不丢失任何右表记录

7. 全外连接 (Full Outer Join)

  • 符号 :R⋈fullSR \bowtie_{full} SR⋈fullS
  • 规则
    • 保留左表 + 右表所有元组
    • 不匹配的部分统一填NULL

三、核心区别对比表

连接类型 筛选条件 重复列 不匹配元组
笛卡尔积 保留 全部保留
θ-连接 任意条件 保留 丢弃
等值连接 属性相等 保留 丢弃
自然连接 同名属性相等 删除 丢弃
左外连接 等值匹配 保留 保留左表
右外连接 等值匹配 保留 保留右表
全外连接 等值匹配 保留 全部保留

四、总结

  1. 笛卡尔积:全组合,无筛选
  2. θ-连接:通用条件连接
  3. 等值连接:只按相等匹配,保留重复列
  4. 自然连接:等值连接 + 去重,最常用
  5. 左外连接:左表全保留
  6. 右外连接:右表全保留
  7. 全外连接:两边都保留

一句话记忆

内连接看匹配,外连接看保留;自然连接自动去重,等值连接保留同名列。


相关推荐
一只数据集4 分钟前
商超上货人形机器人全身运控数据集分析——Kuavo 5机器人5W型号夹爪末端执行器操作轨迹数据
人工智能·算法·机器人
zhaoyong2227 分钟前
如何在 MySQL 中实现基于全字段唯一性的重复行计数更新
jvm·数据库·python
X56618 分钟前
为什么宝塔面板网站无法正常连接外部远程数据库_检查服务器安全组放行端口并开启IP授权
jvm·数据库·python
Gc9umsbL111 分钟前
零基础学Linux:21天从“命令小白”到独立部署服务器
linux·运维·服务器
woxihuan12345612 分钟前
C#怎么使用CancellationToken C#如何用取消令牌优雅地取消异步任务和长时间操作【进阶】
jvm·数据库·python
yexuhgu23 分钟前
MySQL主从复制支持跨版本吗_不同版本间同步的注意事项
jvm·数据库·python
woxihuan12345628 分钟前
CSS怎样调整弹性项目排列顺序_使用order属性轻松控制DOM显示顺序
jvm·数据库·python
谙弆悕博士30 分钟前
【附Python源码】基于决策树的信用卡欺诈检测实战
python·学习·算法·决策树·机器学习·数据分析·scikit-learn
MATLAB代码顾问34 分钟前
黏菌算法(SMA)原理详解与Python实现
开发语言·python·算法