バージョンごとのドキュメント一覧

7.7. VALUESリスト #

<title><literal>VALUES</literal> Lists</title>

<literal>VALUES</literal> provides a way to generate a <quote>constant table</quote> that can be used in a query without having to actually create and populate a table on-disk. The syntax is VALUESは、定数テーブルを生成する方法を提供します。 それは実際にはディスク上に作成して配置することなく、問い合わせで使用することができます。 構文を以下に示します。

VALUES ( expression [, ...] ) [, ...]

Each parenthesized list of expressions generates a row in the table. The lists must all have the same number of elements (i.e., the number of columns in the table), and corresponding entries in each list must have compatible data types. The actual data type assigned to each column of the result is determined using the same rules as for <literal>UNION</literal> (see <xref linkend="typeconv-union-case"/>). 括弧で括られた式のリストがそれぞれ、テーブルの行を生成します。 リストは同一の要素数(つまり、テーブルの列数)を持たなければなりません。 また、各リストで対応する項目のデータ型に互換性がなければなりません。 最終的に各列に割り当てられる実際のデータ型は、UNIONと同様の規則に従って決定されます。 (10.5を参照してください。)

As an example: 以下に例を示します。

VALUES (1, 'one'), (2, 'two'), (3, 'three');

will return a table of two columns and three rows. It's effectively equivalent to: これは、2列3行のテーブルを返します。 実質的に、以下と同じです。

SELECT 1 AS column1, 'one' AS column2
UNION ALL
SELECT 2, 'two'
UNION ALL
SELECT 3, 'three';

By default, <productname>PostgreSQL</productname> assigns the names <literal>column1</literal>, <literal>column2</literal>, etc. to the columns of a <literal>VALUES</literal> table. The column names are not specified by the SQL standard and different database systems do it differently, so it's usually better to override the default names with a table alias list, like this: デフォルトでは、PostgreSQLVALUESテーブルの各列にcolumn1column2といった名前をつけます。 標準SQLではこれらの列名は規定されていませんので、データベースシステムの種類によって異なる名前を付与しています。 そのため、通常はテーブル別名リストを使用して、以下のようにデフォルトの名前を上書きする方がよいでしょう。

=> SELECT * FROM (VALUES (1, 'one'), (2, 'two'), (3, 'three')) AS t (num,letter);
 num | letter
-----+--------
   1 | one
   2 | two
   3 | three
(3 rows)

Syntactically, <literal>VALUES</literal> followed by expression lists is treated as equivalent to: 文法的には、VALUESの後に式のリストがあるものは、以下と同様に扱われます。

SELECT select_list FROM table_expression

and can appear anywhere a <literal>SELECT</literal> can. For example, you can use it as part of a <literal>UNION</literal>, or attach a <replaceable>sort_specification</replaceable> (<literal>ORDER BY</literal>, <literal>LIMIT</literal>, and/or <literal>OFFSET</literal>) to it. <literal>VALUES</literal> is most commonly used as the data source in an <command>INSERT</command> command, and next most commonly as a subquery. そして、SELECTが記述できるところであれば、どこにでも記述することができます。 例えば、UNIONの一部として使用することもできますし、sort_specification (ORDER BYLIMITOFFSET)を付けることもできます。 VALUESINSERTコマンドの元データとしてもっとも頻繁に使用されます。 次に使用頻度が高いのは副問い合わせとしての使用です。

For more information see <xref linkend="sql-values"/>. 詳しくはVALUESを参照してください。