今回は、Silverの「S3 開発/SQL - S3.1 SQL コマンド(ビュー)」からの出題です。
※この例題は実際のOSS-DB技術者認定試験とは異なります。
例題公開日:2017年10月31日
ビューは CREATE VIEW view_name AS SELECT …という形式で、SELECT文により定義されます。実体としてのデータを保持しないので、余分なスペースを消費することがありませんが、テーブルとほぼ同じように使うことができ、SQL文でテーブル名を記述できる箇所の多くで、ビュー名を記述することができます。
テーブル名の代わりにビュー名を記述できない例としては、CREATE INDEXによるインデックスの作成(対象はテーブルのみです)、UPDATE/DELETE/INSERTによるデータの更新(更新可能なビューもありますが、テーブルの更新に比べるといろいろと制限があります)などがありますが、CREATE VIEWでビューを作成するときに、作成済みの別のビューを参照することもできますし、JOINで表結合するときは、ビューはテーブルと全く区別なく使用できます。
ビューからの検索では、元となるテーブルからのSELECTに内部的に展開した上で実行プランが決められますので、ビューを定義したことで検索が早くなることはありません。
ビューの定義を変更するには、DROP VIEWで削除してからCREATE VIEWで再作成する方法と、CREATE OR REPLACE VIEWで定義を変更する方法があります。前者ではどのような変更をしようとそれ自体は自由ですが、ビューに依存するオブジェクトが存在するときは、DROP VIEWによるビューの削除が制限されます。後者の場合も、ビューに依存するオブジェクトへの影響を防ぐため、ビューへの列の追加は可能ですが、既存の列の削除、順序やデータ型の変更はできないという制限があります。なお、列の名前やデータ型が同じであれば、ビューを定義する式は変更できます。
従って、正解はCです。
今回の解説について、理解できないポイントがあればどんどん質問をお寄せ下さい。
採用になった方にはLPI-Japanオリジナルの記念品を贈呈します。
※試験問題に関わるお問い合わせにつきましては、LPI-Japan事務局ではお応えできませんのでご了解ください。
© EDUCO All Rights Reserved.