sql >> データベース >  >> RDS >> Oracle

同じテーブルに複数の行を挿入する方法-Oracle10g

    INSERT VALUES ステートメントは常に正確に1行を挿入します。ハードコードされた値で複数の行を挿入する場合、最も一般的なアプローチは、2つの別々のINSERTを実行することです。 ステートメント。

    insert into t1 values(131309,'HP','20-FEB-04',2000000,1235);
    insert into t1 values(131310,'HT','20-APR-14',120020,1234);
    

    本当に必要な場合は、ハードコードされた値をdualから選択できます。 次に、INSERT SELECTを実行します

    insert into t1
      select 131309, 'HP', '20-FEB-04',2000000,1235 from dual
      union all
      select 131310,'HT','20-APR-14',120020,1234 from dual
    

    または、INSERT ALLを実行することもできます

    insert all 
      into t1 values(131309,'HP','20-FEB-04',2000000,1235)
      into t1 values(131310,'HT','20-APR-14',120020,1234)
      select * from dual
    

    個人的には、2つのステートメントを使用します。

    これはあなたの質問とは関係ありませんが、いくつかのコメント

    • 常に、insertの列を常にリストアップしてください 声明。将来、NULLを許可する新しい列を追加する場合に備えて、SQLをはるかに堅牢にします。 あなたのステートメントがまだ機能する値。また、列リストがすぐそこにあると、誰かがテーブル内の列の順序を覚えていることを期待するのではなく、多くのバグを回避できます。
    • dateに値を挿入する場合 列には、日付を表す文字列リテラルではなく、日付を使用します。暗黙的なデータ型変換に依存することは、多くのバグの原因です。明示的なto_dateを使用する または、ANSI日付リテラルを使用します。そして、4桁の年を使用します。



    1. OracleSQLDeveloperとPostgreSQL

    2. MariaDBでのWEEKOFYEAR()のしくみ

    3. QMYSQLドライバーのインストール

    4. 再帰的な親リストを取得する