MYSQL – ALTER, DROP, RENAME, MODIFY

⚡ Ringkasan Cerdas

ALTER, DROP, RENAME, dan MODIFY adalah MySQL Perintah yang mengubah bentuk basis data setelah basis data tersebut sedang digunakan. Perintah ini menambahkan, menghapus, mengganti nama, dan mendefinisikan ulang objek seperti tabel dan kolom tanpa membuang baris yang sudah tersimpan.

  • Perintah ALTER: Perintah ALTER TABLE mendefinisikan ulang objek yang sudah ada, sehingga skema yang aktif dapat menyerap persyaratan baru tanpa perlu membangun ulang.
  • TAMBAHKAN KOLOM: Perintah ALTER TABLE ADD COLUMN menambahkan sebuah kolom, dan baris yang sudah ada akan mempertahankan semua nilai yang sudah dimilikinya.
  • Perintah DROP: Perintah DROP menghapus secara permanen: sebuah basis data, sebuah tabel, atau sebuah kolom tunggal melalui perintah ALTER TABLE DROP COLUMN.
  • 🔁 Perintah RENAME: Perintah RENAME TABLE hanya mengubah nama tabel, dan tidak ada data di dalamnya yang hilang.
  • Kata kunci PERUBAHAN: Perintah CHANGE mengubah nama kolom dan mendefinisikan ulang tipe serta batasan kolom dalam satu pernyataan, sehingga kedua nama kolom tersebut wajib diisi.
  • 🧩 Kata kunci MODIFIKASI: MODIFY mengubah tipe dan batasan sambil tetap mempertahankanping Nama tersebut, pilihan yang lebih aman untuk pengeditan hanya teks.
  • 📍 SETELAH Kata kunci: AFTER menempatkan kolom yang baru ditambahkan pada posisi yang dipilih, bukan di akhir tabel.

MySQL UBAH, HAPUS, GANTI NAMA, dan MODIFIKASI

Apa itu perintah ALTER? MySQL?

The MENGUBAH Perintah ini memodifikasi basis data, tabel, tampilan, atau objek basis data lain yang sudah ada dan perlu diubah selama siklus hidup basis data. Ini adalah perintah yang memungkinkan skema untuk berevolusi setelah dibuat dan diisi dengan data.

Kebutuhan bisnis jarang sekali statis, dan desain basis data harus bergerak seiring dengan perubahan tersebut. Misalkan desain basis data Myflix telah diimplementasikan dan pengguna sedang menggunakannya, dan baru kemudian tim menyadari bahwa informasi penting telah terlewatkan. Tidak ada yang ingin kehilangan baris data yang sudah ada; mereka hanya ingin mencatat informasi baru di sampingnya.

Perintah ALTER mencakup situasi tersebut secara tepat. Perintah ini dapat mengubah tipe data suatu kolom dari string menjadi angka, mengganti nama kolom, atau menambahkan kolom baru ke dalam tabel, sementara data yang sudah tersimpan dalam tabel tetap utuh.

Setelah tujuan perintah ditetapkan, langkah selanjutnya adalah sintaks yang menjalankannya.

MySQL Sintaks ALTER

Sintaks dasar yang digunakan untuk menambahkan kolom ke tabel yang sudah ada ditunjukkan di bawah ini.

ALTER TABLE `table_name` ADD COLUMN `column_name` `data_type`;

SINI

  • “UBAH TABEL `nama_tabel`” adalah perintah yang memberitahu MySQL server untuk mengubah tabel bernama `nama_tabel`.
  • “TAMBAHKAN KOLOM `nama_kolom` `tipe_data`” adalah perintah yang memberitahu MySQL server untuk menambahkan kolom baru bernama `column_name` dengan tipe data `data_type`.

Misalkan Myflix telah memperkenalkan penagihan dan pembayaran online. Untuk mendukungnya, kolom untuk nomor kartu kredit harus ditambahkan ke tabel anggota. Sebelum melakukan perubahan apa pun, ada baiknya melihat struktur tabel yang ada. Skrip yang ditunjukkan di bawah ini melakukan hal itu.

SHOW COLUMNS FROM `members`;
Bidang Tipe Null kunci Default ekstra
Nomor keanggotaan int (11) TIDAK PRI NULL kenaikan_otomatis
nama lengkap varchar(350) TIDAK NULL
jenis kelamin varchar(6) YES NULL
tanggal_lahir tanggal YES NULL
alamat fisik varchar(255) YES NULL
alamat pos varchar(255) YES NULL
nomor_kontak varchar(75) YES NULL
email varchar(255) YES NULL

