1 Database Systems: Lab. Actvity 3: Fungsi-Fungsi MySql Advance Agenda. Pendahuluan Fungsi Having Fungsi SubSelect 2 Pendahuluan Pendahuluan Merealisasikan pemodelan data konseptual menggunakan tipe tabel InnoDB Tipe tabel InnoDB dipilih karena proses transaksi akan dilakukan terhadap tabel-tabel dalam sistem 3 4
5 Kebutuhan untuk menampilkan data dari 2 buah tabel. Suatu kewajaran jika satu database memiliki hubungan (relasi) dari 2 atau lebih tabel. Relasi antara tabel dapat berupa relasi 1 1, 1 M, dan M M. Penyajian pemodelan data konseptual disebut dengan class diagram. Untuk menggabungkan 2 tabel dapat menggunakan fungsi WHERE dan JOIN. Terdapat 2 perintah yang berhubungan dengan fungsi JOIN 1. Inner JOIN 2. Outer JOIN 6 7 8
9 10 Fungsi WHERE FROM tabel1, tabel2 WHERE table1.pk = tabel2.fk; Fungsi JOIN Inner JOIN FROM tabel1 INNER JOIN tabel2 ON table1.pk = tabel2.fk; 11 Outer JOIN Fungsi outer join terbagi menjadi 2: 1. Left Join 2. Right Join Left Join FROM tabel1 LEFT JOIN tabel2 ON table1.pk = tabel2.fk; 12
13 Right Join FROM tabel1 RIGHT JOIN tabel2 ON table1.pk = tabel2.fk; 14 id_produk harga nm_produk B0001 2500 Penggaris 30cm B0002 1000 Penghapus B0003 1500 Pensil 2B B0004 3000 Buku Tulis B0005 4500 Jangka Isikan tabel tb_produk berdasarkan data pada tabel di atas. Isikan tabel tb_detail_produk dengan 10 buah record dengan id_pesan mengacu kepada tb_pesan. 15 16
17 Adanya kebutuhan untuk menampilkan data dari banyak tabel. Secara umum sintaks yang digunakan sama dengan ketika menggabungkan 2 buah tabel. Untuk menggabungkan banyak tabel dapat menggunakan fungsi Group By Fungsi group by digunakan untuk mengelompokkan hasil query berdasarkan kriteria atau kondisi tertentu. Fungsi Group By, tabel3.(nama_field), [...] FROM tabel1, tabel2, [...] WHERE table1.pk = tabel2.fk, table2.pk = tabel3.fk, [...] GROUP BY nama_field [WITH ROLLUP]; 18 Fungsi HAVING Kebutuhan untuk menyeleksi suatu fungsi agregasi Fungsi agregasi adalah sebuah fungsi yang menerapkan operasi aritmatika dalam prosesnya, seperti SUM, COUNT, AVG, dll. Penggunaan fungsi HAVING dilakukan untuk mengakomodasi penggunaan fungsi agregasi yang tidak dapat diakomodir oleh fungsi WHERE Fungsi HAVING Sintaks SELECT tabel1.(nama_field), COUNT(tabel.nama_field) as nama_field FROM tabel1, tabel2, [...] WHERE table1.pk = tabel2.fk, table2.pk = tabel3.fk, [...] HAVING [kondisi]; 19 20
21 Fungsi SubSELECT Kebutuhan untuk menampilkan data yang kondisinya merupakan hasil dari query lain. Sintaks SELECT nama_field1, nama_field2, [...] FROM tabel1, tabel2, [...] WHERE nama_field IN (SELECT...); MySQL merupakan software database berbasis clientserver. MySQL dapat melayani banyak pengguna dalam satu waktu secara bersamaan. Pengaksesan oleh banyak user dalam waktu bersamaan dapat mengakibatkan collision antar data pengguna. Collision antar data pengguna dapat menyebabkan data tidak valid. 22 Untuk mengatur proses query dalam suatu sistem yang memiliki banyak pengguna (multi-user), dalam MySQL dapat memanfaatkan 2 hal sebagai berikut: 1. mengunci tabel (table-locking). Cara ini dapat dilakukan jika tipe tabel yang digunakan adalah MyISAM, dan 2. dapat menggunakan perintah BEGIN, COMMIT dan ROLLBACK. Cara ini dapat dilakukan jika tipe tabel adalah tabel transaksi, yaitu InnoDB. Terdapat 4 prinsip dasar transaksi yang biasa disingkat dengan ACID, yaitu: 1. Atomicity. Atom merupakan komponen terkecil dari materi yang tidak dapat dibagi-bagi lagi. Prinsip ini berlaku pada proses transaksi. Semua proses (perintah) yang ada di dalam satu paket transaksi harus selesai semua atau tidak selesai sama sekali. Dengan kata lain, dalam satu transaksi tidak boleh ada proses (perintah) yang gagal dieksekusi. 23 24
25 2. Consistency. Bahwa kegagalan satu proses dalam transaksi tidak akan mempengaruhi transaksi lainnya. 3. Isolation. Secara sederhana, bahwa data yang sedang digunakan dalam satu transaksi, tidak dapat digunakan oleh transaksi lainnya sebelum seluruh proses transaksi yang pertama selesai. 4. Durability. Jika sebuah transaksi selesai dieksekusi, hasilnya tetap tercatat dengan baik. Database Systems: 26