请解释sql中元组的含义是什么?谢谢..
答案 0 :(得分:77)
这里的大多数答案都在正确的轨道上。但是,行不是元组。 元组 *
是带有名称的无序已知值集。因此,以下元组是相同的(我使用虚构的元组语法,因为关系元组主要是理论构造):
(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)
可能相等,但并不一定意味着它们是相同的。
如果这是您感兴趣的主题,我强烈建议您阅读CJ Date的SQL and Relational Theory: How to Write Accurate SQL Code。
*
请注意,我正在谈论关系模型中存在的元组,这与一般的数学有点不同。
**
如果您想知道,SQL中的所有内容都是行或表。因此,(1, 2)
是一行,而VALUES (1, 2)
是一个表(有一行)。
更新:我在博文here中对此答案进行了一些扩展。
答案 1 :(得分:14)
缩写为“N-tuple
”(如quadruple
,quintuple
等。)
这是一行整行的行集。
如果您发出:
SELECT col1, col2
FROM mytable
,整个结果将为ROWSET
,每对col1, col2
将为tuple
。
有些数据库可以作为一个整体使用元组。
喜欢,你可以这样做:
SELECT col1, col2
FROM mytable
WHERE (col1, col2) =
(
SELECT col3, col4
FROM othertable
)
,它检查来自一个tuple
的整个rowset
是否匹配来自另一个tuple
的整个rowset
。
答案 2 :(得分:4)
在关系数据库中,表格为relations (in mathematical meaning)。关系是一组元组。因此,关系数据库中的表行是关系中的元组。
维基关系:
在数学中(更具体地说,在 设定理论和逻辑),关系是一个 分配真值的属性 k的组合(k元组) 个人。通常,财产 描述了可能的连接 在k元组的组件之间。 对于给定的k元组,一个事实 值被分配给每个k元组 根据财产是否确实 或者不成立。
答案 3 :(得分:3)
无论它在数学中的用途如何,RDBMS中的元组通常被认为是表或结果集中的一行。在RDBMS中,元组是无序的。 MDDBMS中的元组是单元格中具有关联维度实例(成员)的数据实例。
列族数据存储中的元组是什么?
答案 4 :(得分:2)
tuple = 1条记录; n-tuple ='n'个记录的有序列表; Elmasri Navathe书(第198页第3版)。
记录=有序或无序。
答案 5 :(得分:0)
数据库表中的行
答案 6 :(得分:0)
据我所知,一个表有一组K键和一个带域K的打字函数T.表的一行或“元组”是一个带域K的函数r,这样r(k)就是一个每个密钥k的T(k)的元素。因此术语误导,因为“元组”实际上更像是一个关联数组。
答案 7 :(得分:0)
元组用于引用关系数据库模型中的一行。但是元组与行有点差别。
答案 8 :(得分:-1)
元组是已知值,用于关联关系数据库中的表。
答案 9 :(得分:-2)
元组用于定义多维数据集中的数据片段;它由一个或多个维度中的一个成员的有序集合组成。元组用于标识来自多维数据集的多维数据的特定部分;由立方体中每个维度的一个成员组成的元组完全描述了一个单元格值。