INSERT ステートメント
INSERT ステートメントを使用して、データベーステーブルにレコードを作成します。次のいずれかを指定できます:
-
新しいレコードとして挿入される値の一覧を 1 つ以上
-
新しいレコードのセットとして挿入するために、他のテーブルのデータをコピーする
SELECTステートメント
INSERT ステートメントの形式は次のとおりです:
INSERT INTO テーブル名 [(列名, ...)] VALUES [(値式, ...), ...]
INSERT INTO テーブル名 [(列名 ...)] SELECT 列名, ... FROM テーブル名 [WHERE 値式]
VALUES の使用
列名は、省略可能な列名の一覧で、VALUES 句で値が指定される列の名前と順序を示します。列名を省略した場合は、式 (値式) の一覧に、テーブルで定義されているすべての列の値を、テーブルで定義されている順序と同じ列順で指定する必要があります。
式 (値式) の一覧は新規レコードの列の値を指定します。複数のレコードを追加するには、各レコードのカッコ内の式の一覧をコンマで区切って指定します。通常、式の一覧は各列の定数の値で構成されます (ただし一覧をサブクエリーにすることもできます)。文字列の値は、シングルクォーテーション (') の組で囲む必要があります。シングルクォーテーションで囲まれた文字列の値にシングルクォーテーションを含めるには、同時に 2 つのシングルクォーテーションを使用します (例: 'Don''t')。
サブクエリーはカッコ (()) で囲む必要があります。
例
式の一覧を 2 つ挿入します。
INSERT INTO 従業員名簿 (姓, 名, 従業員番号, 給与, 入社年月日)
VALUES ('小田', '弘', 'E22345', 27500, DATE '2028-06-05'),
('鈴木', '真由美', 'E24682', 28500, DATE '2029-09-30')
この INSERT ステートメントにより、指定した値の各一覧のデータベーステーブルに 1 レコードが追加されます。この例では、従業員名簿データベーステーブルに 2 レコードが追加されました。5 つの列に値が指定されます。テーブルの残りの列には、NULL を意味する空白の値が割り当てられます。
SELECT の使用
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 ステートメントは、値が挿入される前に評価されます。
メモ
-
オブジェクトフィールドでは、引数化されたステートメントを準備し、アプリケーションからデータをストリームしていない限り、
INSERT処理を行うことができるのはテキストのみです。バイナリデータを使用するには、シングルクォーテーションでファイル名を囲んでファイル名を割り当てるか、PutAs()関数を使用します。ファイル名を指定すると、ファイル拡張子からファイルタイプが推定されます:コピーINSERT INTO "テーブル名" ("オブジェクト名") VALUES(? AS 'ファイル名.ファイル拡張子')サポートされていないファイルタイプは、タイプ FILE として挿入されます。
PutAs()関数を使用する場合、PutAs(col, 'タイプ')の形式でタイプを指定します。タイプ値はサポートされているファイルタイプです。サポートされているファイルタイプの詳細については、「オブジェクトフィールドの内容の取得:CAST() 関数と GetAs() 関数」を参照してください。 -
列名では最終日[4]などのフィールドの繰り返しも指定することができます。