今回は、Silverの「開発/SQL - SQLコマンド(スキーマ)」からの出題です。
This is foo, This is bar, This is public の3行が返される。
This is bar, This is public の2行が返される。
This is bar の1行だけが返される。
This is foo の1行だけが返される。
上記のいずれでもない。
※この例題は実際のOSS-DB技術者認定試験とは異なります。
例題公開日:2016年7月25日
PostgreSQLではテーブルをはじめ、ほとんどのオブジェクトは何らかのスキーマに所属しています。オブジェクト名の前にスキーマ名とピリオドを付けて明示的にスキーマを指定することもできますが、スキーマ名を省略した場合は、スキーマ検索パスを利用してオブジェクトを検索し、そこで見つかったオブジェクトを参照します。
スキーマ検索パスは
SHOW search_path;
とすることで調べられますが、デフォルトでは”$user”,publicとなっており、ユーザ名と同じスキーマ名が最優先、次いでpublicという順になっています。search_pathは例題にあるように、SETを使って変更することができます。この例では、”$user”,bar,publicに設定しましたが、ユーザ名がfooなので、スキーマ検索パスはfoo,bar,publicとなります。
sampleという名前のテーブルは、foo, bar, public いずれのスキーマにもありますが、スキーマ名を省略した場合は、最も優先度の高いfooスキーマのテーブルが参照され、他のテーブルは参照されません。つまり、
SELECT * FROM foo.sample;
を実行したのと同じことになります。
従って、正解はDです。
今回の解説について、理解できないポイントがあればどんどん質問をお寄せ下さい。
採用になった方にはLPI-Japanオリジナルの記念品を贈呈します。
※試験問題に関わるお問い合わせにつきましては、LPI-Japan事務局ではお応えできませんのでご了解ください。
© EDUCO All Rights Reserved.