💡 Catatan pada int(11): Angka dalam tanda kurung hanyalah lebar tampilan. MySQL Versi 8.0.17 menghapusnya untuk tipe data integer, sehingga server modern melaporkan kolom ini hanya sebagai intUkuran penyimpanan tidak berubah.

Skrip yang ditunjukkan di bawah ini menambahkan kolom baru ke tabel anggota.

ALTER TABLE `members` ADD COLUMN `credit_card_number` VARCHAR(25);

Menjalankan skrip ini terhadap myflixdb menambahkan kolom bernama credit_card_number ke tabel members dengan tipe data VARCHAR. Menjalankan skrip SHOW COLUMNS lagi memberikan hasil berikut.

Bidang Tipe Null kunci Default ekstra
Nomor keanggotaan int (11) TIDAK PRI NULL kenaikan_otomatis
nama lengkap varchar(350) TIDAK NULL
jenis kelamin varchar(6) YES NULL
tanggal_lahir tanggal YES NULL
alamat fisik varchar(255) YES NULL
alamat pos varchar(255) YES NULL
nomor_kontak varchar(75) YES NULL
email varchar(255) YES NULL
nomor kartu kredit varchar(25) YES NULL

Baris yang disorot mengkonfirmasi bahwa credit_card_number telah ditambahkan ke tabel members, dan data yang sudah ada di kolom lain tidak terpengaruh oleh penambahan tersebut.

Menambahkan kolom hanyalah setengah dari cerita. Sebuah skema juga harus menghapus objek yang tidak lagi dibutuhkan, dan itulah tugas dari perintah DROP.

Apa itu perintah DROP? MySQL?

Perintah DROP menghapus objek secara permanen. Perintah ini digunakan untuk

  1. Hapus basis data dari MySQL Server.
  2. Menghapus objek seperti tabel atau kolom dari basis data.

⚠️ Peringatan: Perintah DROP tidak dapat dibatalkan. Baik objek maupun baris di dalamnya tidak dapat dipulihkan tanpa cadangan, jadi jalankan perintah SELECT terhadap target dan konfirmasikan cadangan terlebih dahulu.

Menjatuhkanping kolom

Pada contoh ALTER di atas, sebuah kolom bernama credit_card_number ditambahkan ke tabel members. Misalkan fitur penagihan online ditunda dan kolom tersebut harus dihapus lagi. Skrip berikut melakukannya.

ALTER TABLE `members` DROP COLUMN `credit_card_number`;

Menjalankan skrip tersebut akan menghapus kolom credit_card_number dari tabel members. Mencantumkan kembali kolom-kolom tersebut akan mengkonfirmasi hasilnya.

SHOW COLUMNS FROM `members`;
Bidang Tipe Null kunci Default ekstra
Nomor keanggotaan int (11) TIDAK PRI NULL kenaikan_otomatis
nama lengkap varchar(350) TIDAK NULL
jenis kelamin varchar(6) YES NULL
tanggal_lahir tanggal YES NULL
alamat fisik varchar(255) YES NULL
alamat pos varchar(255) YES NULL
nomor_kontak varchar(75) YES NULL
email varchar(255) YES NULL

Nomor kartu kredit telah hilang dari daftar kolom.

DROP MEJA

Sintaks untuk menghapus seluruh tabel dari basis data adalah sebagai berikut.

DROP TABLE `sample_table`;

Jika diterapkan pada objek nyata, pernyataan tersebut akan terlihat seperti ini.

DROP TABLE `categories_archive`;

Menjalankan perintah ini akan menghapus tabel bernama `categories_archive` dan semua baris di dalamnya dari basis data.

JATUHKAN DATABASE

Kata kunci yang sama menghapus seluruh skema. Menambahkan IF EXISTS akan menekan kesalahan tersebut. MySQL Akan muncul pengecualian ketika target sudah hilang, yang berguna di dalam skrip yang dijalankan lebih dari sekali.

DROP DATABASE IF EXISTS `myflixdb_backup`;

Menghapus suatu objek bersifat final. Namun, jika objek itu sendiri harus tetap ada dan hanya namanya yang salah, maka perintah RENAME adalah alat yang tepat.

Apa itu perintah RENAME? MySQL?

Perintah RENAME mengubah nama objek basis data yang sudah ada, seperti tabel atau kolom, menjadi nama baru. Mengganti nama tabel tidak menyebabkan hilangnya data yang terdapat di dalamnya.

