Minggu, 07 Juni 2009

Perintah-perintah Query Berbahaya Pada SQL

Pada program-program sistem database yang menggunakan SQL seperti Oracle, MySQL, SQL Server dan sejenisnya, terdapat perintah-perintah yang berbahaya jika salah menggunakannya.

Perintah DELETE
Perintah ini untuk menghapus data pada suatu tabel.
Perintah DELETE menjadi berbahaya jika dieksekusi tanpa filter seperti contoh berikut : DELETE FROM tblBarang. Dijamin semua data di tabel tblBarang terhapus.
Untuk mengurangi tingkat bahayanya :
  • Gunakan filter seperti contoh berikut : DELETE FROM tblBarang WHERE kdbrg = 'xyz'.
  • Gunakan TRANSACTION agar dapat dilakukan perintah ROLLBACK atau ubah setting sistem AUTO COMMIT menjadi OFF.
Perintah UPDATE
Perintah ini untuk mengubah data pada suatu tabel.
Seperti perintah DELETE, perintah UPDATE ini akan berbahaya jika dieksekusi tanpa filter. Misalnya : UPDATE tblBarang SET namabrg = 'Kolor Ijo". Semua nama barang akan berubah menjadi Kolor Ijo.
Untuk mengurangi tingkat bahayanya :
  • Gunakan filter seperti contoh berikut : UPDATE tblBarang SET namabrg = 'Kolor Ijo" WHERE kdbrg = 'xyz'.
  • Gunakan TRANSACTION agar dapat dilakukan perintah ROLLBACK atau ubah setting sistem AUTO COMMIT menjadi OFF.
Perintah SELECT
Nah, pasti ada yang protes, kenapa perintah SELECT masuk dalam kategori perintah berbahaya. Bahaya yang ditimbulkan perintah ini bukan dari segi data namun lebih pada segi kinerja server database.

Bahaya I
Perintah ini menjadi berbahaya jika dijalankan seperti ini : SELECT * FROM tblBarang. Perintah tersebut akan menampilkan semua data tanpa terkecuali. Jika datanya ada banyak, perintah ini akan memakai sumber daya server besar-besaran. Belum lagi jika perintah ini dijalankan secara multi user.
Untuk mengurangi tingkat bahaya, gunakan filter dan jangan gunakan *. Tampilkan kolom atau field yang dibutuhkan saja.

Bahaya II
Berbahaya jika dijalankan menggunakan ORDER BY misal SELECT * FROM tblBarang ORDER BY namabrg. Perintah ORDER BY juga akan mengonsumsi sumber daya server besar-besaran.
Untuk mengurangi tingkat bahaya, gunakan index untuk pengurutan data dan gunakan filter serta jangan menggunakan *.

Tidak ada komentar: