数据库关系运算里那些常见的符号和它们大致用法简单聊聊
- 问答
- 2026-01-13 18:01:07
- 2
首先得明白,关系代数就像是给数据库操作设计的一套“数学公式”,我们平时用SQL语言去查数据,比如SELECT、FROM、WHERE这些命令,在底层思想上很多都对应着关系代数的某个运算符号,理解了这些符号,就能更清楚地知道一个复杂的查询语句到底是怎么一步步把数据找出来的。
这些符号操作的对象是“关系”,你可以直接把它想象成一张二维表格,就像Excel里的一个工作表,有表头(属性名)和一行行的数据(元组)。
基本运算符号

这几个是最核心、最基础的,其他的复杂运算几乎都能由它们组合而成。
-
选择(Selection)符号:σ 这个符号念作“西格玛”,它的作用非常简单粗暴:从一张表里,按条件筛选出想要的行,你可以把它类比成Excel里的“筛选”功能。 它的写法通常是 σ<条件> (表名),条件就是一些判断,年龄大于18”、“姓名等于‘张三’”。 举个例子:你有一张“学生表”,里面有学号、姓名、年龄、班级等信息,现在你想找出所有年龄在20岁以上的学生,用关系代数写就是:σ<年龄>20> (学生表),这个运算的结果是一张新表,这张新表的结构(也就是有哪些列)和原来的“学生表”一模一样,但里面只包含了满足年龄条件的那些行。
-
投影(Projection)符号:Π 这个符号念作“派”,它的作用和“选择”正好互补:从一张表里,挑选出指定的列,然后把其他不需要的列扔掉。 它的写法是 Π<属性名1, 属性名2, ...> (表名),属性名就是列的名字。 举个例子:还是那张“学生表”,你只关心学生的“学号”和“姓名”,不关心年龄和班级,那么运算就是:Π<学号, 姓名> (学生表),结果会得到一张只有“学号”和“姓名”两列的新表,这里需要注意,如果原表中有两个学生学号姓名完全一样,投影后会自动去掉重复的行,只保留一条记录。

-
笛卡尔积(Cartesian Product)符号:× 这个符号就是乘号,它的功能是把两张表毫无条件地“拼”在一起,具体怎么拼呢?就是把第一张表的每一行,分别和第二张表的每一行连接起来,组成新的行。 举个例子:假设有张“学生表”有3个学生,另一张“课程表”有2门课,学生表 × 课程表”的结果,就会是一张有3×2=6行数据的新表,新表包含了“学生表”的所有列和“课程表”的所有列,这通常会产生大量没有实际意义的组合(比如某个学生根本就没选某门课),所以它自己单独用的情况很少,一般都是配合其他运算(比如接下来要说的连接)来使用。
-
并运算(Union)符号:∪ 这个符号和数学里的并集符号一样,它的前提是参与运算的两张表必须拥有相同结构(也就是列的数量和类型要兼容),它的作用是把两张表的数据合并到一起,并自动去掉重复的行。 举个例子:一张表是“本学期获得奖学金的学生”,另一张是“本学期担任学生干部的学生”,这两张表结构都一样(学号、姓名等),你想知道所有要么拿了奖学金、要么是学生干部的学生名单,就可以用“奖学金表 ∪ 干部表”。
-
差运算(Difference)符号:- 也是数学里的减号,它也需要两张表结构相同,它的作用是找出属于第一张表、但不属于第二张表的那些行。 举个例子:还是用上面的例子,你想找出“只拿了奖学金但不是学生干部的学生”,运算就是“奖学金表 - 干部表”。

由基本运算导出的常用符号
这些运算非常实用,但它们本质上可以用前面那五个基本运算组合出来。
-
连接(Join)符号:⋈ 这是数据库查询中最常用、最重要的运算之一,它解决了笛卡尔积会产生大量无意义数据的问题。连接就是在笛卡尔积的基础上,加上一个连接条件,只保留那些满足条件的行。 它的写法是 表A ⋈<条件> 表B,这个条件通常是判断两个表的某些列的值是否相等,这叫做等值连接。 举个例子:你有“学生表”和“选课表”(包含学号、课程号、成绩),你想知道每个学生选了哪些课以及成绩,就需要根据两个表里都有的“学号”这个字段把它们关联起来,运算就是:学生表 ⋈<学生表.学号 = 选课表.学号> 选课表,这个操作会精确地把学生信息和他们的选课信息匹配起来,不会产生无关的组合。 连接还有很多特殊的种类,比如自然连接(⋈),它会自动根据两个表里相同的列名进行等值连接,并且结果中相同的列只出现一次,是最常用的一种连接。
-
除运算(Division)符号:÷ 这个运算理解起来稍微绕一点,但它能解决一类很经典的问题:查询“全部”或“所有”这类问题。 举个例子:你想找出“选修了所有课程的学生”,假设有“学生选课表”(学号,课程号)和“课程表”(课程号),除运算“学生选课表 ÷ 课程表”的结果,就是那些在“学生选课表”中出现了“课程表”里所有课程号的学号,它的实现机制可以理解为:找出这样的学生,不存在一门在“课程表”里的课程,是他没有选的。
关系代数的这些符号为我们提供了一种清晰、严谨的方式来描述对数据的各种操作,虽然我们日常不直接写这些符号,但它们在数据库管理系统的内部运作和SQL语言的查询优化中扮演着至关重要的角色,理解了σ是挑行,Π是选列,⋈是连表,就能更好地拆解和理解复杂的SQL查询语句了。
本文由瞿欣合于2026-01-13发表在笙亿网络策划,如有疑问,请联系我们。
本文链接:https://www.haoid.cn/wenda/80070.html