Perintah tersebut memiliki sintaks dasar sebagai berikut.

RENAME TABLE `current_table_name` TO `new_table_name`;

Untuk mengganti nama tabel movierentals menjadi movie_rentals, skrip di bawah ini digunakan.

RENAME TABLE `movierentals` TO `movie_rentals`;

Menjalankan perintah tersebut akan mengubah nama tabel `movierentals` menjadi `movie_rentals`. Karena perubahan nama hanya berupa perubahan label, pernyataan yang sama jika dibalik akan mengembalikan nama aslinya.

RENAME TABLE `movie_rentals` TO `movierentals`;

Perintah RENAME TABLE menangani nama tabel. Mengganti nama tabel kolom, dan mengubah apa yang ada di dalamnya, adalah tugas dari kata kunci CHANGE.

Ubah Kata Kunci

Kata kunci CHANGE memungkinkan Anda untuk

  1. Ubah nama kolom
  2. Ubah tipe data kolom
  3. Ubah batasan kolom

Perhatikan sebuah contoh. Kolom full_names dalam tabel members memiliki tipe data varchar dengan lebar 350, seperti yang dikonfirmasi oleh skrip di bawah ini.

SHOW COLUMNS FROM `members`;
Bidang Tipe Null kunci Default ekstra
Nomor keanggotaan int (11) TIDAK PRI NULL kenaikan_otomatis
nama lengkap varchar(350) TIDAK NULL
jenis kelamin varchar(6) YES NULL
tanggal_lahir tanggal YES NULL
alamat fisik varchar(255) YES NULL
alamat pos varchar(255) YES NULL
nomor_kontak varchar(75) YES NULL
email varchar(255) YES NULL

Misalkan persyaratannya adalah untuk

  1. Ubah nama kolom dari “full_names” menjadi “fullname”
  2. Ubah ke tipe data char dengan lebar 250.
  3. Tambahkan batasan NOT NULL

Ketiga perubahan tersebut dilakukan dengan satu pernyataan CHANGE.

ALTER TABLE `members` CHANGE COLUMN `full_names` `fullname` char(250) NOT NULL;

Menjalankan perintah tersebut terhadap myflixdb dan kemudian menjalankan skrip SHOW COLUMNS memberikan hasil sebagai berikut.

Bidang Tipe Null kunci Default ekstra
Nomor keanggotaan int (11) TIDAK PRI NULL kenaikan_otomatis
nama lengkap char (250) TIDAK NULL
jenis kelamin varchar(6) YES NULL
tanggal_lahir tanggal YES NULL
alamat fisik varchar(255) YES NULL
alamat pos varchar(255) YES NULL
nomor_kontak varchar(75) YES NULL
email varchar(255) YES NULL

Kolom tersebut sekarang bernama fullname, berisi char(250), dan menolak nilai NULL.

Ubah kata kunci

Kata kunci MODIFY memungkinkan Anda untuk

  1. Ubah tipe data kolom.
  2. Ubah batasan kolom

Pada contoh CHANGE di atas, nama field harus dimasukkan dua kali, meskipun penggantian nama hanya sebagian dari tujuan. Menghilangkan nama kolom dari pernyataan CHANGE akan menghasilkan kesalahan. Jika hanya tipe data dan batasan yang perlu disesuaikan dan namanya harus tetap sama, perintah MODIFY akan menyelesaikan pekerjaan tersebut hanya dengan sekali menyebut kolom tersebut.

Skrip di bawah ini mengubah lebar kolom "fullname" dari 250 menjadi 50.

ALTER TABLE `members` MODIFY `fullname` char(50) NOT NULL;

Menjalankan perintah tersebut terhadap myflixdb dan kemudian menjalankan skrip SHOW COLUMNS akan memberikan hasil seperti yang ditunjukkan di bawah ini.

Bidang Tipe Null kunci Default ekstra
Nomor keanggotaan int (11) TIDAK PRI NULL kenaikan_otomatis
nama lengkap char (50) TIDAK NULL
jenis kelamin varchar(6) YES NULL
tanggal_lahir tanggal YES NULL
alamat fisik varchar(255) YES NULL
alamat pos varchar(255) YES NULL
nomor_kontak varchar(75) YES NULL
email varchar(255) YES NULL

