MODUL Pelatihan Web MySQL AL AZHAR COMPUTER CLUB Oleh : Achmad Fachrie Jakarta, 2006 Al Azhar Computer Club MySQL Dalam melakukan pengembangan aplikasi, salah satu komponen yang terpenting adalah database. Database merupakan aplikasi pendukung yang menyimpan data yang berhubungan dengan aplikasi yang digunakan. Database tersusun atas table-table yang berhubungan, dan dalam table tersusun atas baris dan kolom yang memuat suatu data. Tanpa database, maka data-data yang digunakan aplikasi tidak tersimpan. Pengenalan MySQL MySQL adalah salah satu database pendukung aplikasi client-server yang sangat terkenal penggunaannya. MySQL digunakan karena menggunakan bahasa SQL (Structured Query Language) standar sebagai bahasa dasar untuk melakukan aksesnya. SQL sendiri merupakan bahasa query yang digunakan untuk melakukan suatu perintah eksekusi dalam database. MySQL merupakan database SQL open source yang paling populer. Karena yang menarik, MySQL bersifat free, juga tersedia pada berbagai platform, dan juga memiliki pendukung kompabilitas pada aplikasi-aplikasi lain. Aplikasi MySQL ini sendiri dapat didownload langsung melalui situsnya yaitu http://www.mysql.org atau http://www.mysql.com. MySQL dikatakan database open source, yang berarti memungkinkan semua orang untuk dapat menggunakan dan memodifikasi software. Siapapun dapat men-downlaod MySQL dari Internet dan menggunakannya dengan bebas tanpa mengeluarkan biaya apapun. Jadi, kita bisa mempelajari source code dan mengembangkan sesuai dengan keinginan kita. MySQL menggunakan GPL (General Public License). MySQL merupakan database yang bersifat DBMS (Database Management System) dan RDBMS (Relational Database Management System). DBMS berarti database yang secara terstruktur menyimpan kumpulan data. Data ini dapat berupa apa saja dari yang paling simple, daftar penjualan dan pembelian hingga data foto galeri suatu institusi. Sementara RDBMS berarti sistem database yang di dalamnya terdapat tabel-tabel yang saling berhubungan (relasi) antara yang satu dengan yang lainnya, sehingga bukanlah satu data yang tersimpan bertumpuk dalam tempat yang besar, tapi terbagi-bagi dan saling berhubungan. Selain itu MySQL banyak digunakan karena sangat cepat, reliable, dan mudah digunakan (ease to use). MySQL dirancang untuk menangani database yang besar dengan cepat, serta menawarkan berbagai fitur dan fungsi. Dengan konektivitasnya, kecepatannya, dan keamanannya membuat MySQL dipilih sebagai database yang paling cocok untuk koneksi dalam Internet. Instalasi MySQL pad Windows Pada sistem operasi Windows, instalasi MySQL cukup mudah dilakukan. Ekstrak file zip dalam program instalasi MySQL. Lokasi default dalam peng-instal-an MySQL terdapat pada c:\mysql. Memulai MySQL Pada pembahasan ini, setelah melakukan peng-instal-an MySQL pada c:\mysql. Maka selanjutnya untuk mengaktifkan MySQL dengan menjalankan sejumlah program executable yang berada pada c:\mysql\bin. Disinilah terdapat kumpulan program MySQL. Untuk masuk ke dalam program MySQL dapat dilakukan dengan menjalankan program MySQL yang didapatkan dari hasil instalasi, yaitu mysql.exe, yang terdapat di c:\mysql\bin. Berikut contoh menggunakan command prompt dengan menjalankan perintah berikut ini : C:\>mysql\bin\mysql (enter) Kemudian akan masuk ke dalam mysql dalam bentuk seperti ini : Bentuk prompt>mysql menunjukkan sudah berada dalam program MySQL, dan di prompt>mysql inilah tempat untuk mengetikkan perintah query MySQL dan yang harus diketahui bahwa setiap penulisan query tersebut harus di akhiri dengan tanda titik-koma “;”. Catatan : Setelah menginstal MySQL, langkah awal adalah memberikan password pada root. Root adalah pemakai tertinggi dalam mengakses MySQL. Pemberian password dilakukan dengan memberikan perintah : mysqladmin –uroot password rahasia Dengan demikian untuk menjadi root, passwordnya adalah rahasia Untuk mengganti password, misal menjadi secret lakukan perintah : mysqladmin –uroot –p secret Enter password :******* (ketikkan password awal) Mengenai hak akses user akan dibahas ada bab selanjutnya Melihat Database Setelah masuk ke dalam program MySQL. Untuk mengetahui daftar database yang terdapat dalam MySQL dapat dilakukan dengan menggunakan perintah show databases pada prompt>mysql, seperti : Membuat Database Setelah mengetahui bagaimana melihat database yang tersedia dalam MySQL, maka untuk membuat database itu sendiri dalam MySQL dengan menggunakan perintah create database namadatabase, contoh : mysql> CREATE DATABASE latih1db; Selanjutnya untuk dapat menggunakan database yang tersedia dengan menggunakan use namadatabase, contoh : mysql> USE latih1db; Menghapus Database Untuk menghapus sebuah database dalam MySQL menggunakan perintah drop namabase. Hati-hati menggunakan perintah ini karena ini akan menghapus database beserta isinya, contoh : mysql> DROP latih1db; Melihat Tabel Setelah menentukan database, untuk dapat melihat tabel apa saja yang berada pada database yang sudah dipilih, dengan perintah show tables, contoh : mysql> SHOW TABLES; Empty set (0.00 sec) Tentu jika database tersebut baru dibuat, maka yang dihasilkan masing kosong (empty set). Membuat Tabel Sebelum membuat tabel dalam MySQL, kita harus mengetahui tipe data apa saja yang terdapat dalam database MySQL, berikut ini beberapa tipe data MySQL yang sering digunakan : Perintah untuk membuat tabel baru adalah : CREATE TABLE namatabel( struktur ); Sebelum membuat tabel, kita harus menentukan nama tabel dan struktur tabel tersebut terlebih dahulu, sehingga dapat menentukan nama field dan jenis tipe data yang akan digunakan, misal kita akan membuat sebuah tabel dengan nama biodata dengan struktur seperti berikut ini : Setelah menentukan tabel dan strukturnya, maka perintah MySQL yang digunakan untuk membuat tabel diatas adalah : mysql> CREATE TABLE biodata( nomor int(6) NOT NULL, nama char(40) NOT NULL, email char(255) NOT NULL, alamat char(80) NOT NULL, kota char(20) NOT NULL, PRIMARY KEY(nomor) ); Jika berhasil maka akan keluar pesan : menunjukkan kecepatan eksekusi perintah bersifat relatif Query OK, 0 rows affected (0.77 sec) Tapi jika salah akan memberikan pesan error dan menunjukkan letak kesalahannya, sehingga harus mengulang kembali. Catatan : Contoh lain perintah untuk membuat sebuah tabel yang baru yang lebih spesifik. CREATE [TEMPORARY] TABLE [IF NOT EXISTS] namatabel ( Struktur ); Pilihan temporary digunakan untuk membuat tabel sementara, yang hanya aktif pada sesi tersebut digunakan. Sementara jika if not exists adalah membuat tabel baru jika memang tabel itu sudah, karena jika sudah ada tetapi tanpa menyisipkan perintah if not exists akan memberikan pesan error. Melihat Struktur Tabel Untuk dapat melihat struktur tabel yang telah kita buat dapat menggunakan perintah describe namatabel, misal : mysql> DESCRIBE biodata; Selain menggunakan describe namatabel, kita juga dapat menggunakan perintah explain namatabel. Contoh : mysql> EXPLAIN biodata; Hasil keduanya akan sama. Memasukkan Data ke dalam Tabel Setelah berhasil membuat struktur tabel, selanjutnya adalah mengisi tabel tersebut dengan datadata yang sesuai. Perintah MySQL yang digunakan untuk mengisi data ke dalam tabel : INSERT INTO namatabel VALUES (kolom1, kolom2, kolom3,….); Misal berikut ini data yang ingin dimasukkan ke dalam tabel biodata : Nomor 1 2 Nama Andi Budi Email [email protected] [email protected] Alamat Jl. Thamrin No 19 Jl. Sudirman No 20 Kota Jakarta Jakarat Maka perintah MySQL tersebut adalah : mysql> INSERT INTO biodata VALUES (‘1’, ‘Andi’, ‘[email protected]’, ‘Jl Thamrin No 19’, ‘Jakarta’); Menampilkan Isi Tabel Setelah mengisi tabel. Untuk dapat melihat seluruh data pada tabel tersebut adalah dengan melakukan perintah : SELECT * FROM namatabel; Tapi, jika kita hanya ingin menampilkan kolom tertentu, maka kita perlu menuliskannya dengan cara : SELECT kolom1,kolom2,… FROM namatabel; Berikut ini contoh keduanya : mysql> SELECT * FROM biodata; Menampilkan kolom nama dan email pada tabel biodata mysql> SELECT nama, email FROM biodata; Untuk menampilkan data berdasarkan kondisi atau kriteria tertentu sehingga lebih spesifik di dalam MySQL menggunakan WHERE. Ini akan berguna jika tabel kita berisi banyak data. Contoh: mysql> SELECT nama, email FROM biodata WHERE nama=’budi’; Menampilkan isi data pada tabel secara terurut atau kebalikkannya dengan menggunakan ORDER BY namakolom ASC atau DESC. Contoh : mysql> SELECT * FROM biodata WHERE nama=’budi’ ORDER BY nama ASC; Selain itu, perintah SELECT juga dapat melakukan perhitungan, MAX/MIN seperti : Memodifikasi Record Data Untuk memodifikasi atau meng-update suatu record dalam MySQL dengan menggunakan perintah seperti : UPDATE namatabel SET kolom1=nilaibaru1, kolom2=nilaibaru2…. WHERE kriteria; Berikut ini contoh jika ingin mengganti email berdasarkan nomor : mysql> UPDATE biodata SET email=’[email protected]’ WHERE nomor=’1’; Mengubah Struktur Tabel Di dalam prakteknya terkadang ada perubahan terhadap tabel yang telah kita buat. Entah sekedar mengganti nama tabel atau kita ingin mengganti nama suatu kolom, menambang suatu kolom, atau juga mengganti kolom tertentu. Di dalam MySQL perintah untuk melakukan ini adalah ALTER TABLE namatabel jenistindakan. Berikut ini beberapa permisalannya : • Menambah kolom baru pada posisi awal tabel mysql> ALTER TABLE biodata ADD nim FIRST; • Menambah kolom baru pada posisi setelah kolom tertentu. mysql> ALTER TABLE biodata ADD telp AFTER alamat; • Menambah kolom baru pada posisi akhir (default) mysql> ALTER TABLE biodata ADD kodepos; • Mengganti jenis tipe data suatu kolom mysql> ALTER TABLE biodata MODIFY nama VARCHAR(50); • Mengganti nama field/kolom mysql> ALTER TABLE biodata nomor no_siswa VARCHAR(6); • Mengganti nama tabel mysql> ALTER TABLE biodata RENAME biodata_mahasiswa; • Menghapus satu kolom mysql> ALTER TABLE biodata DROP COLUMN nim; Menghapus Data Tertentu dalam Tabel Untuk menghapus suatu record dalam tabel menggunakan kriteria tertentu. Disini perintah yang digunakan adalah DELETE FROM namatabel Bila tidak menentukan kriteria (WHERE) maka seluruh data yang ada akan dihapus. Hati-hatilah menggunakan perintah ini. Contoh : mysql> DELETE FROM biodata; mysql> DELETE FROM biodata WHERE nama=’Andi’; Menghapus Tabel Untuk menghapus tabel yang sudah dibuat, yaitu dengan perintah drop table namatabel. Hatihati menggunakan perintah ini, karena akan menghapus tabel beserta isinya. Contoh : mysql> DROP TABLE biodata; Manajemen Hak Akses User MySQL Setelah sebelumnya membahas perintah-perintah yang berhubungan dengan database dan tabel. Pada bab ini akan membahas manajemen penggunaan hak akses user terhadap MySQL, bahwa tidak semua user dapat melakukan semua perintah dalam MySQL. Kita dapat menambah user dalam MySQL sekaligus kita dapat menentukan hak apa saja yang diberikan kepada user tersebut dalam melakukan perintah. Di bab sebelumnya setelah sedikit membahas mengenai penggunaan user root. Untuk melakukan penambahan user dan memberikan akses terhadap user, kita harus menjadi root dalam MySQL. Segala hal yang berkaitan dengan user MySQL dapat dilihat pada tabel user database mysql. Berikut ini untuk mengetahui struktur table user beserta kolom-kolomnya : Mengakses MySQL Melalui root Untuk dapat mengakses MySQL sebagai root dengan menggunakan perintah berikut : mysql –u root –p Enter password : Membuat User Baru Untuk membuat user baru, ingat Anda harus sudah memilih database mysql terlebih dahulu dengan use mysql. Selanjutnya melakukan perintah INSERT ke tabel user seperti berikut : mysql> INSERT INTO user VALUES (‘localhost’,’saya’, password(‘123’)); Perintah di atas menunjukkan kita membuat user baru dengan nama saya dan password 123. Setelah memberikan perintah di atas, selanjutnya berikan perintah : mysql> FLUSH PRIVILEGES; Perintah di atas digunakan agar perubahan yang kita lakukan berpengaruh terhadap program MySQL. Privilege (hak akses terhadap database) berpengaruh pada tahap selanjutnya. Catatan : Perintah FLUSH selain untuk PRIVILEGES, juga dapat untuk : • • • • HOSTS (Untuk cache tentang hosts - nama mesin) LOGS (Membaca ulang informasi yang tercatat di dalam file log.) STATUS (Membaca ulang status.) TABLES (Menutup semua tabel yang terbuka di dalam table cache.) Kemudian keluarlah dari MySQL dengan perintah mysql> exit; Selanjutnya ujilah user baru dengan memberikan perintah berikut : mysql –usaya –p Enter password : Setelah menjumpai prompt>mysql. Cobalah untuk memberikan perintah : mysql> USE mysql; Apa yang terjadi? Ternyata pemakai saya tidak dapat mengakses database mysql. Ini dikarenakan ketika kita membuat user baru, kita belum mengatur wewenangnya. Pada keadaan ini semua pengaksesan terhadap database tidak diperkenankan. Melihat Wewenang User Untuk mengetahui wewenang atau hak akses suatu user pada MySQL yaitu dengan menggunakan perintah SHOW GRANTS FOR. Contoh : Mengganti Wewenang User Untuk mengganti wewenang suatu user, pertama kita harus menjadi root. Selanjutnya menggunakan perintah yang sudah kita pelajari yaitu UPDATE. Untuk mempraktekkannya, jalankan mysql dengan menjadi root : mysql –uroot –p Setelah melakukan perintah UPDATE pada tabel user seperti berikut : mysql> UPDATE user SET select_priv = ‘Y’, Insert_priv = ‘Y’, Update_priv = ‘Y’, Delete_priv = ‘Y’, Create_priv = ‘Y’, Drop_priv = ‘Y’ WHERE user = ‘saya’; Perintah di atas digunakan untuk mengubah isi sejumlah kolom pada tabel user. Perintah di atas menunjukkan agar user saya dapat melakukan operasi SELECT, UPDATE, DELETE, terhadap tabel dan menciptakan (CREATE) dan menghapus (DROP) tabel. Selain seperti diatas untuk menentukan hak akses pada user, dapat juga dengan menggunakan perintah GRANT. Berikut ini contoh perintah : Memberikan hak akses SELECT, INSERT, UPDATE, dan DELETE kepada user dian, dari mesin local (localhost), dan hanya untuk Database diandb saja. mysql> GRANT SELECT, INSERT, UPDATE, DELETE ON diandb.* TO dian@localhost ; Sementara itu untuk menghapus hak akses user pada MySQL dengan menggunakan perintah REVOKE. REVOKE pada user bukan menghapus hak akses user secara permanent. Untuk menghapus hak user secara permanent dari grant tables dengan menggunakan perintah DELETE FROM. Contoh : Untuk menghapus izin akses SELECT dan INSERT dari user dian: mysql> REVOKE SELECT, INSERT ON diandb.* FROM dian@localhost ; Untuk menghapus seluruh izin akses dari user dian: mysql> REVOKE ALL PRIVILEGES ON diandb.* FROM dian@localhost ; Jenis Format Tabel dalam MySQL MySQL menyediakan beberapa jenis format tabel yang penggunaannya tergantung dari tujuan pembuatan tabel tersebut. Jenis format tabel tersebut adalah sebagai berikut: • Format Tabel ISAM • Format Tabel MyISAM • Format Tabel HEAP • Format Tabel MERGE • Format Tabel Innodb • Format Tabel BerkeleyDB Di dalam MySQL table-tabel diatas terbagi atas table dengan kemampuan bertransaksi (transaction-safe table /TST) dan table tanpa kemampuan bertransaksi (non transaction table safe / NTST). Transaksi disini berarti kemampuan software untuk membatalkan suatu proses, kemudian mengembalikan nilai awal sebelum proses tersebut terjadi. Keunggulan transaction-safe tables (TST) dibandingkan dengan not transaction-safe tables (NTST) adalah: • • • Lebih aman Cukup menggunakan satu perintah COMMIT saja untuk mengupdate beberapa perintah di atasnya. Dapat menjalankan perintah ROLLBACK yang mengabaikan perubahan -perubahan yang terjadi pada transaksi yang dibatalkan. Sedangkan keunggulan dari not transaction-safe tables (NTST) dibandingkan dengan transaction-safe tables (TST) adalah: • • • Proses lebih cepat karena tidak adanya beban transaksi (no transaction overhead). Penggunaan ruang dalam hard disk yang lebih hem at karena tidak adanya beban transaksi. Penggunaan memori yang lebih hemat, juga karena tidak adanya beban transaksi. Dari gambaran di atas, kita bisa menentukan format tabel apa saja yang akan kita pilih sesuai dengan kebutuhan. Tentu harus ada pertimbangan yang matang dalam hal pemilihan format tabel ini. Pada MySQL sendiri, format tabel MyISAM merupakan format default yang digunakan.