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で確認できます。