Memodifikasi definisi sebuah tabel.
Sintaksis
ALTER TABLE name
action [, ...]
ALTER TABLE name
RENAME COLUMN column TO new_column
ALTER TABLE name
RENAME TO new_nameDalam sintaksis di atas, action dapat diatur ke salah satu klausa berikut:
ADD column type [ column_constraint [ ... ] ]
DROP COLUMN column
ADD table_constraint
DROP CONSTRAINT constraint_name [ CASCADE ]
ALTER [ COLUMN ] column_name [ SET DATA ] TYPE data_type [ COLLATE collation ] [ USING expression ]
ALTER [ COLUMN ] column_name SET DEFAULT expression
ALTER [ COLUMN ] column_name DROP DEFAULT
ALTER [ COLUMN ] column_name { SET | DROP } NOT NULL
DISABLE TRIGGER [ trigger_name | ALL | USER ]
OWNER TO { new_owner | CURRENT_USER | SESSION_USER }
REPLICA IDENTITY { DEFAULT | USING INDEX index_name | FULL | NOTHING }Deskripsi
Jika tampilan sederhana dibuat pada tabel dasar, Anda tidak perlu menghapus tampilan terkait sebelum mengeksekusi pernyataan alter table alter column untuk memodifikasi tipe data kolom dalam tabel dasar.
Pernyataan ALTER TABLE digunakan untuk mendefinisikan ulang tabel yang sudah ada. Pernyataan ini mendukung klausa berikut:
ADD column type: Menambahkan kolom ke tabel. Sintaksis penggunaan klausa ini dalam pernyataan ALTER TABLE sama dengan sintaksis penggunaannya dalam pernyataan CREATE TABLE.DROP COLUMN: Menghapus kolom dari tabel. Indeks dan batasan tabel yang melibatkan kolom juga akan dihapus.ADD table_constraint: Menambahkan batasan ke tabel. Sintaksis penggunaan klausa ini dalam pernyataan ALTER TABLE sama dengan sintaksis penggunaannya dalam pernyataan CREATE TABLE.DROP CONSTRAINT: Menghapus batasan dari tabel. Batasan yang berbeda dapat memiliki nama yang sama. Jika nama yang Anda tentukan dalam klausa cocok dengan beberapa batasan, semua batasan yang sesuai dengan nama tersebut akan dihapus.RENAME: Mengganti nama tabel atau kolom dalam tabel. Anda juga dapat menggunakan klausa ini untuk mengganti nama indeks, urutan, atau tampilan. Operasi penggantian nama tidak memengaruhi data yang tersimpan.
Anda hanya dapat mengeksekusi pernyataan ALTER TABLE pada tabel yang Anda miliki.
Ketika menggunakan klausa ADD COLUMN untuk menambahkan kolom, sel yang berpotongan dengan setiap baris yang ada dan kolom tersebut diisi dengan nilai default kolom. Jika tidak ada nilai default yang ditentukan dalam klausa DEFAULT, sel yang berpotongan dengan setiap baris yang ada dan kolom tersebut diisi dengan nilai null. Jika nilai volatile ditentukan dalam klausa DEFAULT, seluruh tabel akan ditulis ulang ketika Anda menambahkan kolom. Jika nilai non-volatile ditentukan dalam klausa DEFAULT, tabel tidak ditulis ulang. Jika tabel berisi sejumlah besar data, proses penulisan ulang dapat memakan waktu lama. Selama proses penulisan ulang, jumlah ruang disk yang digunakan menjadi dua kali lipat. Untuk menambahkan batasan CHECK atau NOT NULL, Anda dapat memindai tabel untuk memverifikasi bahwa nilai-nilai dalam kolom memenuhi batasan.
Ketika menggunakan klausa DROP COLUMN untuk menghapus kolom, kolom tersebut tidak dihapus secara langsung. Sebagai gantinya, kolom tersebut menjadi tidak terlihat oleh operasi SQL. Selama operasi penyisipan dan pembaruan berikutnya pada tabel, sel kolom tersebut diisi dengan nilai null. Setelah Anda mengeksekusi pernyataan DROP COLUMN, kolom tersebut segera dihapus. Namun, ruang disk yang ditempati oleh tabel tetap tidak berubah karena ruang disk yang ditempati oleh kolom yang dihapus tidak dikembalikan sampai baris yang ada diperbarui.
Anda tidak dapat memodifikasi tabel direktori sistem. Tabel berikut menjelaskan parameter valid untuk ALTER TABLE. Untuk informasi lebih lanjut tentang parameter, lihat CREATE TABLE.
Parameter
Parameter | Deskripsi |
name | Nama tabel yang ingin Anda modifikasi. Nama tersebut dapat disertifikasi skema. |
column | Nama kolom yang ingin Anda buat atau nama kolom yang sudah ada yang ingin Anda ganti namanya. |
new_column | Nama baru dari kolom yang sudah ada. |
new_name | Nama baru dari tabel. |
type | Tipe data dari kolom baru. |
table_constraint | Batasan baru untuk tabel. |
constraint_name | Nama batasan yang ingin Anda hapus. |
CASCADE | Menentukan bahwa objek yang bergantung pada batasan yang dihapus secara otomatis dihapus. |
Contoh
Tambahkan kolom dengan tipe data VARCHAR2 ke tabel.
ALTER TABLE emp ADD address VARCHAR2(30);Hapus kolom dari tabel.
ALTER TABLE emp DROP COLUMN address;Ganti nama kolom.
ALTER TABLE emp RENAME COLUMN address TO city;Ganti nama tabel.
ALTER TABLE emp RENAME TO employee;Tambahkan batasan CHECK ke tabel.
ALTER TABLE emp ADD CONSTRAINT sal_chk CHECK (sal > 500);Hapus batasan CHECK dari tabel.
ALTER TABLE emp DROP CONSTRAINT sal_chk;