INSERT ステートメント

INSERT ステートメントを使用して、データベーステーブルにレコードを作成します。次のいずれかを指定できます:

  • 新しいレコードとして挿入する値のリスト

  • 新しいレコードのセットとして挿入するために、他のテーブルのデータをコピーする SELECT ステートメント

INSERT ステートメントの形式は次のとおりです:

コピー
INSERT INTO テーブル名 [(列名, ...)] VALUES (値式, ...)

列名は、省略可能な列名の一覧で、VALUES 句で値が指定される列の名前と順序を示します。列名を省略した場合は、値式 (値式) に、テーブルで定義されているすべての列の値を、テーブルで定義されている順序と同じ列順で指定する必要があります。列名では、最終日[4] などのフィールドの繰り返しも指定することができます。

値式は、新しいレコードの列の値を指定する式のリストです。通常、この式は列について定数値ですが、サブクエリーを指定することもできます。文字列の値は、シングルクォーテーション (') の組で囲む必要があります。シングルクォーテーションで囲まれた文字列の値にシングルクォーテーションを含めるには、同時に 2 つのシングルクォーテーションを使用します (例: 'Don''t')。

サブクエリーはカッコ (()) で囲む必要があります。

式のリストを挿入します。

コピー
INSERT INTO "従業員名簿" ( "姓" , "名" , "従業員番号" , "給与" , "入社年月日" )
   VALUES ('小田', '弘', 'E22345', 2750000, DATE '2028-06-05')

それぞれの INSERT ステートメントにより、データベーステーブルに 1 レコードが追加されます。この例では、従業員名簿データベーステーブルに 1 レコードが追加されました。5 つの列に値が指定されます。テーブルの残りの列には、NULL を意味する空白の値が割り当てられます。

重要  

オブジェクトフィールドでは、引数化されたステートメントを準備し、アプリケーションからデータをストリームしていない限り、INSERT 処理を行うことができるのはテキストのみです。バイナリデータを使用するには、シングルクォーテーションでファイル名を囲んでファイル名を割り当てるか、PutAs() 関数を使用します。ファイル名を指定すると、ファイル拡張子からファイルタイプが推定されます:

コピー
INSERT INTO "テーブル名" ("オブジェクト名") VALUES(? AS 'ファイル名.ファイル拡張子')

サポートされていないファイルタイプは、タイプ FILE として挿入されます。

PutAs() 関数を指定する場合、PutAs(col, 'タイプ') の形式でタイプを指定します。タイプ値は、サポートされているファイルタイプです。サポートされているファイルタイプの詳細については、「オブジェクトフィールドの内容の取得:CAST() 関数と GetAs() 関数」を参照してください。

SELECT ステートメントは、列名のリストで指定されたそれぞれの列名の値を返すクエリーです。値式のリストの代わりに SELECT ステートメントを使用すると、あるテーブルから行のセットを選択し、INSERT ステートメントでそれを別のテーブルに挿入することができます。

SELECT ステートメントを使用して挿入します。

コピー
INSERT INTO "従業員名簿1" ( "姓" , "名" , "従業員番号" , "部門" , "給与" )
   SELECT "姓" , "名" , "従業員番号" , "部門" , "給与" FROM "従業員名簿"
   WHERE "部門" = 'D050'

このタイプの INSERT ステートメントでは、挿入する列の数が SELECT ステートメントの列の数と一致する必要があります。また、他のタイプの INSERT ステートメントで列のリストが値式のリストに対応するのと同様に、挿入する列のリストが SELECT ステートメントの列のリストに対応する必要があります。たとえば、挿入される先頭の列は選択された先頭の列に対応し、挿入される 2 番目の列は選択された 2 番目の列に対応するというようになります。

これらの対応する列のサイズとデータタイプは、互換性がある必要があります。SELECT ステートメント内のそれぞれの列は、INSERT ステートメント内の対応する列に対する通常の INSERT/UPDATE ステートメントで ODBC または JDBC クライアントドライバが処理できるデータタイプにしてください。SELECT ステートメント内の列の値のサイズが対応する INSERT ステートメント内の列のサイズより大きい場合は値が制限されます。

SELECT ステートメントは、値が挿入される前に評価されます。