Mengenal Lebih Jauh MySQL

Sebagai salah satu relational database open source yang paling
popular saat ini, MySQL sering disebut memiliki beberapa
kelebihan seperti kinerja yang cepat dan konsisten, memiliki
reliabilitas tinggi dan mudah digunakan, serta berbagai
keunggulan lainnya.

Kelebihan-kelebihan MySQL di atas dapat dibaca pada situs resmi MySQL dan tentu saja pada situs resmi tersebut, Anda hanya akan mendapatkan hal-hal manis mengenai MySQL. Tetapi, jika Anda menanyakan kelebihan MySQL pada pengguna yang baru mengenal dan menggunakan MySQL kemarin sore, bisa jadi yang Anda dapatkan justru adalah keluhan tiada henti.
Untuk dapat menikmati kelebihan MySQL, Anda harus dapat menggunakannya dengan baik. Artikel ini merupakan artikel kedua pembahasan mengenai MySQL. Ada baiknya Anda membaca kembali artikel sebelumnya untuk pemanasan. Sudah? Mari kita mulai
mengupas lagi fi tur-fi tur menarik MySQL!

Function

“Berikan laporan penjualan kemarin, bandingkan dan tampilkan selisihnya dengan hari sebelumnya, kemudian laporkan total penjualan rata-rata satu bulan terakhir, serta tampilkan 10 sales dengan penjualan
tertinggi! Jangan pake lama ya….!!!”. Demikian e-mail pertama Anda dari pimpinan perusahaan di senin pagi yang indah.

Dengan menggunakan function yang tepat pada permasalahan yang tepat, Anda dapat menghasilkan data yang diinginkan dengan mudah. MySQL telah menyediakan sekumpulan function untuk membantu pekerjaan Anda.

Di dalam sekumpulan data yang besar, sangatlah sukar mencari data yang diinginkan secara manual, apalagi jika informasi yang dibutuhkan memerlukan proses pengolahan lebih lanjut, seperti perhitungan dengan formula tertentu. Function memungkinkan Anda mengolah dan menampilkan informasi yang spesifik dengan cepat.

Penggunaan function digabungkan pada statement SQL sebagai expression, yang akan merepresentasikan sebuah nilai tertentu. Masing-masing function yang disediakan MySQL mengerjakan sebuah fungsi spesifi k
yang mengembalikan nilai sebagai hasil pengolahannya.

Seperti halnya function yang Anda kenal pada kebanyakan bahasa pemrograman, function pada MySQL juga dapat memiliki satu atau lebih parameter.

Sesuai dengan kebutuhannya, function dikelompokkan menjadi beberapa tipe, yaitu:

1. Function-function untuk membandingkan dan mengonversi data.
2. Function-function untuk mengolah string, numerik, datetime yang dapat Anda gunakan untuk memanipulasi, menghitung, mengonversi, memisahkan, maupun menggabungkan data.
3. Function-function aggregate, di mana dapat Anda gunakan dalam statement SELECT untuk menghasilkan data summary yang telah dikelompokkan dengan perintah GROUP BY.
4. Function-function enkripsi atau function yang berhubungan dengan sistem.

Tidak semua function yang disediakan MySQL akan dibahas (Anda juga tentu tidak akan membacanya!), tetapi akan diberikan kasus dan contoh yang dapat Anda temui sewaktu-waktu.

Kasus pertama, katakanlah Anda memiliki suatu table anggota sebuah organisasi, dimana salah satu field yang lazim adalah field JnKel yang menunjukkan jenis kelamin. Tentunya Anda tidak perlu menyimpan data field tersebut dengan string seperti “Laki-laki” atau “Perempuan”, umumnya Anda hanya memerlukan satu karakter, misalnya “L” untuk merepresentasikan “Laki-laki” dan “P” untuk merepresentasikan “Perempuan”.

Tetapi pada saat data fi eld tersebut ditampilkan untuk pengguna, alangkah baiknya jika Anda menampilkannya dengan informatif dan user friendly. Tantangannya adalah bagaimana menampilkan jenis kelamin yang hanya menyimpan satu karakter menjadi sebuah informasi yang jelas dan lengkap?

Untuk keperluan ini, Anda memerlukan sebuah function untuk membandingkan sekaligus mengatur alur logika pada statement SELECT. Function tersebut adalah IF. Function IF memiliki tiga parameter, parameter pertama adalah logika pembanding yang membentuk kondisi true atau false, parameter kedua adalah nilai yang diinginkan jika kondisi true/benar, dan parameter ketiga adalah nilai yang diinginkan jika kondisi false/salah. Perhatikan statement berikut ini:
SELECT nama, IF (JnKel =
‘L’,’Laki-laki’,’Perempuan’)
As JenisKelamin FROM Anggota;

Statement SELECT di atas akan menampilkan dua kolom, kolom pertama adalah nama,sedangkan kolom kedua adalah JenisKelamin, yang mana akan bernilai string ‘Laki-laki’ atau ‘Perempuan’. Perhatikan bahwa function IF membandingkan isi fi eld JnKel pada kondisi di mana jika berisi ‘L’, maka tampilkan string ‘Laki-laki’, sebaliknya jika tidak, maka tampilkan string ‘Perempuan’.

Masih cukup mudah, bukan? Kasus selanjutnya, masih dengan asumsi table Anggota,
tampilkan pula usia anggota yang terdapat pada table tersebut. Mudah? Tampilkan saja fi eld Usia, demikian kata seorang programer yang kelewat praktis. Tetapi tunggu dulu, apakah bijaksana menyimpan fi eld Usia, dimana setiap tahun usia akan selalu bertambah dan harus di-update per tahun? Pastinya tidak. Umumnya, Anda hanya menyimpan field tanggal lahir sebagai patokan awal menghitung usia.

MySQL menyediakan function untuk pengolahan tanggal dan jam (datetime), string, dan lain-lain. Adakalanya Anda memerlukan kombinasi beberapa function untuk menghasilkan apa yang Anda inginkan. Trik untuk menampilkan usia pada query di bawah ini menunjukkan penggunaan beberapa function sekaligus:
SELECT nama, tgllahir,
CURDATE(), (YEAR(CURDATE())-
YEAR(tgllahir)) – (RIGHT(CURDA
TE(),5)<RIGHT(tgllahir,5)) AS
usia FROM Anggota;

Untuk menjalankan query di atas dengan sukses, Anda harus menyediakan table Anggota dengan fi eld nama dan tgllahir. MySQL memiliki keunikan dalam menyimpan nilai dengan tipe data date, yaitu menggunakan format yyyy-mm-dd, sehingga untuk menunjukkan tanggal 1 Februari 2007, maka nilai yang tersimpan adalah 2007-02-01. Bisa jadi Anda yang terbiasa dengan relational database yang berbeda pada awalnya merasa metode penyimpanan tipe data date seperti ini akan merepotkan, tetapi kenyataannya dengan menggunakan format yyyy-mm-dd, maka dapat dilakukan pengurutan berdasarkan tanggal dengan mudah, juga memudahkan proses pengoperasian tanggal. Bagaimana menampilkan tanggal dengan format yang Anda inginkan? Jangan khawatir karena MySQL menyediakan function- function yang lengkap untuk itu.

