メインコンテンツへ
データベースGRANT/REVOKE(権限管理)

あるシステム管理者が、ユーザ「yamada」に対して「売上テーブル」のデータ参照(SELECT)のみを許可し、データの変更は禁止したい。このとき適切なSQL文はどれか。

ア.CREATE VIEW 売上閲覧 AS SELECT * FROM 売上テーブル WHERE ユーザ = yamada;
イ.ALTER TABLE 売上テーブル SET PERMISSION yamada READ ONLY;
ウ.GRANT SELECT ON 売上テーブル TO yamada;正解
エ.INSERT INTO 権限テーブル VALUES (yamada, 売上テーブル, SELECT);

解説

GRANTは「入室許可証を渡す」イメージです。「yamadaさんに売上テーブルへの参照(SELECT)権限を与えなさい」という命令です。入館証を発行するように、データベースの扉の鍵を渡します。

なぜ ウ が正解か

GRANT文はDCL(Data Control Language)に分類され、「GRANT 権限 ON 対象 TO ユーザ」の構文でアクセス権限を付与します。SELECTのみ付与することでINSERT/UPDATE/DELETEは禁止されます。権限を取り消す場合はREVOKE SELECT ON 売上テーブル FROM yamada;を使います。ウが正解です。

なぜ ア は間違いか

CREATE VIEWはビューを作成するDDL命令です。権限管理のGRANT/REVOKEとは別の命令です。ビューでアクセス制御することも可能ですが、この文法は権限付与ではありません。

なぜ イ は間違いか

ALTER TABLEはテーブルの構造を変更するDDL命令です。「SET PERMISSION」という構文はSQLの標準文法ではありません。権限付与にはGRANT文を使います。

なぜ エ は間違いか

INSERTは既存テーブルへのデータ挿入命令です。権限テーブルに直接INSERTしてもDBMSの権限管理システムは更新されません。権限付与はGRANT文を使用します。

出典: AI生成問題(学習用)