MySQL perintah ALTERsangat berguna ketika Anda ingin mengubah nama tabel Anda, setiap bidang meja atau jika Anda ingin menambahkan atau menghapus kolom yang ada dalam sebuah tabel.
Mari kita mulai dengan membuat tabel yang disebut testalter_tbl
root@host# mysql -u root -p password; Enter password:******* mysql> use TUTORIALS; Database changed mysql> create table testalter_tbl -> ( -> i INT, -> c CHAR(1) -> ); Query OK, 0 rows affected (0.05 sec) mysql> SHOW COLUMNS FROM testalter_tbl; +-------+---------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+---------+------+-----+---------+-------+ | i | int(11) | YES | | NULL | | | c | char(1) | YES | | NULL | | +-------+---------+------+-----+---------+-------+ 2 rows in set (0.00 sec)
Menjatuhkan, Menambah, atau Reposisi Kolom:
Misalkan Anda ingin drop kolom yang ada saya dari atas tabel MySQL maka Anda akan menggunakan klausa DROP bersama dengan perintah ALTER sebagai berikut
mysql> ALTER TABLE testalter_tbl DROP i;
DROP A tidak akan bekerja jika kolom adalah satu-satunya yang tersisa di meja.
Untuk menambahkan kolom, gunakan ADD dan menentukan definisi kolom.Pernyataan berikut mengembalikan kolom i ke testalter_tbl
mysql> ALTER TABLE testalter_tbl ADD i INT;
Setelah mengeluarkan pernyataan ini, testalter akan berisi dua kolom yang sama bahwa itu saat pertama kali membuat tabel, tetapi tidak akan memiliki cukup struktur yang sama. Itu karena kolom baru ditambahkan ke ujung meja secara default. Jadi meskipun saya awalnya adalah kolom pertama di mytbl, sekarang adalah yang terakhir:
mysql> SHOW COLUMNS FROM testalter_tbl; +-------+---------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+---------+------+-----+---------+-------+ | c | char(1) | YES | | NULL | | | i | int(11) | YES | | NULL | | +-------+---------+------+-----+---------+-------+ 2 rows in set (0.00 sec)
Untuk menunjukkan bahwa Anda ingin kolom pada posisi tertentu dalam tabel, baik menggunakan PERTAMA untuk membuat kolom pertama, atau SETELAH col_name untuk menunjukkan bahwa kolom baru harus ditempatkan setelah col_name.Coba berikut ALTER TABLE laporan, menggunakan KOLOM TUNJUKKAN setelah masing-masing untuk melihat apa efek masing-masing memiliki:
ALTER TABLE testalter_tbl DROP i; ALTER TABLE testalter_tbl ADD i INT FIRST; ALTER TABLE testalter_tbl DROP i; ALTER TABLE testalter_tbl ADD i INT AFTER c;
Para penspesifikasi PERTAMA dan SETELAH bekerja hanya dengan klausa ADD. Ini berarti bahwa jika Anda ingin mengubah posisi suatu kolom yang ada dalam tabel, Anda harus terlebih dahulu DROP dan kemudian ADD itu di posisi baru.
Mengubah Definisi Kolom atau Nama:
Untuk mengubah definisi kolom, gunakan MENGUBAH atau klausa Ganti bersama dengan perintah ALTER.Sebagai contoh, untuk mengubah c kolom dari CHAR (1) ke CHAR (10), lakukan ini:
mysql> ALTER TABLE testalter_tbl MODIFY c CHAR(10);
Dengan PERUBAHAN, sintaks yang sedikit berbeda. Setelah kata kunci Ganti, Anda nama kolom yang ingin Anda ubah, kemudian tentukan definisi baru, yang meliputi nama baru. Coba contoh berikut:
mysql> ALTER TABLE testalter_tbl CHANGE i j BIGINT;
Jika Anda sekarang menggunakan Ganti untuk mengubah j dari BIGINT kembali ke INA tanpa mengubah nama kolom, pernyataan itu akan seperti yang diharapkan:
mysql> ALTER TABLE testalter_tbl CHANGE j j INT;
Pengaruh ALTER TABLE pada Null dan Atribut Default Value:
Ketika Anda memodifikasi atau mengubah kolom, Anda juga dapat menentukan apakah atau tidak kolom dapat berisi nilai NULL, dan apa nilai default adalah.Bahkan, jika Anda tidak melakukan ini, MySQL secara otomatis memberikan nilai untuk atribut tersebut.
Berikut adalah contoh di mana kolom NOT NULL akan memiliki nilai 100 secara default.
mysql> ALTER TABLE testalter_tbl -> MODIFY j BIGINT NOT NULL DEFAULT 100;
Jika Anda tidak menggunakan perintah di atas maka MySQL akan mengisi nilai-nilai NULL di semua kolom.
Mengubah Default Value Kolom ini:
Anda dapat mengubah nilai default untuk setiap kolom menggunakan perintah ALTER. Coba contoh berikut.
mysql> ALTER TABLE testalter_tbl ALTER i SET DEFAULT 1000; mysql> SHOW COLUMNS FROM testalter_tbl; +-------+---------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+---------+------+-----+---------+-------+ | c | char(1) | YES | | NULL | | | i | int(11) | YES | | 1000 | | +-------+---------+------+-----+---------+-------+ 2 rows in set (0.00 sec)
Anda dapat menghapus kendala default dari setiap kolom dengan menggunakan klausa DROP bersama dengan perintah ALTER.
mysql> ALTER TABLE testalter_tbl ALTER i DROP DEFAULT; mysql> SHOW COLUMNS FROM testalter_tbl; +-------+---------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+---------+------+-----+---------+-------+ | c | char(1) | YES | | NULL | | | i | int(11) | YES | | NULL | | +-------+---------+------+-----+---------+-------+ 2 rows in set (0.00 sec)
Mengubah Tabel Tipe:
Anda dapat menggunakan tipe tabel dengan menggunakan klausa JENIS perintah ALTER alongwith.Coba contoh berikut untuk mengubah testalter_tbl untuk tipe tabel MYISAM.
Untuk mengetahui jenis saat tabel, gunakan pernyataan SHOW TABLE STATUS.
mysql> ALTER TABLE testalter_tbl TYPE = MYISAM; mysql> SHOW TABLE STATUS LIKE 'testalter_tbl'\G *************************** 1. row **************** Name: testalter_tbl Type: MyISAM Row_format: Fixed Rows: 0 Avg_row_length: 0 Data_length: 0 Max_data_length: 25769803775 Index_length: 1024 Data_free: 0 Auto_increment: NULL Create_time: 2007-06-03 08:04:36 Update_time: 2007-06-03 08:04:36 Check_time: NULL Create_options: Comment: 1 row in set (0.00 sec)
Mengganti Nama Tabel:
Untuk mengubah nama tabel, gunakan pilihan RENAME pernyataan ALTER TABLE.Coba contoh berikut untuk mengubah nama testalter_tbl untuk alter_tbl
mysql> ALTER TABLE testalter_tbl RENAME TO alter_tbl;
Anda dapat menggunakan perintah ALTER untuk membuat dan drop INDEKS pada file MySQL. Kita akan melihat fitur ini pada bab berikutnya.