关系代数运算之笛卡尔积、等值连接、自然连接、内连接的区别

笛卡尔积:无过滤、完全匹配、多个结果。
等效连接:配对过滤,特殊条件,结果准确。
自然的联系。
等价连接消除了重复,不重复属性,简单高效。
内连接:通常,等效连接用于默认条件和集中结果。
摘要:了解差异、使用正确的联系并保持有效。

SQL中内连接使用详细说明

昨天,在清理客户数据库时,我发现我需要合并两个表。
一张表包含基本客户信息,另一张表包含订单历史记录。
如果我们想知道谁买了什么,我们需要链接这两个表。
在 SQL 中,这就是内连接的作用。

首先我们来谈谈等效连接。
这相当于在两个列表中查找相同的名称。
例如,如果“客户”表中的客户 ID 与“订单”表中的客户 ID 相同,请使用 = 进行连接。
结果,将显示两个表中的所有匹配行,包括客户信息和订单信息。
我最后一次使用这个是2 02 3 年5 月1 0日。
报告写得很快,几分钟就出来了。
但是,如果两个表中都有重复的列(例如,都显示“CustomerName”),则在删除重复项时需要小心,因为结果将有两列。

不等待就建立连接的情况并不常见。
找出两个表中不同的值。
例如,您希望看到购买了产品的客户,但不想看到购买了服务的客户。
只需使用 < > 连接即可。
我记得用过一次这个。
通过连接客户投诉数据表和产品使用表,我们能够识别出尝试过产品但没有反馈的客户。
结果,我们失去了很多客户,因为抱怨过的人又抱怨了。
不过这次的场景不多,所以用得比较少。

自然连接更容易使用。
自动查找并连接两个表中具有相同名称的列。
上次使用它是在 2 02 3 年 6 月 1 5 日。
当我连接员工表和工资表时,系统会自动选择员工编号,因此结果中没有重复条目。
这很方便,但前提是两个表中比较的列名和类型必须完全相同。

内连接是查找表之间的关联。
平等,不平等,自然视情况而定。
等价值最常见;不等值使用频率较低,自然更容易使用,但也更困难。
等等,还有一件事。
有时内连接和外连接可以互换使用,所以这是另一个故事了。
突然我想到,如果表中的列名不同或数据类型不匹配,这些连接将不起作用。
我应该怎么办?

自然连接的SQL语句 R与S自然连接,R(A,B,C) S(C,D,E) 选择A,E 条件:B=D

天然的联系……说实话,还蛮方便的。
即根据两个表中相同的列名自动连接。
比如表R包含A、B、C,表S包含C、D、E。
我想从R中取A,从S中取E,条件是R中的B等于S中的D。

SQL的写法是: SELECT R.A, S.E FROM R, S WHERE R.B = S.D。
该语句将找到 R.B 和 SD 相同的行,然后给出 A 和 E。

但是要小心,自然联接会在两个表中找到具有相同名称的列并自动联接它们。
这里我们使用公司 B 和 D,而不是同名的列。
这样您就可以精确控制登录方式。
它不需要像内连接和外连接那样的 ON 子句。

自然连接还可以与 SELECT、WHERE、GROUP BY 等混合使用。
例如,如果要过滤掉 E 大于 1 0 的列,只需添加 WHERE S.E > 1 0 即可。

但是使用自然连接时有一个注意事项:需要确保所连接的列实际上可以正确连接。
我已经犯了一个错误,将R的C连接成了C和S,结果数据完全乱了。
所以写完之后需要再检查一下表结构。

一般来说,使用自然连接可以避免很多麻烦。
不过也不要完全迷信,你还是要知道他是做什么的。