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を追加するスカラーサブクエリが設定されています。

詳細については、以下を参照してください。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です