別名

別名 は、 表、表のパーティション、ビュー、またはデータベース・ファイルのメンバーの代替名と考えてください。 名前または別名によって、SQL ステートメントで表やビューを参照することができます。 別名は、同一またはリモートのリレーショナル・データベース内の表、表のパーティション、ビュー、またはデータベース・ファイルのメンバーを参照することができます。

別名は、表名やビュー名を使用できる場所であれば基本的にどこでも使用できますが、 以下の例外があります。

  • CREATE TABLE または CREATE VIEW ステートメントのように新規の表名またはビュー名の場合は、別名を使用しないでください。 例えば、PERSONNEL という別名が作成された場合、CREATE TABLE PERSONNEL のような後続のステートメントはエラーになります。
  • 表の個々のパーティションまたはデータベース・ファイルのメンバーを参照している別名は、選択ステートメント、CREATE INDEX、DELETE、INSERT、MERGE、SELECT INTO、SET 変数、UPDATE、または VALUES INTO ステートメントでのみ使用することができます。

別名によって、ファイルの一時変更を避けることもできます。 別名の方が一時変更よりも都合がよいだけではなく、別名は一度だけ作成すればよい永続オブジェクトでもあります。

別名が参照するオブジェクトが存在しない場合でも、別名を作成することはできます。 ただし、別名を参照するステートメントが実行される時点では、そのオブジェクトは存在している必要があります。オブジェクトが存在しない場合に別名を作成すると、警告が戻されます。 ある別名が別の別名を参照することはできません。

3 部構成の名前を使用し、分散データを参照するステートメントは、結果として、リモート・リレーショナル・データベースへの DRDA アクセスを行います。アプリケーション・プログラムがリモート・オブジェクトと DRDA アクセスに 3 部構成の名前の別名 を使用する場合、アプリケーション・プログラムは、3 部構成の名前に指定されているロケー ションごとにバインドする必要があります。 また、各別名はローカル・サイトで定義する必要があります。 リモート・サイトでの別名は、参照される別名が結果的に表または ビューを参照している限り、さらに別のサーバーを参照することができます。

別名によって表、表のパーティション、ビュー、またはデータベース・ファイルのメンバーを参照するというオプションは、明示的に構文図に示されることはありません。また、SQL ステートメントの説明で記述されることもありません。

新規の別名は、既存の表、ビュー、索引、ファイル、または別名と同じ完全修飾名を持つことはできません。

SQL ステートメントで別名を使用する効果は、テキスト置換の効果と似ています。別名は、SQL ステートメントの実行前に定義しておく必要がありますが、修飾された基本表名、表のパーティション名、ビュー名、またはデータベース・ファイルのメンバー名によってステートメントの準備時間に置き換えられます。 例えば、PBIRD.SALES が DSPN014.DIST4_SALES_148 の別名である場合、次のステートメントの実行時には、

   SELECT * FROM PBIRD.SALES

次のようになります。

   SELECT * FROM DSPN014.DIST4_SALES_148

別名をいったん除去して、別の表を参照する別名を再作成するときの効果は、 その別名を参照するステートメントによって異なります。

  • その別名を参照している SQL データ・ステートメントまたは SQL データ変更ステートメントは、 次の実行時に暗黙的に再バインドされます。
  • その別名を参照する索引は影響を受けません。
  • その別名を参照するマテリアライズ照会表またはビューは影響を受けません。

既存の Db2® for z/OS® アプリケーションの構文を使えるようにするには、CREATE ALIAS および DROP ALIAS ステートメントで、ALIAS の代わりに SYNONYM を使用することができます。