DDLによる表とその関係の管理複数選択43 / 50 問

ALTER TABLE文のSET UNUSED句について、正しい記述はどれですか。2つ選択してください。

ASET UNUSEDを設定した列は、SELECT * の結果に表示されない✓
BSET UNUSEDを設定した列は、ALTER TABLE文で元の使用可能な状態に戻せる
CSET UNUSEDを設定した列と同じ名前の列を、新たに追加できる✓
DSET UNUSEDを設定すると、列のデータが格納されていた領域がすぐに解放される
正解:A・C解説

SET UNUSEDは、列を未使用(UNUSED)として扱うように設定する句です。列のデータを実際に削除するわけではないため、DROP COLUMNより短時間で処理できます。

-- 列を未使用に設定する(データは残るが、列としては見えなくなる)
ALTER TABLE employees SET UNUSED (commission_pct);

-- 未使用の列を後でまとめて削除する(ここで領域が解放される)
ALTER TABLE employees DROP UNUSED COLUMNS;

各選択肢の検討

  • A(正):未使用に設定した列は、SELECT *やDESCRIBEの結果に表示されなくなります。
  • B(誤):一度未使用に設定した列は、元に戻せません。
  • C(正):未使用の列は表の列として扱われないため、同じ名前の列を新たに追加できます。
  • D(誤):SET UNUSEDの時点では領域は解放されません。DROP UNUSED COLUMNSを実行したときに解放されます。

DROP COLUMNとSET UNUSEDの違い

方法データの削除処理時間元に戻せるか
DROP COLUMNすぐに削除長い戻せない
SET UNUSED削除しない短い戻せない

未使用に設定された列がある表は、データ・ディクショナリ・ビューUSER_UNUSED_COL_TABSで確認できます。

前後の問題