8i|9i|10g|11g|12c|13c|18c|19c|21c|Misc|PL/SQL|SQL|RAC|WebLogic|Linuxp
Home”Articles”Misc”here
これは、sqlの基本を示す一連の記事の第八部です。 この記事では、INSERT
ステートメントのバリエーションのいくつかを見てみましょう。,
- セットアップ
- コミットとロールバック
- 基本挿入
- ビューに挿入
- 挿入します。..
- スカラーサブクエリ
関連記事を選択します。
- SQL for Beginners(Part8):INSERT文
- SQL for Beginners-Full Playlist
- Oracle SQL Articles-Getting Started
- Multitable Inserts
Setup
これらの問合せは、SQL Fiddleを使用して無料でオンラインですべて実行できます。
この記事の例では、次の表を提示する必要があります。,
これらの表は、SCOTTスキーマのEMP表およびDEPT表の変形です。 SCOTTスキーマの表を使用して、インターネット上で多くのOracleの例が表示されます。 元の表定義は、”$ORACLE_HOME/rdbms/admin/utlsampl”にあります。sql”スクリプト。
この記事では、EMPLOYEESテーブルの次のコピーも必要になります。 EMPLOYEE_NAME列とJOB列が必須になりました。 EMPLOYEE_ID列は、主キーであるため、暗黙的に必須です。,
COMMITおよびROLLBACK
すべてのデータ操作言語(DML)の変更は、トランザクションの一部として行われます。 これらは、COMMIT
ステートメントを使用して確認されるまで永続的ではありません。 コミットされると、変更を元に戻すことができる唯一の方法は、データを変更するための新しいDML文を発行することです。 複数の諸表でグループとしてまとめて一つの取引はない。
データ定義言語(DDL)コマンドは暗黙的なコミットを実行し、現在のセッション内の未処理のDML変更もすべて確認します。,コミットされていない変更を保持したくない場合は、ROLLBACK
ステートメントを使用してそれらを捨てることができます。 この記事の例の多くは、テスト後にROLLBACK
ステートメントを発行して、データを元の状態に戻します。
一部のツールやプログラミング言語はデフォルトで自動コミットするため、処理するすべてのDMLステートメントの後にCOMMIT
ステートメントを自動的に発行します。 んこ抜きに考えることがデフォルトの動作です。 そうではありません。,
基本挿入
最も単純なバージョンのINSERT
ステートメントは、挿入する列を指定しません。 これは、値が正しい列順序で指定されており、列値が省略されていないことを前提としています。 その結果、テーブルに列を追加するとステートメントが壊れるため、アプリケーションコードでは危険です。
列リストを指定すると、オプションの列がテーブルに追加された場合にステートメントが中断されないため、はるかに安全です。,
明示的な列リストを使用すると、ステートメントからオプションの列を削除し、ステートメント内の列の位置を入れ替えることもできます。 次の例では、MANAGER_ID、COMMISSIONおよびDEPARTMENT_ID列が削除され、EMPLOYEE_ID列が列リストおよび値リストの最後に移動されました。必須の列を見逃すことは、列のデフォルト値またはそれらを設定するトリガーがない限り、許可されていません。 次の例では、EMPLOYEES2テーブルの必須列であるJOB列は省略されています。,
ビューに挿入
ビューに関連付けられたベーステーブルに挿入することができます。 これに関連するいくつかの制限がありますが、初心者レベルの記事では少し範囲外です。 次の例では、EMPLOYEES2テーブルに単純なビューを作成し、そのテーブルに挿入します。
あまり頻繁には表示されませんが、インラインビューに挿入することもできます。 これは、明示的な列リストを使用するのではなく、挿入の列リストを制御するために使用できます。
挿入します。.., Select
単一のINSERT
ステートメントで複数の行を作成することができますINSERT ... SELECT
構文を使用します。 次の例では、EMPLOYEESテーブルのすべてのデータをEMPLOYEES2テーブルにコピーします。
INSERT
ステートメント内の列リストは、クエリ内のSELECT
リストと一致する必要があります。
通常のルールはステートメントのクエリ部分に適用されるため、データをフィルタリングしたり、他のテーブルに結合してデータを収集したりできます。,
スカラーサブクエリ
スカラーサブクエリは、INSERT
ステートメントの値をソースするために使用できます。 次の例では、SALARY列にはEMPLOYEES表から最大SALARYを返し、それに1000を追加するスカラーサブクエリが設定されています。
詳細については、以下を参照してください。
コメントを残す