Kembali pada query untuk mencari usia, pada bagian SELECT nama, tgllahir, CURDATE(), tentunya Anda mengetahui bahwa bagian tersebut berfungsi untuk menampilkan isi fi eld nama, tgllahir, dan tanggal saat ini (dengan menggunakan function CURDATE()). Pada bagian (YEAR(CURDATE())- YEAR(tgllahir)) – (RIGHT(CURDATE (),5)<RIGHT(tgllahir,5)) AS usia, merupakan formula untuk menemukan usia, mula-mula kurangi tahun saat ini dengan tahun kelahiran. Contohnya, jika kepala suku perkumpulan Anda lahir pada tahun 1910, maka pada tahun 2007 akan didapatkan usianya adalah 2007–1910=97 tahun. Usia yang didapatkan dari perhitungan di atas belumlah selesai. Hal penting yang harus diperhitungkan apakah bulan dan hari saat ini lebih kecil atau lebih besar dari bulan dan hari kelahiran? Untuk mengambil bulan dan
hari, Anda cukup mengambil 5 digit dari kanan pada fi eld tgllahir, dari mana didapatkan 5 digit? Ingat bahwa format penyimpanan adalah yyyy-mm-dd, sehingga pengambilan 5 digit dari kanan akan mendapatkan bulan dan hari (mm-dd). Anda dapat mengambil 5 digit dari kanan dengan menggunakan function RIGHT seperti pada contoh query. Kemudian bandingkan 5 digit tanggal saat ini dengan 5 digit tanggal kelahiran, Jika lebih kecil maka MySQL akan menyembalikan nilai 1 (true), sedangkan jika tidak, MySQL akan menyembalikan nilai 0 (false). Dari usia yang didapatkan pada perhitungan pertama (contoh 97 tahun), baik nilai 0 atau 1 yang didapatkan pada proses kedua, akan dikurangi dengan hasil pada perhitungan pertama. Dengan demikian jika kepala suku Anda belum berulang tahun, maka ia belum mencapai usia 97 tahun, tetapi baru berusia 96 tahun.

Mungkin komentar Anda: betapa rumitnya untuk mencari usia! Jika Anda telah memahami cara kerja query di atas, maka untuk seterusnya Anda akan lebih mahir menggunakan dan menggabungkan function pada MySQL. Jika Anda kurang dapat menggunakan function-function MySQL, maka akan banyak kendala yang Anda dapatkan untuk menghasilkan informasi yang bervariasi. Selain menyediakan function-function yang umum terdapat pada relational database lainnya, MySQL juga menyediakan function-function enkripsi yang khusus digunakan untuk keamanan data.

Jika Anda memiliki fi eld yang bersifat con-fi dential seperti pin, password, nomor kartu kredit, dan lain sebagainya, adalah tidak bijaksana untuk menyimpannya ke dalam table tanpa dienkripsi. Dengan fi eld yang terenkripsi, Anda masih dapat menjaga kerahasiaan data penting Anda sekalipun data Anda di-copy atau dikuasai pihak yang tidak bertanggung jawab. Enkripsi isi fi eld hanyalah salah satu cara
pengamanan data. Tentunya dalam praktiknya, Anda harus memperhatikan faktorfaktor lain seperti keamanan server database, hak akses pengguna, dan lain-lain. Function enkripsi yang disediakan MySQL terdiri dari dua tipe, yaitu enkripsi dua arah dan enkripsi satu arah. Dua arah berarti proses terdiri dari enkripsi dan dekripsi. Anda dapat menggunakan function ENCODE() untuk enkripsi, dan function DECODE()
untuk dekripsi. Pada enkripsi satu arah, key atau kata kunci untuk melakukan encode/decode dapat Anda tentukan sesuka Anda. Contoh proses yang umum terjadi adalah jika Anda memiliki aplikasi, di mana pengguna harus memasukkan password, maka isi fi eld password yang terenkripsi (encode) pada table akan didekripsi (decode) dan dibandingkan apakah sama dengan password yang di-input. Sebaliknya pada enkripsi satu arah, berarti tidak disediakan function untuk mengembalikan data yang terenkripsi menjadi data yang sesungguhnya, Anda pun tidak perlu dan tidak bisa memiliki kata kunci untuk membuka enkripsi. Pertanyaannya, bagaimana mengetahui sebuah password yang di-input benar atau salah? Sederhana saja, enkripsi data yang di-input tersebut dan bandingkan hasil enkripsinya pada table.
MySQL menyediakan function enkripsi satu arah, yaitu PASSWORD(), MD5(), SHA(), dan SHA1(). Selain menyediakan function yang berhubungan dengan operasi database, MySQL juga menyediakan function yang berhubungan dengan sistem, antara lain:

1. USER().
Function ini digunakan untuk mengetahui user aktif dalam format username@hostname, misalnya root@localhost.
2. CONNECTION_ID().
Function ini akan mengembalikan nilai numerik yang menunjukkan ID koneksi yang terus bertambah setiap kali terjadi koneksi database.
3. VERSION().
Function ini mengembalikan versi MySQL yang Anda gunakan.

Penanganan Multiple-Table Bukan relational database namanya jika tidak memiliki kemampuan bekerja dengan lebih dari satu table. Jika sebuah aplikasi hanya bekerja dengan satu table pada satu waktu, maka aplikasi tersebut mungkin merupakan aplikasi sederhana atau tidak menggunakan banyak table. Hal yang harus dihindari adalah desain struktur database yang sengaja menghindari penanganan multi-table. Tidak jarang memproses banyak table sekaligus dianggap menyusahkan, terutama saat Anda melihat query SQL nan panjang yang memilah-milah informasi yang terdapat pada banyak table. Tetapi jika hal ini dihindari, bisa jadi risikonya Anda memiliki banyak data yang redundan dan tersebar pada table-table, hal ini harus dibayar dengan proses penyimpanan data yang bisa menjadi lebih rumit, kapasitas data yang membengkak drastis, kecepatan dan performa database menurun, dan salah satu kelebihan relational database seperti MySQL menjadi tidak terekspos. Untuk memahami pentingnya relational database, Anda dapat membayangkan Anda memiliki sebuah toko buku, untuk kepuasan dan kenyamanan pengunjung, Anda tentu memisahkan rak-rak buku berdasarkan klasifi kasinya, misalnya rak khusus deretan buku novel, buku pelajaran, majalah, komik, dan seterusnya. Keinginan Anda sebagai pengelola toko buku pun bisa dibilang tak terbatas. Hari ini Anda ingin mendapatkan laporan penjualan buku per kategori buku, esok hari mungkin Anda ingin mendapatkan laporan.

berdasarkan pengarang. Anda juga ingin menyenangkan pelanggan dengan menyediakan aplikasi pencari yang mengizinkan pengunjung mencari buku berdasarkan buku, nomor ISBN, pengarang, tahun terbit, bahkan mengizinkan pengunjung melihat daftar buku terlaris. Dengan kebutuhan di atas, jika Anda diminta untuk mendesain database toko buku tersebut, dapat dipastikan Anda akan mendesain dengan sangat efi sien dan sesuai dengan norma-norma relational database. Mungkin terdapat table pengarang, table buku, table transaksi penjualan, table persediaan, dan seterusnya. Sudah tentu table-table tersebut harus memiliki key yang menghubungkan satu table dengan table lainnya. Salah satu tujuan pengelompokkan table seperti diatas adalah mengurangi sebanyak mungkin fi eld yang redundan atau secara teori dikenal dengan nama normalisasi, misalnya fi eld nama pengarang cukup terdapat pada table pengarang, tidak perlu terdapat pada table buku atau table penjualan. Kembali pada topik utama, bagaimana menangani lebih dari satu table (multipletable) pada MySQL? MySQL mendukung beberapa metode yang dapat Anda gunakan untuk menangani multiple-table dengan menggunakan statement SQL:

1. Menggunakan perintah JOIN pada statement SELECT, UPDATE, dan DELETE yang menghubungkan lebih dari satu table.
2. Menambahkan sub-query.
3. Menciptakan UNION yang menghubungkan dua atau lebih statement SELECT.

Anda dapat melihat kegunaan lain dari penanganan multiple-table, yaitu tidak hanya digunakan untuk melakukan pe ngambilan data (SELECT), tetapi juga dapat digunakan untuk modifi kasi dan menghapus data (UPDATE dan DELETE). Pada beberapa kasus hal ini akan sangat mempermudah pekerjaan Anda.

