关系数据库中的“Tuple”是什么意思?
请解释什么是元组在sql?谢谢..
这里的大部分答案都是正确的。 但是, 行不是元组 。 元组 *
是具有名称的已知值的无序集合。 因此,下面的元组是相同的东西(我使用了一个虚构的元组语法,因为关系元组在很大程度上是一个理论构造):
(x=1, y=2, z=3) (z=3, y=2, x=1) (y=2, z=3, x=1)
…当然假设x,y和z都是整数。 另外请注意,没有“重复”元组这样的事情。 因此,不仅以上是平等的,他们是同样的事情 。 最后,元组只能包含已知的值(因此没有空值)。
行 **
是已知或未知值与名称的有序集合(尽pipe它们可能被省略)。 因此,以下比较在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)
…但是我们所做的只是改变sorting而不是删除它。
还要注意,也可能有未知的值。 因此,您可能有行数未知的行:
(1, 2, NULL) = (1, 2, NULL)
…但请注意,这种比较将始终产生UNKNOWN
。 毕竟,你怎么知道两个未知值是否相等?
最后,行可能被复制。 换句话说, (1, 2)
和(1, 2)
可以相比是相等的,但这并不一定意味着它们是相同的东西。
如果这是一个你感兴趣的主题,我强烈build议阅读SQL和关系理论:如何编写准确的SQL代码由CJdate。
*
请注意,我正在谈论关系模型中存在的元组,这与一般的math有点不同。
**
以防万一你想知道,几乎所有在SQL是一行或一个表。 因此, (1, 2)
是一行,而VALUES (1, 2)
是一个表(一行)。
更新 :我已经在这里的博客文章扩大了一点这个答案。
这是一个缩短的“ N-tuple
”(如quadruple
quintuple
, quintuple
等)
这是整排的一排排。
如果您发出:
SELECT col1, col2 FROM mytable
,整个结果将是一个ROWSET
,并且每一对col1, col2
都将是一个tuple
。
一些数据库可以作为一个整体使用一个元组。
喜欢,你可以这样做:
SELECT col1, col2 FROM mytable WHERE (col1, col2) = ( SELECT col3, col4 FROM othertable )
,它检查一个rowset
集中的整个tuple
与另一个rowset
的整个tuple
相匹配。
在关系数据库中 ,表格是关系 (在math意义上) 。 关系是元组的集合。 因此关系数据库中的表行是元组的关系。
维基关系:
在math(更具体地说,在集合论和逻辑中),关系是一种将真值分配给k个个体的组合(k元组)的属性。 通常,该属性描述了k元组的元素之间可能的连接。 对于给定的一组k元组,根据属性是否成立,为每个k元组分配一个真值。
无论在math中如何使用,RDBMS中的元组通常被认为是表或结果集中的一行。 在RDBMS中,元组是无序的。 MDDBMS中的元组是具有关联维度实例(成员)的单元中的数据实例。
列族数据存储中的元组是什么?
元组= 1logging; n元组= n个logging的有序列表; Elmasri Navathe书(第198页,第3版)。
logging=有序或无序。
来自数据库表的行
据我所知,一个表有一组K键和一个带有域K的键入函数T.表的一行或“元组”是一个具有域K的函数r,使得r(k)是T (k)为每个密钥k。 所以这个术语是误导性的,因为一个“元组”实际上更像是一个关联数组。
元组被用来引用关系数据库模型中的一行。 但是元组与行有点差别。
元组是已知的值,用于关联关系数据库中的表。
元组用于定义一个立方体中的数据片; 它由一个或多个维度的一个成员的有序集合组成。 元组用于标识来自多维数据集的多维数据的特定部分; 由一个立方体中每个维度的一个成员组成的元组完全描述了一个单元格的值。