Perintah ALTER TABLE

📚 Pengenalan Perintah ALTER TABLE

Perintah ALTER TABLE digunakan untuk memodifikasi struktur tabel yang ada. Anda dapat menambah, mengubah, atau menghapus kolom, menambah atau menghapus constraint, dan melakukan perubahan lain pada struktur tabel.

Sintaks ALTER TABLE

Sintaks dasar untuk ALTER TABLE adalah:

ALTER TABLE nama_tabel
action;

Menambah Kolom

Untuk menambah kolom baru ke tabel:

ALTER TABLE pelanggan
ADD COLUMN telepon VARCHAR(15);

Anda juga dapat menambahkan beberapa kolom sekaligus:

ALTER TABLE pelanggan
ADD COLUMN telepon VARCHAR(15),
ADD COLUMN alamat TEXT,
ADD COLUMN kota VARCHAR(50) DEFAULT 'Jakarta';

Mengubah Kolom

Untuk mengubah definisi kolom yang ada:

ALTER TABLE pelanggan
MODIFY COLUMN nama VARCHAR(100);

Catatan: Sintaks untuk mengubah kolom mungkin berbeda tergantung pada sistem database. Di SQL Server, gunakan ALTER COLUMN, dan di PostgreSQL, gunakan ALTER COLUMN TYPE.

Menghapus Kolom

Untuk menghapus kolom dari tabel:

ALTER TABLE pelanggan
DROP COLUMN telepon;

Anda juga dapat menghapus beberapa kolom sekaligus:

ALTER TABLE pelanggan
DROP COLUMN telepon,
DROP COLUMN alamat;

Menambah Constraint

Untuk menambah constraint ke tabel:

Menambah NOT NULL

ALTER TABLE pelanggan
MODIFY COLUMN nama VARCHAR(50) NOT NULL;

Menambah UNIQUE

ALTER TABLE pelanggan
ADD CONSTRAINT uc_email UNIQUE (email);

Menambah FOREIGN KEY

ALTER TABLE pesanan
ADD CONSTRAINT fk_pesanan_pelanggan
FOREIGN KEY (pelanggan_id) REFERENCES pelanggan(id);

Menambah CHECK

ALTER TABLE produk
ADD CONSTRAINT chk_harga_positif CHECK (harga > 0);

Menghapus Constraint

Untuk menghapus constraint dari tabel:

ALTER TABLE pelanggan
DROP CONSTRAINT uc_email;

Mengganti Nama Kolom

Untuk mengganti nama kolom:

ALTER TABLE pelanggan
RENAME COLUMN nama TO nama_lengkap;

Catatan: Sintaks untuk mengganti nama kolom mungkin berbeda tergantung pada sistem database. Di SQL Server, gunakan sp_rename, dan di PostgreSQL, gunakan RENAME COLUMN.

Mengganti Nama Tabel

Untuk mengganti nama tabel:

ALTER TABLE pelanggan
RENAME TO customer;

Catatan: Sintaks untuk mengganti nama tabel mungkin berbeda tergantung pada sistem database. Di SQL Server, gunakan sp_rename.

ALTER TABLE di Berbagai Sistem Database

Sintaks untuk ALTER TABLE mungkin sedikit berbeda tergantung pada sistem database yang digunakan:

MySQL

-- Menambah kolom
ALTER TABLE pelanggan ADD COLUMN telepon VARCHAR(15);

-- Mengubah kolom
ALTER TABLE pelanggan MODIFY COLUMN nama VARCHAR(100);

-- Menghapus kolom
ALTER TABLE pelanggan DROP COLUMN telepon;

PostgreSQL

-- Menambah kolom
ALTER TABLE pelanggan ADD COLUMN telepon VARCHAR(15);

-- Mengubah kolom
ALTER TABLE pelanggan ALTER COLUMN nama TYPE VARCHAR(100);

-- Menghapus kolom
ALTER TABLE pelanggan DROP COLUMN telepon;

SQL Server

-- Menambah kolom
ALTER TABLE pelanggan ADD telepon VARCHAR(15);

-- Mengubah kolom
ALTER TABLE pelanggan ALTER COLUMN nama VARCHAR(100);

-- Menghapus kolom
ALTER TABLE pelanggan DROP COLUMN telepon;

Oracle

-- Menambah kolom
ALTER TABLE pelanggan ADD telepon VARCHAR2(15);

-- Mengubah kolom
ALTER TABLE pelanggan MODIFY nama VARCHAR2(100);

-- Menghapus kolom
ALTER TABLE pelanggan DROP COLUMN telepon;

Contoh Lengkap ALTER TABLE

Berikut adalah contoh lengkap untuk memodifikasi tabel 'pelanggan':

-- Menambah kolom baru
ALTER TABLE pelanggan
ADD COLUMN telepon VARCHAR(15);

-- Mengubah tipe data kolom
ALTER TABLE pelanggan
MODIFY COLUMN nama VARCHAR(100);

-- Menambah constraint
ALTER TABLE pelanggan
ADD CONSTRAINT uc_email UNIQUE (email);

-- Menghapus kolom
ALTER TABLE pelanggan
DROP COLUMN alamat;

Menampilkan Struktur Tabel

Untuk menampilkan struktur tabel setelah modifikasi:

MySQL

DESCRIBE pelanggan;

PostgreSQL

\d pelanggan;

SQL Server

EXEC sp_columns pelanggan;

Oracle

DESCRIBE pelanggan;

Best Practices untuk ALTER TABLE

Coba Sendiri

Anda dapat mencoba kode SQL di atas di editor berikut:

💡 Tips Perintah ALTER TABLE

Saat mengubah struktur tabel yang sudah berisi data, pastikan perubahan tidak akan menyebabkan kehilangan data. Misalnya, saat mengubah tipe data dari VARCHAR(50) ke VARCHAR(100), data yang ada akan aman, tetapi sebaliknya mungkin menyebabkan pemotongan data.