小编典典

关系数据库中的“淭”一词是什么意思?

sql

请解释一下sql中的元组是什么意思。


阅读 223

收藏
2021-04-15

共1个答案

小编典典

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

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

…当然假设x,y和z都是整数。还要注意,没有“重复”元组之类的东西。因此,上述条件不仅相等,而且是 同一件事
。最后,元组只能包含已知值(因此,不能为null)。

**是一组有序的已知或未知的值与名称(尽管它们可被省略)。因此,以下比较在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中的几乎所有内容都是行或表。因此,(1, 2)是一行,而VALUES (1, 2)表是(一行)。

2021-04-15