VALUES列表 =============== ``VALUES``\ 提供了一种生成“常量表”的方法,它可以被使用在一个查询中而不需要实际在磁盘上创建一个表。语法是: .. code:: synopsis VALUES ( expression [, ...] ) [, ...] 每一个被圆括号包围的表达式列表生成表中的一行。列表都必须具有相同数据的元素(即表中列的数目),并且在每个列表中对应的项必须具有可兼容的数据类型。分配给结果的每一列的实际数据类型使用和\ ``UNION``\ 相同的规则确定(参见\ `UNION、CASE和相关结构 `__\ )。 一个例子: .. code:: programlisting VALUES (1, 'one'), (2, 'two'), (3, 'three'); 将会返回一个有两列三行的表。它实际上等效于: .. code:: programlisting SELECT 1 AS column1, 'one' AS column2 UNION ALL SELECT 2, 'two' UNION ALL SELECT 3, 'three'; 在默认情况下,OushuDB 将\ ``column1``\ 、\ ``column2``\ 等名字分配给一个\ ``VALUES``\ 表的列。这些列名不是由SQL标准指定的,并且不同的数据库系统的做法也不同,因此通常最好使用表别名列表来重写这些默认的名字,像这样: .. code:: programlisting => SELECT * FROM (VALUES (1, 'one'), (2, 'two'), (3, 'three')) AS t (num,letter); num | letter -----+-------- 1 | one 2 | two 3 | three (3 rows) 在句法上,后面跟随着表达式列表的\ ``VALUES``\ 列表被视为和 .. code:: synopsis SELECT select_list FROM table_expression 一样,并且可以出现在\ ``SELECT``\ 能出现的任何地方。例如,你可以把它用作\ ``UNION``\ 的一部分,或者附加一个\ ``sort_specification``\ (\ ``ORDER BY``\ 、\ ``LIMIT``\ 和/或\ ``OFFSET``\ )给它。\ ``VALUES``\ 最常见的用途是作为一个\ ``INSERT``\ 命令的数据源,以及作为一个子查询。 更多信息请见\ `VALUES `__\ 。