Please explain what is meant by tuples in sql?Thanks..
(1) In a relational database, a tuple is one record (one row). See record and relational database. (2) A set of values passed from one programming language to another application program or to a system program such as the operating system.
In mathematics, a tuple is a finite ordered list (sequence) of elements. An n-tuple is a sequence (or ordered list) of n elements, where n is a non-negative integer. There is only one 0-tuple, referred to as the empty tuple. An n-tuple is defined inductively using the construction of an ordered pair.
RDBMS: What is a Tuple? A single entry in a table is called a Tuple or Record or Row. A tuple in a table represents a set of related data. For example, the above Employee table has 4 tuples/records/rows. Following is an example of single record or tuple.
A tuple is a comma-separated sequence of values surrounded with parentheses. Tuple is similar to a list. The difference between the two is that you cannot change the elements of a tuple once it is assigned whereas in a list, elements can be changed.
Most of the answers here are on the right track. However, a row is not a tuple. Tuples*
are unordered sets of known values with names. Thus, the following tuples are the same thing (I'm using an imaginary tuple syntax since a relational tuple is largely a theoretical construct):
(x=1, y=2, z=3) (z=3, y=2, x=1) (y=2, z=3, x=1)
...assuming of course that x, y, and z are all integers. Also note that there is no such thing as a "duplicate" tuple. Thus, not only are the above equal, they're the same thing. Lastly, tuples can only contain known values (thus, no nulls).
A row**
is an ordered set of known or unknown values with names (although they may be omitted). Therefore, the following comparisons return false in SQL:
(1, 2, 3) = (3, 2, 1) (3, 1, 2) = (2, 1, 3)
Note that there are ways to "fake it" though. For example, consider this INSERT
statement:
INSERT INTO point VALUES (1, 2, 3)
Assuming that x is first, y is second, and z is third, this query may be rewritten like this:
INSERT INTO point (x, y, z) VALUES (1, 2, 3)
Or this:
INSERT INTO point (y, z, x) VALUES (2, 3, 1)
...but all we're really doing is changing the ordering rather than removing it.
And also note that there may be unknown values as well. Thus, you may have rows with unknown values:
(1, 2, NULL) = (1, 2, NULL)
...but note that this comparison will always yield UNKNOWN
. After all, how can you know whether two unknown values are equal?
And lastly, rows may be duplicated. In other words, (1, 2)
and (1, 2)
may compare to be equal, but that doesn't necessarily mean that they're the same thing.
If this is a subject that interests you, I'd highly recommend reading SQL and Relational Theory: How to Write Accurate SQL Code by CJ Date.
*
Note that I'm talking about tuples as they exist in the relational model, which is a bit different from mathematics in general.
**
And just in case you're wondering, just about everything in SQL is a row or table. Therefore, (1, 2)
is a row, while VALUES (1, 2)
is a table (with one row).
UPDATE: I've expanded a little bit on this answer in a blog post here.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With