首页 > 基础知识 > 数据管理基础 交集差集并集 苗迪卡积 选择 投影 连接 商

数据管理基础 交集差集并集 苗迪卡积 选择 投影 连接 商

2025-03-16 18:39:57

在数据管理和数据库系统中,以下是关系代数中的核心操作概念及其解释:

1. 集合操作

交集(Intersection) ∩

  • 定义:返回两个关系中同时存在的行。
  • 条件:两个关系的结构(列数、数据类型)必须相同。
  • 示例
    表A:{A, B}
    表B:{B, C}
    交集结果:{B}
  • SQL实现SELECT * FROM A INTERSECT SELECT * FROM B;

差集(Difference)−

  • 定义:返回在第一个关系中存在,但在第二个关系中不存在的行。
  • 示例
    表A - 表B结果:{A}
    表B - 表A结果:{C}
  • SQL实现SELECT * FROM A EXCEPT SELECT * FROM B;

并集(Union)

  • 定义:返回两个关系中所有不同的行。
  • 示例
    并集结果:{A, B, C}
  • SQL实现SELECT * FROM A UNION SELECT * FROM B;

2. 笛卡尔积(Cartesian Product) × 

  • 定义:两个关系的所有行的组合,结果行数为两表行数的乘积。
  • 示例
    表A(2行) × 表B(3行) → 6行。
  • 注意:实际应用中需结合其他操作(如连接)限制结果。
  • SQL实现SELECT * FROM A, B; 或 SELECT * FROM A CROSS JOIN B;

3. 关系代数基本操作

选择(Selection)σ

  • 定义:根据条件筛选行,等价于SQL的WHERE
  • 示例:从表Students中选择年龄 > 20的学生。
  • SQL实现SELECT * FROM Students WHERE 年龄 > 20;

投影(Projection)π

  • 定义:选择需要的列,等价于SQL的SELECT
  • 示例:从表Students中查询姓名专业
  • SQL实现SELECT 姓名, 专业 FROM Students;

4. 连接(Join) ⋈

  • 定义:根据条件合并两个表的行。
  • 类型
    • 内连接(Inner Join):仅保留满足条件的行。
      SELECT * FROM A INNER JOIN B ON A.id = B.id;
    • 外连接(Outer Join)
      • 左外连接:保留左表所有行,右表无匹配则填NULL
        SELECT * FROM A LEFT JOIN B ON A.id = B.id;
      • 右外连接:类似左连接,但保留右表所有行。
      • 全外连接:保留两表所有行。
    • 交叉连接(Cross Join):即笛卡尔积。
  • 示例:合并订单表用户表,显示用户姓名和订单信息。

5. 商(Division) ÷

  • 定义:返回满足特定条件的行(例如“选修了所有课程的学生”)。
  • 示例
    Students_Courses(学生ID,课程ID) ÷ 表All_Courses(课程ID) → 结果为修完所有课程的学生ID。
  • SQL实现:通常需通过子查询或EXISTS实现。

总结

  • 应用场景
    • 集合操作:合并或过滤数据。
    • 连接:处理多表关系。
    • 商:复杂条件筛选(如“全部满足”)。
  • 注意:笛卡尔积可能导致数据爆炸,需谨慎使用。

这些操作是关系型数据库的核心,理解它们有助于高效设计查询和优化数据管理。

使用 Ctrl+D 可将网站添加到书签
收藏网站
扫描二维码
关注早实习微信公众号
官方公众号
Top