🧚 Dengar! Beekeeper Studio adalah GUI database yang cepat, modern, dan open source Unduh
25 Agustus 2025 Oleh Matthew Rathbone

Menambahkan kolom ke tabel yang sudah ada di SQL adalah tugas umum yang perlu Anda lakukan seiring berkembangnya skema database Anda. Statement ALTER TABLE memungkinkan Anda mengubah struktur tabel yang sudah ada tanpa kehilangan data. Panduan ini membahas cara menggunakan ALTER TABLE untuk menambahkan kolom, lengkap dengan contoh praktis.

Memahami ALTER TABLE

Perintah ALTER TABLE digunakan untuk menambah, menghapus, atau mengubah kolom pada tabel yang sudah ada. Perintah ini juga bisa dipakai untuk mengubah constraint tabel. Tutorial ini berfokus khusus pada penambahan kolom baru.

Saat menambahkan kolom baru, Anda harus menentukan nama kolom, tipe data, serta constraint tambahan atau nilai default jika ada. Operasi ini bersifat atomik dan tidak akan memengaruhi data yang sudah ada.

Sintaks Dasar untuk Menambahkan Kolom

Berikut sintaks dasar untuk menambahkan kolom baru ke tabel:

ALTER TABLE table_name
ADD column_name column_type [constraint];
  • table_name: Nama tabel tempat Anda menambahkan kolom.
  • column_name: Nama kolom baru.
  • column_type: Tipe data kolom baru (misalnya VARCHAR, INT, DATE, dll.).
  • constraint: Opsional. Constraint tambahan seperti NOT NULL, UNIQUE, atau nilai DEFAULT.

Contoh: Menambahkan Kolom

Mari mulai dengan tabel employees sederhana:

CREATE TABLE employees (
    id INT PRIMARY KEY,
    name VARCHAR(100),
    position VARCHAR(50)
);

-- Current data in employees table:
INSERT INTO employees (id, name, position) VALUES (1, 'Alice', 'Engineer');
INSERT INTO employees (id, name, position) VALUES (2, 'Bob', 'Manager');

SELECT * FROM employees;

Output:

+----+-------+----------+
| id | name  | position |
+----+-------+----------+
|  1 | Alice | Engineer |
|  2 | Bob   | Manager  |
+----+-------+----------+

Menambahkan Kolom Baru untuk Gaji

Mari tambahkan kolom baru bernama salary dengan tipe data DECIMAL(10, 2), yang dapat menyimpan angka hingga 10 digit, termasuk 2 angka desimal:

ALTER TABLE employees
ADD salary DECIMAL(10, 2);

Perintah ini mengubah tabel employees agar menyertakan kolom baru salary. Baris yang sudah ada akan bernilai NULL pada kolom ini sampai Anda memperbaruinya.

Memverifikasi Struktur Tabel

Pastikan kolom sudah ditambahkan dengan DESCRIBE atau SHOW COLUMNS (tergantung sistem database Anda):

DESCRIBE employees;

Output:

+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id       | int         | NO   | PRI | NULL    |       |
| name     | varchar(100)| YES  |     | NULL    |       |
| position | varchar(50) | YES  |     | NULL    |       |
| salary   | decimal(10,2)| YES |     | NULL    |       |
+----------+-------------+------+-----+---------+-------+

Menambahkan Kolom dengan Nilai Default

Anda juga bisa menambahkan kolom dengan nilai default. Berikut cara menambahkan kolom hire_date yang nilai default-nya tanggal saat ini:

ALTER TABLE employees
ADD hire_date DATE DEFAULT CURRENT_DATE;

Baris baru yang dimasukkan ke tabel employees akan otomatis memiliki hire_date berisi tanggal saat ini jika tidak ada nilai yang diberikan.

Menambahkan Kolom dengan Constraint NOT NULL

Menambahkan kolom dengan constraint NOT NULL ke tabel yang sudah ada perlu perhatian khusus. Anda tidak bisa begitu saja menambahkan kolom NOT NULL ke tabel yang sudah berisi data tanpa memberikan nilai default, karena hal ini akan melanggar constraint untuk baris yang sudah ada.

Masalah NOT NULL pada Data yang Sudah Ada

Perintah ini akan gagal jika tabel sudah berisi baris:

-- This will fail on tables with existing data
ALTER TABLE employees
ADD phone_number VARCHAR(20) NOT NULL;

Error terjadi karena baris yang sudah ada akan bernilai NULL pada kolom baru, sehingga melanggar constraint NOT NULL.

Solusi 1: Tambahkan Kolom dengan Nilai Default

Solusi paling sederhana adalah memberikan nilai default:

ALTER TABLE employees
ADD phone_number VARCHAR(20) NOT NULL DEFAULT 'Unknown';

