PREPARATION
受験対策

Silverの例題解説
「S3.1 SQL コマンド(テーブル定義)」

今回は、Silverの「S3 開発/SQL - S3.1 SQL コマンド(テーブル定義)」からの出題です。

例題

3.28

テーブルに関する以下の説明について正しいものを2つ選びなさい。

  1. テーブルを新しく作成するにはCREATETABLE権限が必要である。
  2. ALTER TABLEでテーブルにUNIQUE制約を追加することはできるが、PRIMARY KEY制約を追加することはできない。

  3. ALTER TABLEでテーブルの列にデフォルト値(DEFAULT)を設定あるいは変更することができるが、これにより既存のデータの列の値が変更されることはない。

  4. テーブルの作成先のスキーマが何であろうと、テーブルを作成したユーザ、つまりCREATE TABLEを実行したユーザが、そのテーブルの所有者となる。

  5. テーブルの所有者はそのテーブルに関するすべての権限を有しているので、自分自身についてテーブルのSELECT権を剥奪(REVOKE)しても、引き続き、そのテーブルからSELECTすることができる。

※この例題は実際のOSS-DB技術者認定試験とは異なります。
例題公開日:2013年5月15日

解答と解説

テーブルを作成するには、作成先のスキーマへのCREATE権限が必要です。データベースにデフォルトで存在しているpublicスキーマには、publicに対してCREATE権限が付与されているので、誰でも新規にテーブルを作成できますが、新しく作成したスキーマにテーブルを作成するときは、そのスキーマの所有者以外のユーザはCREATEをGRANTされる必要があります。CREATETABLEという権限はありません。

ALTER TABLEはPRIMARY KEYも含め、どんな制約の追加、削除も可能です。ただし、既存のデータの内容によっては制約の変更が制限される場合もあります。

テーブルの列のデフォルト値は、あくまでも新規に追加(INSERT)されるデータについてのデフォルト値を定めるものなので、ALTER TABLEで設定が変更されても、既存のデータには影響がありません。

テーブルを作成するとき、CREATE TABLE schema_name.table_name...のようにして作成先のスキーマを指定することができます。上で述べた通り、作成先のスキーマへのCREATEがGRANTされている必要はありますが、作成されたテーブルの所有者は、そのスキーマの所有者とは無関係にCREATE TABLEを実行したユーザになります。

テーブルの所有者はテーブルに対するすべての権限を有しており、GRANTやREVOKEを実行することができます。自分自身のSELECT権限をREVOKEすることも可能で、この場合、自分が所有するテーブルからSELECTすることができなくなります。この状態でも、自分にSELECT権限をGRANTすることは可能で、そうすれば再び、SELECTできるようになります。

従って、正解はCとDです。

 

今回の解説について、理解できないポイントがあればどんどん質問をお寄せ下さい。
採用になった方にはLPI-Japanオリジナルの記念品を贈呈します。

※試験問題に関わるお問い合わせにつきましては、LPI-Japan事務局ではお応えできませんのでご了解ください。

企業の基幹システムや業務システムでの
OSS-DBの採用がますます拡大している中、
昇格・昇給・就職・転職に必ず役立つ認定資格になります

OSS-DBの受験対策について

受験の学習をサポートする情報や対策に役立つ情報をご紹介

サンプル問題/例題解説

例題 のアーカイブを試験ごとにまとめています。OSS-DB技術者認定試験の学習にお役立てください

学習教材・教育機関のご紹介

OSS-DB認定教材や教育機関について詳しくご説明いたします。

無料技術解説セミナー

受験準備をされていらっしゃる方々を対象に、無料技術解説セミナーの日程をお知らせしています。

OSS-DB道場

受験準備をされていらっしゃる方々を対象に、無料技術解説セミナーの日程をお知らせしています。

LPI-Japan
Platinum Sponsors

関連資格