gpt4 book ai didi

sql - 术语 "Tuple"在关系数据库中意味着什么?

转载 作者:行者123 更新时间:2023-12-02 08:06:54 25 4
gpt4 key购买 nike

请解释一下sql中的元组是什么意思?谢谢..

最佳答案

这里的大多数答案都是正确的。但是,行不是元组元组*是带有名称的已知值的无序集合。因此,以下元组是相同的东西(我使用虚构的元组语法,因为关系元组很大程度上是一个理论构造):

(x=1, y=2, z=3)
(z=3, y=2, x=1)
(y=2, z=3, x=1)

...当然假设 x、y 和 z 都是整数。另请注意,不存在“重复”元组之类的东西。因此,以上不仅是相同的,而且是相同的东西。最后,元组只能包含已知值(因此不能包含空值)。

**是一组带有名称的已知或未知值(尽管它们可以被省略)。因此,以下比较在 SQL 中返回 false:

(1, 2, 3) = (3, 2, 1)
(3, 1, 2) = (2, 1, 3)

请注意,有一些方法可以“伪造”它。例如,考虑以下 INSERT 语句:

INSERT INTO point VALUES (1, 2, 3)

假设 x 是第一,y 是第二,z 是第三,这个查询可以重写如下:

INSERT INTO point (x, y, z) VALUES (1, 2, 3)

或者这个:

INSERT INTO point (y, z, x) VALUES (2, 3, 1)

...但我们真正做的只是更改顺序而不是删除它。

还要注意,也可能存在未知值。因此,您可能会有具有未知值的行:

(1, 2, NULL) = (1, 2, NULL)

...但请注意,此比较将始终产生 UNKNOWN。毕竟,你怎么知道两个未知值是否相等?

最后,行可能会重复。换句话说,(1, 2)(1, 2) 可能比较相等,但这并不一定意味着它们是同一件事。

如果这是您感兴趣的主题,我强烈建议您阅读 SQL and Relational Theory: How to Write Accurate SQL Code由 CJ 日期提供。

* 请注意,我谈论的是关系模型中存在的元组,这与一般的数学有点不同。

**以防万一您想知道,SQL 中的所有内容都是行或表。因此,(1, 2) 是一行,而 VALUES (1, 2) 是一个表格(一行)。

更新:我在博客文章 here 中对这个答案进行了一些扩展。 .

关于sql - 术语 "Tuple"在关系数据库中意味着什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/751264/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com