Friday, May 10, 2013

Mengkosongkan (Truncate) Table MySQL dan Oracle

Hai semua ...
Balik lagi nih, pastinya dengan post baru dong. hehehe :D
Siang ini gua pengen bagi - bagi ilmu lagi nih, tentang mengkosongkan table di dalam database MySQL maupun Oracle.

Banyak orang yang bingung antara mengkosongkan atau bahasa kerennya "TRUNCATE" table nih sob. Kemarin temen gua sempet nanya "Cara truncate table di Oracle sama MySQL sama nggak sih ?". Untuk menjawab itu semua dan supaya tidak penasaran, kita langsung bahas aja sob satu per satu. OK
Pengertian dari Truncate Table itu sendiri adalah, kita menghapus semua isi dari suatu table database. Spesifiknya, kita menghapus table seluruh isi dan seluruh strukturnya, dan mengembalikan lagi struktur table tersebut seperti semula.

Nah ceritanya gua di MySQL punya database nih, namanya "coba" dan gua punya daftar table - table seperti di bawah ini:
  1. Table perusahaan,
  2. Table user,
  3. Table feedback,
  4. Table pemasok,
  5. Table pasok,
  6. Table barang,
  7. Table distributor,
  8. Table konsumen.
Terus gua punya schema yang namanya "coba" juga di Oracle juga nih sob di dalamnya schema ini, gue punya table - table antara lain:
  1. Table penerbit,
  2. Table buku,
  3. Table user.
Udah gue rasa table - table di atas cukup lah ya buat contoh.

Ceritanya gini, kan suat saat ada table yang record atau barisnya selalu bertamba, tetap ataupun selalu berkurang. Dalam contoh kasus ini, kita gunakkan aja table yang record atau barisnya selalu bertambah. Pada Database contoh di DBMS MySQL kira - kira yang selalu bertambah itu apa ya ?? Kalian bisa menebaknya ?? OK, kita pakai saja table barang. Karena pada umumnya barang itu setiap hari bertambah dan berkurang.
Terus untuk schema "coba" di Oracle kita asumsikan yang selalu betambah itu adalah table buku.

Kalian bingung ya tentang apa itu schema di Oracle ?? Ok lah gue jelasin sedikit ga apa - apa ya meskipu OOT dikit. Schema dalam terminologi Oracle itu merupakan sinonim dari USER. Nah karena gua pake database Oracle yang versi Express Edition gue ga bisa buat database baru lagi, tapi membuat Schema lain sebagai pengganti database.
Hm... daripada bingung kita tinggalin aja ya topik barusan.
Untuk lebih jelasnya tentang DBMS Oracle nanti gue posting di post yang lain. Jadi tunggu ya ...

Nah dari sini kita udah dapet masing - masing satu table dari MySQL dan Oracle untuk dijadikan korban. hehehehe :D
Yaitu Table barang pada MySQL dan table Buku pada DBMS Oracle.

Pada dasarnya, syntax urutan untuk truncate table antara MySQL dan Oracle itu sama. Seperti ini nih contohnya:
TRUNCATE TABLE table_name;

Tapi yang membedakan di Oracle itu ada beberapa baris lagi yang lebih spesifik untuk men-truncate table. Pada MySQL kita bisa langsung menggunakkan kode Truncate seperti di atas saja tanpa imbuhan atau embel - embel syntax yang lain.
Contohnya kita pada MySQL ingin menghapus semua isi yang berada di dalam table barang tadi karena berbagai macam alasan.
Kode untuk menghapusnya yaitu:
TRUNCATE TABLE table_barang;
Udah kan itu aja udah cukup bro. Ini akan mengakibatkan seluruh isi dari table barang tersebut kembali kosong dan apabila memiliki ID auto increment akan kembali ke nomor satu lagi.

Nah untuk Oracle sama seperti di MySQL, tapi gue kasih tambahan nih:
--Ini klausa pertama
TRUNCATE TABLE table_buku DROP STORAGE;

--ini klausa kedua
TRUNCATE TABLE table_buku REUSE STORAGE;

Penjelasan untuk klausa pertama, kita gunakkan klausa tambahan yaitu menggunakkan DROP STORAGE, klausa adalah klausa simple, tidak dituliskan juga tidak masalah, tetapi ini lebih menspesifikkan untuk supaya table dikosongkan semua dan di-reset agar kembali ke keadaan semula.

Untuk klausa kedua kita menggunakkan klausa tambahan REUSE STORAGE, nah ini merupakan kebalikan dari DROP STORAGE, REUSE STORAGE digunakkan sama untuk mengkosongkan table, tetapi kita menggunakkannya lagi atau menindih data. Contohnya kita memiliki ID di table 1-10, kemudian kita truncate menggunakkan REUSE STORAGE, maka apabila kita memasukkan data lagi, ID akan dilanjutkan mulai nomor 11 dan seterusnya. Jadi ini bukan untuk me-reset.

Nah dari pengertian di atas kita dapat kesimpulan nih sob. Kita bisa membedakan klausa truncate untuk MySQL maupun Oracle. Oracle memiliki beberapa klausa tambahan lagi agar spesifik untuk men-truncate.

Mudah - mudahan apa yang gue tulis ini berguna buat kalian semua.
Mungkin kalian ada yang bertanya karena terjadi error ?? Atau syntax kalian tidak bisa berjalan ??
Silahkan ditanyakan di sini, gue pasti jawab bro.

See you ...

1 comment: