Seri: Kekuatan Super GRATISAN MySQL: Menjadi Seorang Programmer Basis Data
Basit Adhi Prabowo
Penerbit:
Studio:
i
Seri: Kekuatan Super GRATISAN MySQL: Menjadi Seorang Programmer Basis Data No ISBN Halaman Isi
: 978-602-72262-1-0 : xxiii + 267 halaman
Penulis: Basit Adhi Prabowo Penyunting: Basit Adhi Prabowo Desain Sampul: Arif Kurniawan Penerbit: tamanpena.com Jogjakarta http://www.tamanpena.com Studio: Studio Genius Al-Faruq Perum Villa Banguntapan H-12, Banguntapan, Bantul, DIY 0857-2915-2315
[email protected] Hak Cipta dilindungi undang-undang. Dilarang memperbanyak karya tulis ini dalam bentuk dan dengan cara apapun tanpa ijin tertulis dari penerbit.Isi diluar tanggung jawab Penerbit dan Percetakan. Isi merupakan tanggung jawab Studio Genius Al-Faruq 2014
ii
COPY RIGHT Ikon dan Perangkat Lunak MySQL: Oracle Ikon IGOS: www.ristek.go.id Perangkat Lunak yang digunakan: Sistem Operasi: Ubuntu Linux Penulisan: LibreOffice Manipulasi Gambar: Gimp, Shotwell Viewer, GThumb Perambah Internet: Mozilla Firefox Penampil PDF: Okular Pengolah Query: MySQL Workbench
iii
KATA PENGANTAR
Segala puji bagi Allah SWT yang telah memberikan begitu banyak nikmat kepada makhluk-Nya. Sholawat dan salam semoga selalu terlimpah kepada Rasulullah Muhammad SAW. Amin. Buku ini disusun berdasarkan manual resmi dari MySQL dan pengalaman panjang penulis. Pada masa kuliah, penulis sebenarnya sudah mempelajari basis data pada matakuliah basis data dan basis data lanjut. Selain mendapatkan teori tentang konsep basis data, termasuk relasi dan sebagainya, penulis juga diajarkan bagaimana cara menggunakan basis data dengan Ms Access. Namun, materi praktikum hanya berkisar pembuatan tabel, pengisian data, pembuatan form dan melakukan relasi tabel. Hal tersebut membuat penulis menganggap remeh basis data. Selanjutnya penulis berkenalan dengan bahasa pemrograman web PHP dan bahasa pemrograman desktop Ms Visual Basic yang berhubungan dengan basis data. Namun, sekali lagi, basis data hanya digunakan sebagai media simpan saja, belum menggunakan fitur-fitur MySQL. Akhirnya penulis lulus dan diterima untuk bekerja pada Institusi Pendidikan swasta. Pekerjaan utama pada awal-awal bekerja adalah membuat program aplikasi untuk mendukung proses pendidikan, tetapi masih berupa aplikasi desktop dan datanya masih terpisah-pisah. Setelah beberapa lama bekerja, penulis mendapatkan tawaran untuk membuat aplikasi berbasis web dengan bahasa Java dan framework ZK. Wow, dua hal yang belum pernah penulis ketahui sebelumnya, tetapi bahasa Java memiliki kemiripan dengan C dan PHP, bahasa pemrograman yang sudah penulis pelajari. Mulai pada saat itulah, pemahaman penulis semakin berkembang. Framework ZK iv
menawarkan konsep pembuatan aplikasi berbasis tim, yaitu dengan konsep MVC (Model, View dan Control). Model merepresentasikan model data dari basis data, View merepresentasikan tampilan dan Control merepresentasikan pengolahan interaksi antara manusia dengan mesin. Model menjadi urusan programmer basis data, View menjadi urusan programmer tampilan dan Control menjadi urusan programmer aplikasi. Sebuah konsep pembagian kerja yang bagus, meskipun pada kenyataannya semua dikerjakan sendiri, seperti kebanyakan aplikasi yang dibuat oleh orang-orang Indonesia pada umumnya, hehehe. Sebenarnya proyek tersebut dikerjakan oleh beberapa orang, tetapi pembagian tugasnya berdasarkan jenis aplikasi, misalnya aplikasi akademik, aplikasi perpustakaan, aplikasi kemahasiswaan dan sebagainya. Meskipun demikian, konsep ini memberikan pencerahan dan menambah pengetahuan tentang basis data secara tidak langsung, karena semua query di dalam Java harus dimodelkan, baik untuk pernyataan SELECT sederhana maupun JOIN. Mulailah penulis 'dengan terpaksa' (dengan terpaksa dalam tanpa petik, hehehe) belajar tentang VIEW di dalam MySQL untuk merepresentasikan model JOIN. Selanjutnya, 'dengan terpaksa' belajar stored routine dan akhirnya dengan ikhlas mempelajari semua yang ada di dalam buku ini karena begitu besar manfaat yang dapat diperoleh. Dalam perjalanan, penulis mendapatkan proyek untuk membuat program untuk MLM. Dalam program tersebut, pemrograman MySQL banyak digunakan seperti pada Bagian 5. Kolaborasi Dengan Programmer Aplikasi5 halaman 149. Pada program tersebut, kerja dari programmer aplikasi benar-benar lebih ringan. Sungguh, merupakan suatu penyesalan karena tidak mengetahui suatu fitur yang sebenarnya sangat bermanfaat. Penulis terlalu memandang sebelah mata mempelajari basis data. Benarlah suatu pernyataan dalam bentuk pertanyaan: "Apakah sama orang yang mengetahui dengan orang yang tidak mengetahui?" Sungguh, merupakan suatu kesyukuran karena berani mengambil pekerjaan yang belum pernah diketahui sebelumnya (Java dan framework ZK), berbekal pengetahuan lain yang mirip (C dan PHP) dan pengetahuan lain yang mendukung (MySQL). v
Benarlah pernyataan bahwa belajar itu mulai dari ayunan hingga liang lahat. Oleh karena itu, belajarlah. Carilah ilmu seluasluasnya. Ajarkanlah kepada orang lain ilmu-ilmu yang benar dan bermanfaat. Mengajarkan ilmu tidak membuat ilmu kita berkurang, tetapi akan menambah tingkat keilmuan dan wawasan kita, karena bisa jadi orang yang kita ajari itu memiliki sesuatu yang tidak kita ketahui atau alami sebelumnya, atau bisa jadi orang yang kita ajari itu memiliki suatu permasalahan yang aneh atau sulit sehingga memaksa otak kita bekerja untuk menyelesaikannya. Sekarang, Sistem Informasi di Institusi penulis menggunakan aplikasi berbasis Java dan framework ZK, dengan basis data MySQL dan dengan basis data yang terpadu. Pengalaman selama mempelajari dan bekerja dengan MySQL itulah yang dituangkan ke dalam buku ini, dengan berpedoman pada buku manual resmi dari MySQL. Penulis menyadari bahwa penulis adalah seorang manusia, tempatnya salah dan lupa. Oleh karena itu, penulis sangat mengharapkan kritik dan saran. Apabila buku ini bermanfaat, maka tularkanlah ilmu yang pembaca miliki untuk memberi kemanfaatan bagi orang lain. Yogyakarta, 3 Desember 2014 Wassalam, ttd. Basit Adhi Prabowo
vi
UCAPAN TERIMA KASIH Kami mengucapkan terima kasih yang tidak terhingga kepada: 1. Allah SWT 2. Ayahanda (alm) Bahir Kun Marjani dan Ibunda Istibanah Suwardi 3. Istri Cholifah Setyo Mumpuni, Ananda Pramudita Sholikhah Azzahra dan Ananda (alm) Mukhammad Genius Al Faruq 4. Saudara-saudaraku dan rekan-rekanku 5. "Laptop Sekon Jadul"-ku yang sudah rusak baterainya 6. Guru-guru dan teman-teman diskusi 7. Komunitas Gratisan dan Open Source ( Copy Right halaman 3), baik perangkat lunak, tulisan maupun multimedia. 8. Rekan penulis (Daftar Pustaka halaman 265) 9. STIKes 'Aisyiyah Yogyakarta 10. Rekan pendiri tamanpena.com: Arif Kurniawan dan Nurdin Syaiful Baladi 11. Pembaca yang budiman 12. Dan pihak lain yang membantu secara langsung maupun tidak langsung atas terbitnya buku ini
vii
DAFTAR GAMBAR Gambar 1.1: Flowchart kontrol IF-ELSEIF-ELSE........................28 Gambar 1.2: Flowchart kontrol LOOP...........................................29 Gambar 1.3: Flowchart kontrol REPEAT......................................30 Gambar 1.4: Flowchart kontrol WHILE........................................31 Gambar 1.5: Penyimpanan data ke dalam satu tabel tanpa menggunakan partisi.................................................................60 Gambar 1.6: Penyimpanan data ke dalam satu tabel menggunakan partisi berdasarkan bulan dan tahun..........................................62 Gambar 1.7: Kondisi partisi ketika tidak ada data.........................68 Gambar 1.8: Penyisipan data pada tabel lib_klas2.........................69 Gambar 1.9: Kondisi partisi ketika disisipkan 1 buah data pada tabel lib_klas2...........................................................................69 Gambar 1.10: Kondisi partisi ketika disisipkan 2 buah data pada tabel lib_klas2...........................................................................70 Gambar 1.11: Kondisi partisi ketika disisipkan 3 buah data pada tabel lib_klas2...........................................................................71 Gambar 1.12: Perbandingan menggunakan inside filter dan outside filter...........................................................................................81 Gambar 2.1: Tabel-tabel yang berhubungan..................................85 Gambar 3.1: Perbandingan pengolahan di aplikasi dengan pengolahan di server MySQL.................................................122 Gambar 4.1 Membuka MySQL Workbench................................124 Gambar 4.2 Membuat model baru................................................125 Gambar 4.3 Tab MySQL Model...................................................126 Gambar 4.4 Memulai proses Reverse Engineer...........................126 Gambar 4.5 Memasukkan informasi koneksi ke server basis data .................................................................................................127 Gambar 4.6 Memasukkan kata sandi server Mysql.....................127 Gambar 4.7 Koneksi ke server MySQL berhasil.........................128 Gambar 4.8 Memilih basis data yang akan dibuat modelnya......128 Gambar 4.9 Informasi untuk membuat model berhasil diambil. .129 Gambar 4.10 Pemilihan obyek yang akan dibuat modelnya........129 Gambar 4.11 Pembentukan model berhasil..................................130 Gambar 4.12 Proses Reverse Engineer selesai............................130 Gambar 4.13 Diagram EER dan schema terbentuk.....................131 viii
Gambar 4.14 Diagram EER terbentuk.........................................131 Gambar 4.15 Mengubah nama schema........................................132 Gambar 4.16 Memberi nama schema dan menyimpan perubahan .................................................................................................133 Gambar 4.17 Menggambar diagram EER....................................133 Gambar 4.18 Membuat tabel........................................................133 Gambar 4.19 Memilih opsi pembuatan tabel dan memposisikan tabel.........................................................................................134 Gambar 4.20 Mengubah tabel......................................................134 Gambar 4.21 Mengatur nama, jenis huruf, mesin dan komentar dari tabel.........................................................................................135 Gambar 4.22 Membuat kolom......................................................135 Gambar 4.23 Memberi nama indeks............................................136 Gambar 4.24 Menentukan indeks.................................................136 Gambar 4.25 Menambahkan trigger.............................................136 Gambar 4.26 Menulis kode trigger...............................................136 Gambar 4.27 Membuat partisi tabel.............................................137 Gambar 4.28 Menyisipkan data dasar..........................................137 Gambar 4.29 Membuat view........................................................138 Gambar 4.30 Memilih opsi pembuatan view dan memposisikan view.........................................................................................138 Gambar 4.31 Mengisi definisi dari view......................................138 Gambar 4.32 Membuat Group Routine........................................139 Gambar 4.33 Memilih opsi pembuatan stored routine dan memposisikan routine group...................................................139 Gambar 4.34 Membuat Stored Routine pada Routine Group......140 Gambar 4.35 Membuat Layer......................................................140 Gambar 4.36 Memilih opsi pembuatan layer dan memposisikan layer.........................................................................................141 Gambar 4.37 Mengatur nama dan latar belakang dari layer........141 Gambar 4.38 Membuat teks.........................................................142 Gambar 4.39 Mengisi teks............................................................142 Gambar 4.40 Memulai proses Forward Engineer........................143 Gambar 4.41 Memilih koneksi ke server.....................................143 Gambar 4.42 Opsi pembuatan basis data.....................................144 Gambar 4.43 Memilih obyek yang akan dibuat di server MySQL .................................................................................................145 ix
Gambar 4.44 Review baris kode yang akan dijalankan di dalam server MySQL.........................................................................145 Gambar 4.45 Proses Forward Engineer selesai............................146 Gambar 4.46 Pembuatan basis data dengan pemodelan..............147 Gambar 4.47 Pembuatan basis data dengan perangkat lunak GUI tanpa pemodelan......................................................................147 Gambar 4.48 Pembuatan basis data berbasis teks tanpa pemodelan .................................................................................................148 Gambar 5.1 Pohon perusahaan.....................................................149 Gambar 5.2 Simulasi penyisipan anggota baru ke sponsor dengan jumlah anak genap atau 0........................................................150 Gambar 5.3 Simulasi penyisipan anggota baru ke sponsor dengan jumlah anak hanya 1................................................................151 Gambar 5.4 Simulasi penyisipan anggota baru ke sponsor dengan jumlah anak ganjil...................................................................151 Gambar 5.5 Model Basis Data dengan MySQL Workbench.......154 Gambar 5.6 Halaman Depan (Registrasi)....................................212 Gambar 5.7 Halaman Depan (Login)...........................................212 Gambar 5.8 Halaman Simpan Data Registrasi.............................219 Gambar 5.9 Halaman Rumah – Anggota.....................................226 Gambar 5.10 Halaman Daftar Transaksi – Anggota....................235 Gambar 5.11 Halaman Daftar Bonus – Anggota..........................237 Gambar 5.12 Halaman Pemesanan Barang – Anggota................239 Gambar 5.13 Halaman Depan – Admin.......................................241 Gambar 5.14 Halaman Konfigurasi..............................................247 Gambar 5.15 Halaman Set Nominal Transaksi............................249 Gambar 5.16 Halaman Set Data Peringkat...................................251 Gambar 5.17 Halaman Transfer Bonus........................................254 Gambar 5.18 Halaman Setujui Pemesanan Barang......................256 Gambar 5.19 Halaman Set Pembayaran Anggota Baru...............257 Gambar 5.20 Halaman Pohon Perusahaan...................................259
x
DAFTAR TABEL Tabel 1.1. Tipe Data Bilangan Tidak Bertanda di Mysql.................8 Tabel 1.2. Tipe Data Bilangan Bertanda di Mysql.........................10 Tabel 1.3. Native Routine dan Operator di MySQL......................13 Tabel 1.4 Contoh resultset ketika menggunakan variabel pengguna pada klausa where.....................................................................41 Tabel 1.5 Contoh resultset ketika tidak menggunakan variabel pengguna pada klausa where.....................................................42 Tabel 2.1 Resultset dari penggunaan yang salah untuk variabel pada USING pada PREPARED STATEMENT........................99 Tabel 2.2 Contoh data pada tabel waitinglistQuery.....................108 Tabel 2.3 contoh isi dari TABEL debug.......................................118 Tabel 5.1 Pemeringkatan anggota................................................153
xi
DAFTAR ISI Copy Right......................................................................................iii Kata Pengantar.................................................................................iv Ucapan Terima Kasih.....................................................................vii Daftar Gambar...............................................................................viii Daftar Tabel.....................................................................................xi Daftar Isi.........................................................................................xii Daftar Kode.................................................................................xviii Bagian 1. Basis Data MySQL..........................................................1 A.MySQL....................................................................................1 1.Pendahuluan........................................................................1 2.Mendapatkan MySQL........................................................2 3.Instal MySQL.....................................................................3 4.Tautan..................................................................................7 B.Tipe Data, Operator dan Native Routine.................................7 1.Tipe Data.............................................................................7 2.Strategi Pemilihan Tipe Data............................................10 3.Presedensi Operator..........................................................12 4.Native Routine dan Operator............................................13 C.Kontrol...................................................................................27 1.IF-ELSEIF-ELSE (jika-maka-selain itu)..........................27 2.CASE (kasus)....................................................................28 3.LOOP (putaran)................................................................29 4.REPEAT (ulangan)...........................................................30 5.WHILE (selama)...............................................................30 6.LEAVE (tinggalkan), ITERATE (iterasi) dan RETURN (kembali)........................................................................31 D.Deklarasi Handler..................................................................32 1.Konsep Deklarasi Handler................................................32 2.Sinstaksis Deklarasi Handler............................................32 3.Contoh Deklarasi Handler................................................33 4.Batasan Deklarasi Handler...............................................34 E.View.......................................................................................34 1.Konsep View.....................................................................34 2.Sintaksis View..................................................................36 3.Contoh View #1................................................................36 xii
4.Contoh View #2................................................................37 5.Batasan View....................................................................38 a.Batasan View dengan Algoritma Merge......................38 b.Batasan Non-Updatable View.....................................38 c.Batasan Insertable View..............................................38 d.Batasan Deletable View..............................................39 F.Variable (Variabel).................................................................39 1.Konsep Variabel................................................................39 2.Sintaksis Variabel..............................................................40 3.Batasan Variabel...............................................................41 G.Stored Routine (Rutin Tersimpan)........................................42 1.Konsep Stored Routine.....................................................42 2.Sintaksis Stored Routine...................................................42 3.Pemanggilan Stored Routine............................................44 4.Contoh Stored Routine.....................................................45 5.Batasan Stored Routine....................................................46 H.Prepared Statement (Pernyataan Tersiapkan).......................47 1.Konsep Prepared Statement..............................................47 2.Keuntungan Menggunakan Prepared Statement..............47 3.Sintaksis Prepared Statement...........................................47 4.Contoh Prepared Statement di dalam MySQL.................48 5.Contoh Prepared Statement Menggunakan API...............48 6.Batasan Prepared Statement.............................................49 I.Cursor (Kursor).......................................................................51 1.Konsep Kursor..................................................................51 2.Sintaksis Kursor................................................................51 3.Contoh Kursor..................................................................53 4.Batasan Kursor..................................................................55 J.Trigger (Pemicu).....................................................................56 1.Konsep Trigger.................................................................56 2.Sintaksis Trigger...............................................................56 3.Contoh Trigger..................................................................58 4.Batasan Trigger.................................................................59 K.Partition (Pembagian / Partisi)..............................................59 1.Konsep Partisi...................................................................59 2.Satu Tabel dengan Partisi vs Banyak Tabel......................61 3.Jenis Partisi.......................................................................62 xiii
4.Sub partisi.........................................................................63 5.Sintaksis Partisi.................................................................64 a.Sintaksis Partisi RANGE.............................................64 b.Sintaksis Partisi LIST..................................................65 c.Sintaksis Partisi HASH atau LINEAR HASH............65 d.Sintaksis Partisi KEY atau LINEAR KEY.................65 6.Contoh Partisi #1..............................................................66 7.Contoh Partisi #2..............................................................67 8.Batasan Partisi..................................................................71 L.Event Scheduler (Penjadwalan Tugas)..................................72 1.Konsep Event Scheduler...................................................72 2.Mengaktifkan Event Scheduler........................................73 3.Sintaksis Event Scheduler................................................74 4.Contoh Event Scheduler...................................................75 5.Batasan Event Scheduler..................................................76 M.Index (Indeks).......................................................................76 1.Pengertian Indeks..............................................................76 2.Indeks multi kolom...........................................................77 3.Sintaksis Indeks................................................................77 4.Contoh Indeks...................................................................78 5.Batasan Indeks..................................................................78 N.Inside dan Outside Filter.......................................................79 1.Inside Filter.......................................................................79 a.Pengertian Inside Filter...............................................79 b.Contoh Inside Filter.....................................................79 2.Outside Filter....................................................................80 a.Pengertian Outside Filter.............................................80 b.Contoh Outside Filter..................................................80 3.Perbedaan Inside Filter dan Outside Filter.......................80 Bagian 2.Optimasi dan Trik............................................................82 A.Optimasi................................................................................82 1.Optimasi View: Buat View dengan algorithm=merge, Hindari algorithm=undefined.........................................82 2.Optimasi View: Berikan WHERE NULL pada View yang Digunakan Sebagai Struktur Data Untuk Menghindari Outside Filter..................................................................83 3.Optimasi View: Hindari Melakukan Join yang Melibatkan xiv
Lebih dari 1 View...........................................................83 4.Optimasi Indeks: Selalu Gunakan Key Partisi pada Klausa Where.............................................................................84 5.Optimasi Indeks: Masukkan Kolom-kolom yang Berhubungan ke dalam Indeks dengan Tipe Data dan Ukuran yang Sama.........................................................85 6.Optimasi Indeks: Gunakan Indeks pada Klausa Group By atau Join, Hindari Menggunakan Char atau Binary.......86 7.Optimasi Filter: Ubah Filter Dengan Klausa In Menjadi Join.................................................................................87 8.Optimasi Filter: Gunakan Inside Filter untuk Klausa Group By dan Sub-query...............................................88 9.Optimasi Prepared Statement: Jangan Gunakan Prepared Statement pada Stored Procedure..................................89 B.Trik.........................................................................................94 1.Trik Variabel Pengguna: Gunakan Variabel Pengguna Dengan Nama yang Unik Untuk Setiap Function / Procedure / Trigger / Event Apabila Tidak Untuk Mengirimkan Nilai.........................................................94 2.Trik Stored Routine: Hindari Terlalu Banyak Menggunakan Stored Routine untuk Menjalankan Query ........................................................................................96 3.Trik Prepared Statement: Ubah Function Menjadi Procedure Jika Terdapat SQL dinamis...........................96 4.Trik Prepared Statement: Hindari Penggunaan Prepared Statement untuk Mengeksekusi Query yang Berbeda Pada Nama yang Sama Tanpa Parameter.......................97 5.Trik Prepared Statement: Hindari Penggunaan Parameter pada USING untuk Selain Nilai Konstan, Gunakan Concat3...........................................................................98 6.Trik Waiting for Metadata Lock: Buat Penjadwalan untuk Perubahan Struktur atau Eksekusi Statement DDL.....100 7.Trik Array: Buat Tabel Pengganti Array.........................110 8.Trik Debug: Buat Tabel Untuk Mencari Kesalahan.......116 C.Tautan Optimasi MySQL....................................................118 Bagian 3.Programmer Basis Data.................................................119 A.Programmer Basis Data.......................................................119 xv
B.Menjadi Programmer Basis Data yang Handal...................120 C.Keuntungan Mengaplikasikan Pemrograman MySQL.......121 Bagian 4.MySQL Workbench......................................................123 A.MySQL Workbench.............................................................123 1.Pengertian.......................................................................123 2.Instalasi...........................................................................124 B.Bekerja Dengan MySQL Workbench..................................124 1.Menampilkan MySQL Workbench.................................124 2.Reverse Engineering.......................................................124 a.Pengertian Reverse Engineering...............................124 b.Mengapa Menggunakan Reverse Engineering?.......125 c.Reverse Engineering Dengan MySQL Workbench. .125 3.Forward Engineering......................................................132 a.Pengertian Forward Engineering...............................132 b.Mengapa Menggunakan Forward Engineering?.......132 c.Pemodelan Basis Data Dengan MySQL Workbench 132 d.Forward Engineering Dengan MySQL Workbench..142 4.Perbandingan Pembuatan Basis Data Dengan Pemodelan Menggunakan MySQL Workbench Dan Pembuatan Basis Data Tanpa Pemodelan.......................................146 Bagian 5.Kolaborasi Dengan Programmer Aplikasi....................149 A.Kebutuhan Klien.................................................................149 B.Model...................................................................................154 C.Program MySQL.................................................................155 1.Tabel User.......................................................................155 2.Tabel Jenis Transaksi dan Konfigurasi...........................177 3.Tabel Peringkat...............................................................179 4.Tabel Transaksi...............................................................179 5.Penjadwalan Bonus.........................................................183 a.Per Pekan...................................................................183 b.Per Bulan...................................................................186 6.Array...............................................................................188 7.Fungsi dapatkan_3levelanak..........................................192 8.View................................................................................195 a.View v_bonus............................................................195 b.View v_hargabarang..................................................195 c.View v_kirim_bonus.................................................196 xvi
d.View v_kualitatif, fungsi bonus_berikut dan fungsi peringkat_berikut....................................................196 e.View v_kuantitatif.....................................................198 f.View v_pemesanan_barang.......................................199 g.View v_profil.............................................................200 h.View v_transaksi.......................................................200 i.View v_tree_perusahaan............................................201 9.Debug..............................................................................201 D.Program Aplikasi (PHP)......................................................202 1.Umum.............................................................................202 a.save.php.....................................................................202 b.gambar.inc.php..........................................................207 2.Halaman Anggota...........................................................211 a.Halaman Depan.........................................................211 b.Halaman Simpan Data Registrasi.............................218 c.Cek Login..................................................................223 d.Halaman Rumah – Anggota......................................225 e.Halaman Daftar Transaksi – Anggota.......................234 f.Halaman Daftar Bonus – Anggota.............................236 g.Halaman Pemesanan Barang – Anggota...................238 3.Halaman Admin..............................................................241 a.Halaman Depan – Admin..........................................241 b.Cek Login..................................................................242 c.Halaman Rumah – Admin.........................................244 d.Halaman Konfigurasi................................................246 e.Halaman Set Nominal Transaksi...............................249 f.Halaman Set Data Peringkat......................................251 g.Halaman Transfer Bonus...........................................254 h.Halaman Setujui Pemesanan Barang........................255 i.Halaman Set Pembayaran Anggota Baru...................257 j.Halaman Pohon Perusahaan.......................................259 Indeks Buku..................................................................................263 Daftar Pustaka...............................................................................265 Buku Penulis.................................................................................266 Tentang Penulis.............................................................................267
xvii
DAFTAR KODE [kode 1] Perintah untuk menginstal paket MySQL melalui repositori YUM yang ada di mysql.com.....................................3 [kode 2] Perintah untuk menginstal paket MySQL melalui repositori YUM yang ada di distribusi Linux.............................4 [kode 3] Perintah untuk menginstal paket MySQL melalui repositori APT yang ada di mysql.com.......................................4 [kode 4] Perintah untuk menginstal paket MySQL melalui repositori APT yang ada di distribusi Linux...............................5 [kode 5] cara untuk mengecek bilangan numerik yang bertanda. .10 [kode 6] cara untuk mengecek teks................................................11 [kode 7] sintaks kontrol IF.............................................................27 [kode 8] sintaks kontrol CASE.......................................................28 [kode 9] sintaks kontrol LOOP......................................................29 [kode 10] sintaks kontrol REPEAT................................................30 [kode 11] sintaks kontrol WHILE..................................................30 [kode 12] contoh LEAVE, ITERATE dan RETURN.....................32 [kode 13] sintaks deklarasi HANDLER.........................................32 [kode 14] sintaksis aksi_handler pada deklarasi HANDLER........33 [kode 15] sintaksis nilai_kondisi pada deklarasi HANDLER.......33 [kode 16] contoh deklarasi Handler...............................................34 [kode 17] sintaks pembuatan VIEW..............................................36 [kode 18] sintaks melihat VIEW....................................................36 [kode 19] contoh pembuatan VIEW v_contoh1.............................36 [kode 20] contoh pemakaian VIEW v_contoh1.............................36 [kode 21] perubahan pernyataan ketika VIEW v_contoh1 dijalankan pada algoritma merge..............................................36 [kode 22] contoh lain dari pemakaian VIEW v_contoh1...............37 [kode 23] perubahan pernyataan ketika VIEW v_contoh1 dijalankan melalui pernyataan kedua........................................37 [kode 24] contoh pembuatan VIEW yang mengandung kolom turunan.......................................................................................39 [kode 25] Sintaks deklarasi VARIABEL........................................40 [kode 26] sintaks melihat VARIABEL...........................................40 [kode 27] Sintaks pengisian VARIABEL.......................................40 [kode 28] Sintaks variabel global, variabel pengguna dan xviii
VARIABEL lokal......................................................................41 [kode 29] sintaks pembuatan PROSEDUR....................................42 [kode 30] sintaks pembuatan FUNGSI..........................................43 [kode 31] sintak melihat PROSEDUR/FUNGSI...........................43 [kode 32] sintaks pemanggilan PROSEDUR.................................44 [kode 33] sintaks pemanggilan FUNGSI.......................................44 [kode 34] contoh pembuatan PROCEDURE p_prosedur1............45 [kode 35] contoh pemanfaatan PROCEDURE p_prosedur1.........45 [kode 36] sintaks pembuatan PREPARED STATEMENT............47 [kode 37] sintaks untuk mengeksekusi PREPARED STATEMENT ...................................................................................................47 [kode 38] sintaks untuk mengakhiri PREPARED STATEMENT..48 [kode 39] contoh penggunaan PREPARED STATEMENT...........48 [kode 40] contoh penggunaan API PREPARED STATEMENT....49 [kode 41] sintaks/konstruksi KURSOR.........................................52 [kode 42] contoh penggunaan KURSOR.......................................54 [kode 43] perbandingan KURSOR dengan FETCH pada bahasa pemrograman PHP....................................................................54 [kode 44] optimasi kode PHP menggunakan PREPARED STATEMENT............................................................................55 [kode 45] sintaks pembuatan TRIGGER.......................................56 [kode 46] sintaks melihat TRIGGER.............................................57 [kode 47] contoh pembuatan TRIGGER t_pemicu1......................58 [kode 48] contoh pernyataan yang mengeksekusi TRIGGER t_pemicu1..................................................................................58 [kode 49] contoh pernyataan yang tidak akan mengeksekusi TRIGGER t_pemicu1................................................................58 [kode 50] rumus untuk menentukan posisi partisi dari partisi jenis HASH........................................................................................63 [kode 51] sintaks melihat PARTISI/TABEL..................................64 [kode 52] sintaks pembuatan partisi RANGE................................65 [kode 53] sintaks pembuatan partisi LIST.....................................65 [kode 54] sintaks pembuatan partisi HASH atau LINEAR HASH ...................................................................................................65 [kode 55] sintaks pembuatan partisi KEY atau LINEAR KEY.....65 [kode 56] contoh pembuatan tabel yang memiliki partisi: RANGE, LIST dan HASH........................................................................66 xix
[kode 57] contoh data yang disisipkan ke dalam tabel yang sudah dipartisi......................................................................................67 [kode 58] Sintaksis menghidupkan eksekusi EVENT SCHEDULER...........................................................................74 [kode 59] Sintaksis mematikan eksekusi EVENT SCHEDULER 74 [kode 60] sintaksis pembuatan EVENT SCHEDULER................74 [kode 61] sintaksis jadwal pada EVENT SCHEDULER...............75 [kode 62] sintaksis interval pada EVENT SCHEDULER.............75 [kode 63] sintaks melihat EVENT SCHEDULER.........................75 [kode 64] contoh penggunaan EVENT SCHEDULER.................76 [kode 65] sintaks pembuatan INDEKS..........................................77 [kode 66] opsi pembuatan INDEKS...............................................78 [kode 67] contoh pembuatan PRIMARY KEY, UNIQUE dan INDEX.......................................................................................78 [kode 68] cara untuk mengecek INDEKS......................................79 [kode 69] contoh Inside Filter........................................................79 [kode 70] contoh Outside Filter......................................................80 [kode 71] contoh penggunaan view yang menghasilkan algorithm=merge (tepat)............................................................82 [kode 72] contoh penggunaan view yang menghasilkan algorithm=undefined (tidak tepat)............................................82 [kode 73] penggunaan algorithm=undefined untuk kepentingan pembuatan struktur data............................................................83 [kode 74] penggunaan objek yang dibuat berdasarkan hasil dari VIEW.........................................................................................83 [kode 75] contoh join view yang benar..........................................84 [kode 76] contoh join view yang salah...........................................84 [kode 77] contoh optimasi query yang melibatkan tabel berpartisi ...................................................................................................84 [kode 78] memasukkan kolom-kolom yang memiliki hubungan ke dalam INDEX dengan tipe data dan ukuran yang sama...........86 [kode 79] contoh yang benar dari query yang menggunakan group by...............................................................................................87 [kode 80] contoh tidak tepat dari query yang menggunakan group by...............................................................................................87 [kode 81] contoh penggunaan klausa IN (tidak tepat)...................88 [kode 82] contoh penggunaan JOIN sebagai ganti dari klausa IN xx
(tepat).........................................................................................88 [kode 83] contoh penggunaan inside filter pada klausa group by (tepat).........................................................................................88 [kode 84] contoh penggunaan outside filter pada klausa group by (tidak tepat)...............................................................................89 [kode 85] pembuatan PROCEDURE tanpa prepared statement p1() dan PROCEDURE dengan prepared statement p2()................90 [kode 86] perbandingan waktu ekseskusi PROCEDURE tanpa prepared statement p1() dan PROCEDURE dengan prepared statement p2()............................................................................93 [kode 87] Contoh penamaan variabel pengguna yang tepat..........95 [kode 88] Contoh penamaan variabel pengguna yang tidak tepat. 95 [kode 89] cara mengubah FUNCTION menjadi PROCEDURE...97 [kode 90] penggunaan nama yang sama untuk beberapa prepared statement (tidak tepat)...............................................................98 [kode 91] query biasa tanpa menggunakan prepared statement (tepat).........................................................................................98 [kode 92] contoh penggunaan yang salah untuk variabel pada USING pada PREPARED STATEMENT.................................98 [kode 93] contoh penggunaan PREPARED STATEMENT yang benar..........................................................................................99 [kode 94] contoh lain penggunaan yang salah untuk variabel pada USING pada PREPARED STATEMENT.................................99 [kode 95] contoh lain penggunaan yang salah untuk variabel pada USING pada PREPARED STATEMENT...............................100 [kode 96] penjadwalan pada Linux..............................................101 [kode 97] perintah untuk restart secara reguler pada cron...........101 [kode 98] perintah untuk penjadwalan eksekusi DDL.................107 [kode 99] contoh DDL yang dimasukkan ke dalam jadwal.........109 [kode 100] cara melihat hasil eksekusi DDL...............................110 [kode 101] jumlah kolom yang dibutuhkan untuk membuat array .................................................................................................110 [kode 102] pembuatan TABEL array_inf.....................................111 [kode 103] pembuatan PROCEDURE untuk id_array baru dan pencatatan ke tabel array_inf..................................................113 [kode 104] pembuatan PROCEDURE pembersihan_array dan EVENT bersihkan_array.........................................................114 xxi
[kode 105] contoh pembuatan TABEL pengganti array...............115 [kode 106] contoh pemanfaatan array..........................................116 [kode 107] pembuatan TABEL debug..........................................116 [kode 108] contoh program sebelum diketahui kesalahan...........117 [kode 109] contoh menangkap error.............................................117 [kode 110] rumus bonus pasangan...............................................152 [kode 111] rumus bonus pasive income.......................................153 [kode 112] pembuatan tabel User.................................................162 [kode 113] pembuatan tabel Anggota User..................................168 [kode 114] pembuatan prosedur sisip_anggota(), simpan_anggota() dan setjumlahanakuntukatasan() serta view v_ perusahaansiapisi.....................................................................176 [kode 115] pembuatan prosedur resetgambar_3atasan()..............177 [kode 116] pembuatan tabel Jenis Transaksi dan Konfigurasi.....178 [kode 117] pembuatan tabel Peringkat.........................................179 [kode 118] pembuatan tabel Transaksi.........................................181 [kode 119] pembuatan prosedur setjumlahpembelianuntukatasan() .................................................................................................183 [kode 120] pembuatan event set_bonusperpekan()......................184 [kode 121] pembuatan prosedur bonusperpekan().......................186 [kode 122] pembuatan event set_bonusbulanan..........................186 [kode 123] pembuatan prosedur bonusbulanan().........................188 [kode 124] pembuatan TABEL virtual_memory dan array_inf, serta PROCEDURE, FUNCTION dan EVENT pendukungnya .................................................................................................192 [kode 125] pembuatan function dapatkan_3levelanak()..............195 [kode 126] pembuatan view v_bonus...........................................195 [kode 127] pembuatan view v_hargabarang................................196 [kode 128] pembuatan view v_kirim_bonus................................196 [kode 129] pembuatan fungsi bonus_berikut() dan peringkat_berikut()..................................................................198 [kode 130] pembuatan view v_kualitatif......................................198 [kode 131] pembuatan view v_kuantitatif....................................199 [kode 132] pembuatan view v_pemesanan_barang.....................200 [kode 133] pembuatan view v_profil...........................................200 [kode 134] pembuatan view v_transaksi......................................201 [kode 135] pembuatan view v_tree_perusahaan..........................201 xxii
[kode 136] kode save.php.............................................................207 [kode 137] kode gambar.inc.php..................................................211 [kode 138] kode Halaman Depan.................................................218 [kode 139] kode Halaman Simpan Data Registrasi.....................222 [kode 140] kode Halaman Konfirmasi.........................................223 [kode 141] kode Cek Login..........................................................225 [kode 142] kode Halaman Rumah – Anggota..............................227 [kode 143] kode Menu – Anggota................................................227 [kode 144] kode Profil – Anggota................................................234 [kode 145] kode Halaman Daftar Transaksi – Anggota...............236 [kode 146] kode Halaman Daftar Bonus – Anggota....................238 [kode 147] kode Halaman Pemesanan Barang – Anggota...........240 [kode 148] kode Halaman Depan – Admin..................................242 [kode 149] kode Cek Login – Administrator...............................243 [kode 150] kode Halaman Rumah – Admin.................................245 [kode 151] kode Menu – Admin...................................................246 [kode 152] kode Halaman Konfigurasi........................................249 [kode 153] kode Halaman Set Nominal Transaksi.......................251 [kode 154] kode Halaman Set Data Peringkat.............................254 [kode 155] kode Halaman Transfer Bonus...................................255 [kode 156] kode Halaman Setujui Pemesanan Barang................257 [kode 157] kode Halaman Set Pembayaran Anggota Baru..........258 [kode 158] kode Halaman Pohon Perusahaan..............................262
xxiii
BAGIAN 1. BASIS DATA MYSQL1 A. MySQL 1.
Pendahuluan MySQL adalah sebuah perangkat lunak sistem manajemen basis data (database management system). Sebuah basis data adalah koleksi data yang terstruktur. Server MySQL bersifat cepat, dapat diandalkan dan mudah untuk digunakan. Ada banyak aplikasi yang menggunakan server MySQL untuk menyimpan data, mulai dari perangkat lunak desktop, perangkat lunak perkantoran, aplikasi web dan sebagainya. Selain itu, server MySQL dapat digunakan secara lokal maupun digunakan untuk aplikasi berbasis jaringan. Meskipun selalu dalam pengembangan, server MySQL memiliki banyak fitur dan kemampuan yang lebih dari cukup untuk mendukung aplikasi-aplikasi yang dibuat. Perangkat lunak MySQL bersifat Open Source. Open Source berarti setiap orang boleh menggunakan dan mengubah perangkat lunak, dengan kata lain siapapun boleh mengunduh MySQL dari internet dan menggunakannya tanpa membayar apapun. Siapapun boleh mempelajari dan mengubah kode yang ada untuk disesuaikan dengan kebutuhan. MySQL menggunakan lisensi GPL (GNU General Public License), http://www.fsf.org/licenses/. MySQL yang gratis disebut juga MySQL versi komunitas (community version). Selain itu, MySQL juga tersedia dalam versi komersil (commercial version), tentu saja dengan fasilitas yang lebih dibandingkan versi komunitas. Pada buku ini, penulis menggunakan MySQL versi komunitas, MySQL 5.5.380ubuntu0.14.04.1 yang berjalan pada sistem operasi Ubuntu 14.04.
1
Sebagian besar diadaptasi dari Manual MySQL 5.6, sehingga beberapa hal mungkin berbeda atau tidak dapat dijalankan pada versi di bawahnya atau di atasnya
Bagian 1. Basis Data MySQL - Halaman 1
BAGIAN 2. OPTIMASI DAN TRIK2 A. Optimasi 1.
Optimasi View: Buat View Dengan Algorithm=merge, Hindari Algorithm=undefined Buat view dengan algorithm=merge, hindari algorithm=undefined, kecuali memang butuh seperti itu. Hal tersebut hanya akan menghasilkan outside filter. Lihat Bagian 1.N.3 Perbedaan Inside Filter dan Outside Filter halaman 80. Contoh yang benar: CREATE DEFINER=`root`@`localhost` ALGORITHM=MERGE VIEW v_mhs AS SELECT * FROM ak_mahasiswa; [kode 71]
contoh penggunaan view yang menghasilkan algorithm=merge (tepat)
Contoh yang salah: CREATE OR REPLACE DEFINER=`root`@`localhost` ALGORITHM=UNDEFINED VIEW v_mhs AS SELECT * FROM ak_mahasiswa; [kode 72]
contoh penggunaan view yang menghasilkan algorithm=undefined (tidak tepat)
Untuk beberapa kasus, secara otomatis akan diubah ke algorithm=undefined, meskipun dibuat dengan algorithm=merge. Oleh karena itu, dalam membuat view perlu memperhatikan kaidah-kaidah yang ada pada Bagian 1.E.5 Batasan View halaman 38. Untuk menjamin bahwa view yang dihasilkan memiliki algoritma yang sesuai dengan keinginan, maka pengguna perlu menjalankan perintah seperti pada [kode 18] halaman 36.
2
Masing-masing tabel pada setiap contoh adalah independen dan spesifikasi tabel unik untuk setiap contoh
Bagian 2.Optimasi dan Trik - Halaman 82
BAGIAN 3. PROGRAMMER BASIS DATA A. Programmer Basis Data4 Seorang programmer basis data profesional bertanggung jawab untuk menangani basis data, termasuk melakukan integrasi data. Programmer basis data dapat mendesain, membuat dan mengimplementasikan basis data yang sebenarnya dari nol, tetapi kebanyakan perusahaan menggunakan basis data komersial dari Oracle, IBM, atau Microsoft. Sekolah yang memberikan gelar Database Administration juga dapat ditemukan di beberapa sekolah (Luar Negeri). Sebuah basis data menyimpan informasi sehingga informasi mudah untuk diakses oleh program komputer atau query. Ada banyak model basis data: flat-file, hierarchical, network, relational, dan object-oriented. Model yang sering digunakan adalah model relational. Programmer basis data atau kadang disebut sebagai administrator basis data, melindungi informasi yang ada pada basis data. Tanggung jawab hariannya secara umum meliputi tiga kategori: perawatan basis data, pemrosesan basis data atau membuat program. Buku ini menitik beratkan pada pembuatan program pada basis data, keahlian yang paling sulit diantara ketiga kategori di atas. Menurut www.payscale.com, sebagian besar analis dan programmer basis data mendapatkan gaji diantara $36,329 hingga $96,289 per tahun, pada bulan Januari 2014. Bureau of Labor Statistics (BLS, www.bls.gov) Amerika membuat proyek bahwa programmer basis data tumbuh sekitar 15% pada rentang 2012 hingga 2022, sebuah kecepatan yang tinggi dibandingkan rata-rata kecepatan pertumbuhan pekerjaan lain. 4
Terjemahan bebas dari http://degreedirectory.org/articles/What_Does_a_Database_Pr ogramming_Professional_Do.html pada tanggal 28 September 2014
Bagian 3.Programmer Basis Data - Halaman 119
BAGIAN 4. MYSQL WORKBENCH A. MySQL Workbench 1.
Pengertian MySQL Workbench menyediakan peralatan berbentuk antarmuka grafis untuk bekerja dengan basis data MySQL. MySQL Workbench mendukung penuh MySQL versi 5.1 ke atas. Informasi lebih lanjut dapat di lihat pada http://dev.mysql.com/doc/workbench/en/. MySQL Workbench versi komunitas mencakup empat area: 1. SQL Development Memungkinkan pengguna untuk mengatur koneksi ke server dan mengatur basis data, termasuk membuat basis data, membuat tabel, melihat isi tabel (misal: select, join), manipulasi data dari tabel (misal: insert, update, delete) dan sebagainya 2. Data Modeling Memungkinkan pengguna untuk membuat model dari basis data secara visual. Pengguna juga dapat melakukan reverse engineer dan forward engineer antar basis data, bahkan pada basis data yang aktif secara langsung. Lihat Bagian 4.B Bekerja Dengan MySQL Workbench halaman 124 3. Server Administration Memungkinkan pengguna untuk mengatur server, termasuk melihat koneksi aktif, melihat pengaturan, ekspor-impor dan sebagainya. 4. Data Migration Memungkinkan pengguna untuk berpindah dari Microsoft SQL Server, Sybase ASE, SQLite, SQL Anywhere, PostreSQL, dan lainnya ke MySQL, termasuk dari MySQL versi lama ke versi terbaru.
Bagian 4.MySQL Workbench - Halaman 123
BAGIAN 5. KOLABORASI DENGAN PROGRAMMER APLIKASI5 A. Kebutuhan Klien 1. Aturan penempatan anak: a. Sponsor teratas adalah perusahaan dengan 38 cabang utama yang bisa di set yang mana yang aktif seperti pada Gambar 5.1 di bawah ini.
Gambar 5.1 Pohon perusahaan b. Apabila tidak ada sponsor, maka sponsornya adalah perusahaan. 5 Program di dalam Bagian 5. merupakan program yang berasal dari proyek yang riil. Semua kode, baik kode dalam bentuk MySQL maupun kode dalam bentuk PHP, merupakan hasil karya penulis. Nama perusahaan disamarkan. Proyek ini dipilih karena memiliki tingkat kesulitan yang lumayan dan membutuhkan pemahaman keilmuan yang cukup banyak. Program yang ditampilkan adalah versi terakhir tanpa sejarah perubahan program untuk mengurangi kerumitan. Semua program dijelaskan di dalam baris kode untuk melatih pembaca dalam memahami/membaca baris program programmer lain. Bagian 5.Kolaborasi Dengan Programmer Aplikasi - Halaman 149
INDEKS BUKU batasan......xiipp., 34p., 38p., 41, 46, 49, 55, 59, 71, 76, 78, 96, 155 catatan..............................................xxi, 64, 100, 113, 120, 135, 137 contoh xipp., xviiipp., 25, 27, 31pp., 36p., 39, 41p., 45, 48p., 53pp., 58, 66p., 75p., 78pp., 82pp., 87pp., 94pp., 108p., 114pp., 121, 212, 241 gratis..................................................................................................1 konsep.................ivp., xiipp., 32, 34, 39, 42, 47, 51, 56, 59, 72, 121 linux....................................................................2pp., xviii, xxi, 101 mac................................................................................................3, 5 mysql. . .1pp., xvp., xviii, 27, 33, 35pp., 40, 42p., 45, 48, 50p., 54p., 57, 59pp., 68, 72p., 75pp., 84, 90pp., 96, 100p., 110, 116, 118, 121pp., 131p., 142, 144pp., 149, 154p., 183, 202, 213, 239, 247, 250, 252, 255p., 258, 260, 276 optimasi....................................2, xivp., xixp., 54p., 82pp., 118, 121 pemrograman mysql........................................................................... cursor....................................xiii, 51, 53, 103, 113, 184, 187, 191 deklarasi handler....................................................xii, xviii, 32pp. event scheduler....xivp., xxpp., 31, 40, 51, 72pp., 94, 100, 107p., 114, 122, 183p., 186, 191p. indeks..2, ix, xivpp., 19p., 27, 60, 63, 76pp., 83pp., 96, 110, 114, 135p., 188, 263 inside filter......................................viii, xivp., xxp., 79pp., 83, 88 kontrol....................................................viii, xii, xviii, 27pp., 192 case.........12, 14, xviii, 28p., 41, 44, 171, 174pp., 202pp., 226, 244p. if viii, 10pp., 18, 27p., 31pp., 42p., 45, 52p., 56, 58, 66, 74p., 78p., 86, 89, 94pp., 102pp., 111pp., 155, 161pp., 168pp., 176pp., 194pp., 201p., 219pp., 224, 226, 229, 233, 235, 237, 243p., 247, 250 iterate.........................................................xii, xviii, 29pp., 106 leave...........xii, xviii, 29pp., 52, 59, 106, 170, 173p., 177, 183 loop..................................................viii, xii, xviii, 29, 31p., 52 repeat. . .viii, xii, xviii, 23, 30p., 52, 103pp., 112, 152p., 163p., 180p., 187p., 190, 198, 216p., 219p. Indeks Buku - Halaman 263
return.....xii, xviii, 31p., 54p., 59, 96, 105, 107, 112, 190, 195, 197p., 210p. while viii, xii, xviii, 30p., 52pp., 89p., 94p., 106, 113p., 116p., 170p., 173p., 177, 182p., 185p., 188, 191, 193, 195, 250, 252 outside filter..........................................viii, xiv, xxp., 79pp., 88p. partition..............................................................xiii, 59, 62, 64pp. prepared statement.......xi, xiii, xv, xix, xxi, 46pp., 54p., 59, 89p., 93p., 96pp., 202, 213, 239, 247, 250, 252, 255p., 258, 260 c.stored routine....v, ix, 13, xv, 32, 40, 42, 44pp., 50, 76, 96, 100, 122, 139p. function....2, 13, xvip., xix, xxii, 31p., 39, 42pp., 46p., 49, 59, 63, 96p., 139, 192, 196pp., 207, 209pp. procedure....13, xix, xxii, 42pp., 49p., 95, 97, 100, 103p., 108, 112, 117p., 139, 169, 171, 176p., 181, 183p., 186pp., 234 trigger....ix, 11, xiii, xv, xix, 31p., 40, 49, 56pp., 72, 94, 96, 100, 102, 111, 122, 136, 155, 161pp., 168, 180p., 189, 203, 205p., 221, 223, 233 variable.....xi, xiii, xv, xviiip., xxi, 39pp., 44pp., 55, 58, 72p., 76, 94p., 98pp., 118 view......v, ix, xiipp., xx, xxii, 34pp., 46, 50p., 82pp., 100, 109p., 122, 138, 169, 176, 195p., 198pp., 234 perbedaan.............................................................xiv, 43, 80, 96, 118 programmer......v, xvp., 61, 98, 100, 110, 114, 116, 119p., 122, 140, 146, 149, 202, 210, 218, 222, 225, 227, 234, 236, 238, 240, 242p., 246, 249, 251, 254p., 257p., 262, 278 programmer aplikasi......v, xvi, 61, 122, 149, 202, 218, 222, 225, 227, 234, 236, 238, 240, 242p., 246, 249, 251, 254p., 257p., 262, 278 programmer basis data......v, xvp., 61, 100, 119p., 122, 146, 210, 218, 225, 234, 236, 238, 240, 255, 257, 262, 278 rekomendasi................................................................................8, 63 sintaksis...xiipp., xviii, xx, 33, 36, 40, 42, 47, 51, 56, 64p., 74p., 77 trik........................................xivp., 82, 94, 96pp., 100, 110, 116, 188 unduh.........................................................................................3p., 7 windows.....................................................................................3, 6p.
Indeks Buku - Halaman 264
DAFTAR PUSTAKA Pujiyono, Wahyu, 2002, Diktat: Struktur Data Menggunakan C++, Universitas Ahmad Dahlan, Yogyakarta http://degreedirectory.org/articles/What_Does_a_Database_Pr ogramming_Professional_Do.html, What Does a Database Programming Professional Do, diakses pada tanggal 28 September 2014 A http://dev.mysql.com/doc/mysql-apt-repo-quick-guide/en/, Quick Guide to Using the MySQL APT Repository, diakses pada tanggal 30 November 2014 http://downloads.mysql.com/docs/refman-5.6-en.a4.pdf, MySQL 5.6 Reference Manual, diakses pada tanggal 9 September 2014 http://php.net/manual/en, PHP Manual, diakses pada tanggal 15 April 2010
Daftar Pustaka - Halaman 265
BUKU PENULIS 2014.
Standarisasi/Otomatisasi Penulisan dengan LibreOffice Writer. Yogyakarta: tamanpena.com
Buku Penulis - Halaman 266
TENTANG PENULIS Basit Adhi Prabowo lahir di Yogyakarta tanggal 5 Oktober 1984. Menempuh pendidikan di SD Muhammadiyah Ngupasan II Yogyakarta lulus tahun 1996, SMP Negeri 3 Yogyakarta tahun 1999, SMU Negeri 5 Yogyakarta tahun 2002 dan Universitas Ahmad Dahlan Yogyakarta Program Studi Teknik Informatika tahun 2006 dengan gelar Sarjana Teknik (S.T.). Selama kuliah, selain menempuh pembelajaran juga membuat perusahaan IT bersama dengan teman-teman dengan nama CV Goedang IT, menjadi asisten praktikum, mengikuti beberapa kegiatan organisasi dan pernah menjadi Sie Acara dalam sebuah Seminar Nasional tentang Indonesia Go Open Source (IGOS). Skripsi yang disusun untuk menyelesaikan kuliah berjudul "Pembuatan Kompiler dengan Metode Recursive Descent Parser". Pada tahun 2007 bekerja di STIKes 'Aisyiyah Yogyakarta sebagai calon pegawai di bagian EDP (Elektronik Data Processing) yang kemudian berubah menjadi BPTI (Bagian Pengembangan Teknologi Informasi). Alhamdulillah, diangkat sebagai pegawai tetap pada tahun 2008. Pekerjaan yang ditekuni di STIKes 'Aisyiyah Yogyakarta adalah sebagai Programmer Aplikasi, Programmer Basis Data, Help Desk, Teknisi Jaringan dan Administrasi. Berpengalaman menjadi kepala BPTI dari tahun 2013 dan insyaAllah sampai tahun 2016. Mendirikan penerbit tamanpena.com bersama Arif Kurniawan, S.T. dan Nurdin Syaiful Baladi, S.T.. Memiliki istri bernama Cholifah Setyo Mumpuni serta memiliki dua orang anak bernama Pramudita Sholikhah Azzahra dan (Alm.) Mukhammad Genius Al Faruq. Kontak:
[email protected]
Tentang Penulis - Halaman 267