Metode sub-query umumnya disebut juga dengan sub-select, karena merupakan perintah SELECT di dalam SELECT, bahkan sebuah sub-query dapat terdiri dari sub-query lagi sehingga mengizinkan multiple-level
pada satu statement SQL. Menggunakan perintah JOIN atau subquery sangat tergantung kebutuhan. Pada beberapa kasus, kinerja database dengan menggunakan JOIN lebih baik dibandingkan sub-query, sehingga disarankan menulis ulang sub-query menjadi perintah JOIN jika dimungkinkan. Tetapi jika Anda menggunakan JOIN pada sejumlah besar table, dan ternyata jika dengan menggunakan sub-query dapat menggantikan banyak perintah JOIN, maka kemungkinan performa sub-query akan lebih baik pada kasus tersebut. Jika tidak yakin mana yang lebih baik pada kasus Anda, Anda dapat menuliskan dua jenis perintah dengan menggunakan JOIN dan sub-query untuk menghasilkan output yang sama dan membandingkan
performanya. Jangan ragu untuk melakukan test performa antara dua query, karena Anda cukup hanya sekali menentukan cara yang terbaik, seterusnya program akan terus menjalankannya. Sub-query didukung oleh banyak penggunaan operator, seperti IN, NOT IN, ANY, SOME, ALL, dan lain-lain. Dengan menggunakan operator tersebut, dimungkinkan query yang lebih bervariasi tergantung keperluan. Anda menggunakan UNION jika Anda ingin menggabungkan lebih dari satu perintah SELECT ke dalam satu output. Untuk itu jumlah fi eld yang dikembalikan pada perintah-perintah SELECT tersebut harus sama, begitu juga tipe data pada masingmasing fi eld tersebut. Penanganan Data yang Besar Anda harus selalu siap bekerja dengan data dengan jumlah besar, pengolahan data pada jumlah besar kerap Anda temui pada perusahaan yang memiliki transaksi yang banyak dan frekuensi tinggi, atau perusahaan dengan banyak cabang, ataupun kasus-kasus lainnya.

Proses pengolahan data yang dapat terjadi dalam jumlah besar, adalah jika Andamelakukan export data dan menyimpannya pada fi le di luar database, import data ke dalam database, ataupun melakukan copy data antar-table.Sebagai contoh kasus, Anda ingin melakukanexport data table customer ke dalam sebuah fi le text diluar database. Hal ini dapat terjadi jika Anda memerlukan data mentah yang tidak dalam format database MySQL dengan berbagai alasan, misalnya dari sisi kompatibilitas/standar platform atau aplikasi, ataupun karena Anda hanya ingin menunjukkan fi eld-fi eld tertentu pada table. Untuk melakukannya, Anda dapat menggunakan perintah SQL yang sudah sangat Anda kenal, yaitu SELECT ! Query di bawah ini akan memperjelas proses export yang Anda inginkan:

SELECT CustomerID, Name, Address INTO OUTFILE ‘customer. txt’ FROM Customer;

Apa perintah baru yang Anda lihat pada query tersebut? Ya, terdapat perintah INTO OUTFILE diikuti nama file text yang Anda inginkan, pada contoh di atas adalah fi le dengan nama ‘customer.txt’ yang merupakan file hasil export. Terkadang untuk membaca nilai antar- fi eld pada sebuah fi le text cukup merepotkan jika Anda tidak memiliki karakter pemisah yang jelas, Anda dapat menentukan sendiri karakter pemisah yang diinginkan dengan menggunakan perintah FIELDS TERMINATED BY. Sebagai contoh, query tadi akan sedikit dimodifi kasi menjadi:

SELECT CustomerID, Name,Address INTO OUTFILE ‘customertxt’ FIELDS TERMINATED BY ‘;’FROM Customer;
Statement di atas akan menghasilkan fi le customer.txt dimana karakter pemisah antar- fi eld-nya adalah karakter ; atau titik koma. Selain menggunakan cara di atas, cara lain untuk melakukan export data adalah dengan menggunakan perintah SELECT …. INTO DUMPFILE diikuti dengan nama fi le yang Anda inginkan. Umumnya dump fi le digunakan jika Anda ingin menyimpan ke dalam fi le nilai dari sebuah fi eld dengan tipe data BLOB. Tipe data ini menyimpan data biner dan umumnya digunakan untuk menyimpan data gambar, audio, atau objek multimedia lainnya.

Sampai sini, tentu Anda dapat saja berpikir sebaliknya, bagaimana jika yang Anda miliki adalah fi le teks, dan ingin di-import ke dalam table pada database MySQL Anda? Permasalahan tersebut dapat dipecahkan sama mudahnya dengan melakukan export data. Katakan Anda memiliki sebuah fi le teks yang berisi nilai-nilai ID customer, nama, dan alamat pada setiap baris, masing-masing nilai
tersebut dipisahkan dengan tanda kutip dua, sehingga kurang lebih fi le teks Anda akan berisi seperti ini: C001;Andi;Jl. Pahlawan
C002;Anto;Jl. Panglima Polim
C003;Anta;Jl. Kaki

Anggaplah Anda menyimpan data tersebut di dalam sebuah file bernama data.txt. Sekarang, keperluan Anda adalah mengimport data di dalam data.txt ke table Customer. Anda cukup menjalankan query sebagai berikut:

LOAD DATA INFILE ‘data.txt’
INTO TABLE Customer FIELDS
TERMINATED BY ‘;’

Perhatikan bahwa sedari tadi kita tidak menentukan path lengkap nama fi le export maupun import, MySQL akan menganggap default path adalah directory database yang digunakan. Perlu Anda ketahui bahwa setiap kali Anda membuat database, MySQL akan membuat directory penyimpanan sesuai nama database tersebut pada media penyimpanan Anda. Anda juga dapat menggunakan perintah INSERT untuk melakukan copy data antartable, contoh query-nya adalah sebagai berikut: INSERT INTO Customer2 SELECT
CustomerID, Name FROM Customer
WHERE Country = ‘ID’;

Perintah SQL di atas akan melakukan copy data dari table Customer ke table Customer2 dengan kondisi fi eld Country berisi dengan nilai ‘ID’. Dalam beberapa kasus pada aplikasi database, bisa jadi Anda akan menemukan permasalahan yang memerlukan solusi dengan menggunakan tips tersebut. Jangan ragu untuk mencoba kombinasikombinasi perintah yang telah Anda ketahui, siapa tahu dengan demikian Anda menemukan teknik baru yang dapat membantu pekerjaan dan performa aplikasi Anda.

Selain di dalam aplikasi Anda ataupun interface lainnya seperti phpmyadmin, Anda juga dapat menuliskan perintah SQL pada mysql command, yang mirip dengan Command Prompt pada operating system. Untuk masuk ke dalam lingkungan mysql command, Anda harus mengetikkan mysql pada Command Prompt. Pada lingkungan mysql command, Anda dapat memilih database, table, maupun mengeksekusi perintah-perintah SQL yang telah dipelajari. Sekilas mungkin Anda akan merasa sangat merepotkan menuliskan satu per satu perintah, tetapi Anda dapat menjalankan perintah SQL secara batch, artinya Anda hanya perlu memanggil file
yang telah berisi instruksi-instruksi pada mysql command. File kumpulan instruksi tersebut dapat Anda ketik melalui text editor ataupun merupakan fi le hasil export. Tidak hanya untuk menjalankan SQL statement, Anda juga dapat mengatur hak, mengubah password, dan masalah keamanan lainnya.

Kesimpulan
Penggunaan MySQL telah digunakan dimana- mana, terutama pada aplikasi web, bahkan oleh perusahaan-perusahaan raksasa seperti Apple, Amazon, Nokia, dan lain sebagainya. Bahkan dua website yang sangat terkenal, yaitu Friendster dan Wikipedia juga menggunakan MySQL.

MySQL juga digunakan oleh banyak Content Management Systems (CMS) se perti Mambo ataupun E107. Tentu saja selain kemampuan, kemudahan juga memegang peranan. Sebagai RDBMS yang cross-platform, MySQL dapat berjalan tanpa masalah pada platform seperti Windows, Linux, Mac, dan lain-lain.

lebih lanjut : http://en.wikipedia.org/wiki/Mysql, http://mysql.com

Tinggalkan Balasan