⚠️ Peringatan: Penyempitan kolom akan memotong data yang tidak lagi muat. Nama apa pun yang lebih panjang dari 50 karakter akan dipotong oleh pernyataan ini, jadi periksa nilai terpanjang yang ada dengan menggunakan MEMILIH lakukan pengecekan sebelum memperkecil ukuran kolom.

UBAH vs MODIFIKASI vs GANTI NAMA KOLOM

Ketiga kata kunci tersebut saling tumpang tindih, dan memilih kata kunci yang salah adalah sumber kesalahan yang paling umum di bidang ini. Tabel di bawah ini menyajikan ketiganya secara berdampingan.

Kata kunci Mengganti nama kolom Mengubah tipe dan batasan Nama lama diperlukan Penggunaan khas
Ganti Ya Ya Ya, ditambah nama barunya Ubah nama dan definisikan ulang dalam satu pernyataan.
MEMODIFIKASI Tidak Ya Nama yang diberikan sekali Memperlebar, mempersempit, atau mengetik ulang kolom
GANTI NAMA KOLOM Ya Tidak Ya, ditambah nama barunya Hanya ganti nama, dari MySQL 8.0 ke depan

MySQL Versi 8.0 menambahkan opsi keempat untuk kasus paling sederhana, yaitu penggantian nama tanpa pendefinisian ulang sama sekali.

ALTER TABLE `members` RENAME COLUMN `fullname` TO `full_name`;

Tipe dan nama sudah ditentukan. Pertanyaan yang tersisa adalah di mana kolom baru ditempatkan dalam tabel, yang dikendalikan oleh kata kunci AFTER.

SETELAH Kata Kunci

Secara default, kolom yang ditambahkan dengan perintah ALTER TABLE akan berada di akhir tabel. Untuk menempatkannya di posisi tertentu, perintah ALTER dikombinasikan dengan kata kunci AFTER.

Skrip di bawah ini menambahkan “date_of_registration” tepat setelah date_of_birth di tabel members.

ALTER TABLE `members` ADD `date_of_registration` date NULL AFTER `date_of_birth`;

Menjalankan perintah tersebut terhadap myflixdb dan kemudian menjalankan skrip SHOW COLUMNS akan memberikan hasil seperti yang ditunjukkan di bawah ini.

Bidang Tipe Null kunci Default ekstra
Nomor keanggotaan int (11) TIDAK PRI NULL kenaikan_otomatis
nama lengkap char (50) TIDAK NULL
jenis kelamin varchar(6) YES NULL
tanggal_lahir tanggal YES NULL
tanggal_pendaftaran tanggal YES NULL
alamat fisik varchar(255) YES NULL
alamat pos varchar(255) YES NULL
nomor_kontak varchar(75) YES NULL
email varchar(255) YES NULL

Baris yang disorot adalah kolom yang ditambahkan setelah date_of_birth. Kata kunci FIRST bekerja dengan cara yang sama dan memindahkan kolom baru ke bagian paling depan tabel.

Pertanyaan Umum Demo Slot

Tidak. Pernyataan DDL seperti ALTER, DROP, dan RENAME secara implisit melakukan commit. MySQLJadi, transaksi yang sedang berjalan tidak dapat membatalkannya. Memulihkan dari cadangan adalah satu-satunya cara untuk kembali seperti semula.

Itu tergantung pada perubahannya. Banyak perubahan InnoDB berjalan secara online dan memungkinkan pembacaan dan penulisan bersamaan, sementara yang lain menyalin seluruh tabel dan memblokir penulisan. Tambahkan klausa ALGORITHM dan LOCK untuk menyatakan apa yang akan Anda terima.

Perintah DROP menghapus objek itu sendiri. Perintah TRUNCATE mengosongkan tabel tetapi mempertahankan strukturnya. DELETE Menghapus baris yang dipilih dan dapat difilter dengan klausa WHERE.

Biasanya, ya. Asisten AI yang terintegrasi dalam klien seperti MySQL Workbench Ubah permintaan seperti “tambahkan kolom tanggal yang dapat bernilai null setelah date_of_birth” menjadi sintaks yang valid. RevPeriksa pernyataan yang dihasilkan dan bandingkan dengan skema yang sedang berjalan sebelum menjalankannya.

Hanya sebagian. Alat peninjau AI menandai risiko yang jelas, seperti kolom yang dihapus tetapi masih disebutkan dalam kueri atau tipe yang dipersempit yang memotong data. Mereka tidak dapat melihat setiap pemanggil, jadi uji coba awal tetap diperlukan.

Ringkaslah postingan ini dengan: