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
ステートメントは、値が挿入される前に評価されます。