全部产品
Search
文档中心

PolarDB:ALTER TABLE

更新时间:Jul 02, 2025

Memodifikasi definisi sebuah tabel.

Sintaksis

ALTER TABLE name
  action [, ...]
ALTER TABLE name
  RENAME COLUMN column TO new_column
ALTER TABLE name
  RENAME TO new_name

Dalam 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.

Catatan
  • 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;