# VALUES式

VALUES式により、値から行や表を構築できます。 VALUES式は問い合わせを置ける場所ならどこにでも置くことができ、したがって以下のいずれとしても利用が可能です。

- ResultSetを返す文
- 副問い合わせを置ける式や文
- INSERT文の値(INSERT文では通例的に選択式ではなくVALUES式を用います。)

#### 構文

        VALUES ( 値 {, 値 }* )
            [ , ( 値 {, 値 }* ) ]* |
        VALUES 値 [ , 値 ]*
     }

値は以下のように定義されます。

    式 | DEFAULT

最初の書き方では複数列の行が構築され、二つ目の書き方では単列の行が、個々の式を行の列値として、構築されます。

VALUES式がINSERT文にある場合のみ、DEFAULTというキーワードを使うことができます。 列にDEFAULTを指定すると、その列には列の既定値が挿入されます。 もう一つ列に既定値を挿入する方法があり、それはINSERT文にて一覧からその列を除いて、表の他の列の値のみ明示的に挿入することです。

#### 例

    -- 1列3行
    VALUES (1),(2),(3)
    -- 1列3行
    VALUES 1, 2, 3
    -- 3列1行
    VALUES (1, 2, 3)
    -- 2列3行
    VALUES (1,21),(2,22),(3,23)
    -- 表を導出して構築
    VALUES ('orange', 'orange'), ('apple', 'red'),
    ('banana', 'yellow')
    -- 単文でDEPARTMENTという表に二つの新しい部署を挿入する。
    -- ただし新しい部署に管理者は割り当てない。
    INSERT INTO DEPARTMENT (DEPTNO, DEPTNAME, ADMRDEPT)
      VALUES ('B11', 'PURCHASING', 'B01'),
        ('E41', 'DATABASE ADMINISTRATION', 'E01')
    -- MAJPROJ列に既定値をあてて、行を挿入する。
    INSERT INTO PROJECT (PROJNO, PROJNAME, DEPTNO, RESPEMP, PRSTDATE, MAJPROJ)
    VALUES ('PL2101', 'ENSURE COMPAT PLAN', 'B01', '000020', CURRENT_DATE, DEFAULT)

    -- 組込みの関数を使う
    VALUES CURRENT_DATE
    -- 任意の式の値をとる
    VALUES (3*29, 26.0E0/3)
    -- 組込みの関数の返す値をとる
    values char(1)

親トピック: SQL式
関連概念
動的パラメータ
関連資料
選択式
TableExpression
式に関する優先順位
真偽式