28 November 2008

Mengubah Struktur Table

.-@) Mengubah Struktur Sebuah Tabel (@-.

Ada saatnya kita perlu mengubah struktur tabel yang pernah kita buat sebelumnya. Pengubahan struktur bisa dalam hal penambahan kolom (ADD), pengubahan lebar dan jenis kolom (MODIFY), atau bisa saja penghapusan kolom dan indeks (DROP), penggantian nama kolom (CHANGE), pengantian nama tabel (RENAME), dan sebagainya. Apa pun juga yang anda lakukan pada kolom tersebut tentu akan mempunyai dampak langsung pada data-data yang sudah ada. Nah, sekarang kita perlu menambahkan beberapa kolom baru, yaitu kolom jenis kelamin, kota, tanggal lahir dan kodepos pada tabel karyawan.
Perintah untuk mengubah struktur tabel adalah "ALTER TABLE". Mari kita coba...

mysql> alter table karyawan

-> ADD jenkelamin CHAR(2) NOT NULL,

-> ADD kota VARCHAR(25) NOT NULL,

-> ADD kodepos CHAR(5) NOT NULL,

-> ADD tgllahir DATE

-> ;

Query OK, 0 rows affected (0.20 sec)

Records: 0 Duplicates: 0 Warnings: 0


Sekarang kita lihat hasilnya:

mysql> describe karyawan ;

+------------+-------------+------+-----+---------+----------------+

| Field | Type | Null | Key | Default | Extra |

+------------+-------------+------+-----+---------+----------------+

| nopeg | int(10) | NO | PRI | NULL | auto_increment |

| nama | varchar(50) | NO | | | |

| jenkelamin | char(2) | YES | | NULL | |

| kota | varchar(25) | NO | | | |

| kodepos | char(5) | NO | | | |

| tgllahir | date | YES | | NULL | |

+------------+-------------+------+-----+---------+----------------+

6 rows in set (0.00 sec)


Mungkin ada baiknya kalau nama kolom nopeg kita ubah aja menjadi noid. Begitupun dengan nama kolom jenkelamin, kita ubah namanya menjadi jenkel saja. Dalam pengubahan kolom ini sebaiknya 'sifat-sifat' kolom yang asli tetap ditulis ulang. Misal bila kolom nopeg memiliki sifat 'auto_increment', maka selama sifat itu tetap dipertahankan, maka dia (auto_increment) harus ditulis ulang. Begini caranya...
Mengubah kolom jenkelamin menjadi jenkel, sekaligus mengubah jenis datanya dari CHAR(2) menjadi CHAR(1):

mysql> alter table karyawan

-> change jenkelamin jenkel char(1) ;

Query OK, 0 rows affected (0.24 sec)

Records: 0 Duplicates: 0 Warnings: 0


Mengubah kolom nopeg menjadi noid, tanpa mengubah jenis datanya (tetap INT(10), dan tetap auto_increment):

mysql> alter table karyawan

-> change nopeg noid int(10) auto_increment

-> ;

Query OK, 0 rows affected (0.16 sec)

Records: 0 Duplicates: 0 Warnings: 0


Sekarang kita lihat struktur tabel setelah pengubahan:

mysql> describe karyawan ;

+----------+-------------+------+-----+---------+----------------+

| Field | Type | Null | Key | Default | Extra |

+----------+-------------+------+-----+---------+----------------+

| noid | int(10) | NO | PRI | NULL | auto_increment |

| nama | varchar(50) | NO | | | |

| jenkel | char(1) | YES | | NULL | |

| kota | varchar(25) | NO | | | |

| kodepos | char(5) | NO | | | |

| tgllahir | date | YES | | NULL | |

+----------+-------------+------+-----+---------+----------------+

6 rows in set (0.00 sec)


Bagaimana, sudah sesuai dengan perubahan struktur yang kita inginkan, bukan? Nah, sekarang bagaimana kalau kita ingin mengubah nama tabel karyawan menjadi tabel pegawai? Silakan dicoba dibawah ini:

mysql> alter table karyawan

-> rename pegawai ;

Query OK, 0 rows affected (0.09 sec)


Kita lihat lagi hasilnya:

mysql> show tables ;

+--------------------+

| Tables_in_latihan1 |

+--------------------+

| pegawai |

+--------------------+

1 row in set (0.00 sec)


Sekarang kita kembalikan lagi nama tabel pegawai menjadi karyawan. Tetapi dengan perintah yang berbeda, yaitu "RENAME TABLE".

mysql> rename table pegawai

-> to karyawan

-> ;

Query OK, 0 rows affected (0.06 sec)


Jangan lupa untuk memeriksa hasilnya:

mysql> show tables ;

+--------------------+

| Tables_in_latihan1 |

+--------------------+

| karyawan |

+--------------------+

1 row in set (0.00 sec)


Nah, sampai sejauh ini tidak sulit kan untuk mempelajari MySQL? Sekarang kita lanjutkan dengan cara-cara pengisian data. Yuuukk..



.-@) 808 (@-.