HOME > 受験対策 > サンプル問題/例題解説 > Silverの例題解説「開発/SQL」 > SQLコマンド(スキーマ)

Silverの例題解説「開発/SQL - SQLコマンド(スキーマ)」

今回は、Silverの「開発/SQL - SQLコマンド(スキーマ)」からの出題です。

例題

Q. DROP SCHEMA foo の結果として適切なものを1つ選びなさい。
  1. A. PostgreSQLには DROP SCHEMA コマンドが存在しないのでエラーになる。スキーマを削除するにはDROP USER foo を実行する。
  2. B. ユーザ foo が存在していたらエラーになる。
  3. C. スキーマ foo 内にオブジェクトが存在していたら、エラーになる。
  4. D. スキーマ foo 内にオブジェクトが存在していたら、自動的に publicに移動される。
  5. E. スキーマ foo と、その中に存在するオブジェクトすべてが削除される。

※この例題は実際のOSS-DB技術者認定試験とは異なります。

解答と解説

データベースの種類によっては、ユーザとスキーマの区別の説明が難しいくらいに一体化しているものもあります。
PostgreSQLでは、デフォルトのスキーマ検索パスの先頭がユーザ名と同じスキーマになっている、という程度の弱いつながりはあるものの、スキーマとユーザは全く別物で、ユーザ名と同じスキーマが存在するとは限らず、また一人のユーザが複数のスキーマを所有することもできます。
DROP SCHEMAを実行すると、そのスキーマと、スキーマ内のオブジェクトすべてが削除されます。
スキーマを削除できるのはそのスキーマの所有者とスーパーユーザだけですが、スキーマ内のオブジェクトは、そのオブジェクトの所有者と関係なく削除されます。
なお、削除対象のオブジェクトに依存するオブジェクトが別のスキーマ内に存在するときは、デフォルトでは削除が拒絶されます。

従って、正解はEです。

https://www.postgresql.jp/document/9.6/html/sql-dropschema.html

  • 今回の解説について、理解できないポイントがあればどんどん質問をお寄せ下さい。
  • 採用になった方にはLPI-Japanオリジナルの記念品を贈呈します。
  • ご質問・ご意見はこちら
  • ※試験問題に関わるお問い合わせにつきましては、LPI-Japan事務局ではお応えできませんのでご了解ください。

ページトップへ