Cara ini berhasil karena:

  1. Kolom ditambahkan dengan nilai default untuk semua baris yang sudah ada
  2. Constraint NOT NULL langsung terpenuhi
  3. Insert berikutnya harus memberikan nilai atau memakai nilai default

Solusi 2: Proses Bertahap

Untuk kontrol lebih atas nilainya, gunakan pendekatan bertahap:

-- Step 1: Add the column as nullable
ALTER TABLE employees
ADD phone_number VARCHAR(20);

-- Step 2: Update existing rows with appropriate values
UPDATE employees 
SET phone_number = 'Unknown' 
WHERE phone_number IS NULL;

-- Step 3: Add the NOT NULL constraint
ALTER TABLE employees
ALTER COLUMN phone_number SET NOT NULL;

Catatan: Sintaks untuk langkah 3 berbeda-beda tergantung sistem database:

  • PostgreSQL: ALTER COLUMN phone_number SET NOT NULL
  • MySQL: MODIFY COLUMN phone_number VARCHAR(20) NOT NULL
  • SQL Server: ALTER COLUMN phone_number VARCHAR(20) NOT NULL

Solusi 3: Nilai Default Kondisional

Anda bisa menetapkan nilai default yang berbeda berdasarkan data yang sudah ada:

-- Add column with temporary default
ALTER TABLE employees
ADD department VARCHAR(50) NOT NULL DEFAULT 'TBD';

-- Update with conditional logic based on position
UPDATE employees 
SET department = CASE 
    WHEN position = 'Engineer' THEN 'Engineering'
    WHEN position = 'Manager' THEN 'Management'
    ELSE 'General'
END;

-- Optionally remove the default if you don't want it for future inserts
ALTER TABLE employees
ALTER COLUMN department DROP DEFAULT;

Best Practice untuk Kolom NOT NULL

  1. Rencanakan sejak awal: Pertimbangkan constraint NOT NULL saat merancang tabel pertama kali
  2. Gunakan default yang bermakna: Pilih nilai default yang sesuai dengan logika bisnis Anda
  3. Uji terlebih dahulu: Selalu uji operasi ALTER TABLE pada salinan data Anda
  4. Dokumentasikan perubahan: Catat setiap modifikasi skema agar tim tetap sinkron
  5. Pertimbangkan migrasi data: Rencanakan cara mengisi kolom baru dengan data yang bermakna

Memverifikasi Constraint NOT NULL

Setelah menambahkan kolom NOT NULL, pastikan constraint-nya sudah diterapkan:

-- Check table structure
DESCRIBE employees;

-- Verify constraint by attempting to insert NULL (should fail)
INSERT INTO employees (id, name, position, phone_number) 
VALUES (3, 'Carol', 'Analyst', NULL);
-- Error: Column 'phone_number' cannot be null

Setelah tahu cara menambahkan kolom, Anda mungkin juga ingin mempelajari operasi ALTER TABLE lainnya:

Operasi-operasi ini penting untuk memelihara dan mengembangkan skema database Anda seiring berubahnya kebutuhan aplikasi.

Kesimpulan

Menggunakan ALTER TABLE untuk menambahkan kolom memungkinkan modifikasi skema tanpa kehilangan data. Fleksibilitas ini membantu database Anda beradaptasi dengan kebutuhan aplikasi yang terus berkembang. Selalu backup data Anda sebelum mengubah skema, dan pastikan kompatibilitasnya dengan logika aplikasi yang sudah ada.

Untuk operasi database yang lebih canggih dan mengelola database SQL Anda secara efektif, coba gunakan Beekeeper Studio, yang menyediakan antarmuka intuitif untuk manajemen skema database dan operasi SQL.

Beekeeper Studio Adalah GUI Database Gratis & Open Source

Tool query & editor SQL terbaik yang pernah saya pakai. Semua yang saya butuhkan untuk mengelola database ada di sini. - ⭐⭐⭐⭐⭐ Mit

Beekeeper Studio cepat, intuitif, dan mudah digunakan. Beekeeper mendukung banyak sekali database, dan berjalan mulus di Windows, Mac, dan Linux.

Versi Linux Beekeeper punya fitur 100% lengkap, tanpa potong kompas, tanpa kompromi fitur.

Apa Kata Pengguna tentang Beekeeper Studio

★★★★★
"Beekeeper Studio sepenuhnya menggantikan workflow SQL lama saya. Cepat, intuitif, dan membuat kerja dengan database kembali menyenangkan."
— Alex K., Database Developer
★★★★★
"Saya sudah mencoba banyak GUI database, tapi Beekeeper punya keseimbangan sempurna antara fitur dan kesederhanaan. Langsung jalan."
— Sarah M., Full Stack Engineer

Siap Meningkatkan Workflow SQL Anda?

download Unduh Gratis