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)
関連概念
動的パラメータ
関連資料
選択式
TableExpression
式に関する優先順位
真偽式