Minggu, 06 Oktober 2019
BAB 13 RECURSIVE QUERIES
Recursive adalah proses pemanggilan dirinya sendiri (fungsi atau prosedur). Fungsi maupun prosedur yang memanggil dirinya disebut fungsi atau prosedur rekursif. Fungsi antuk suatu bagian program yang mengembalikan (menghasilkan) hanya satu nilai.
BAB 12 TRIGGERS
Trigger adalah code procedural yang
secara otomatis tereksekusi sebagai respon terhadap event tertentu pada table atau view tertentu pada database.
Trigger biasanya digunakan untuk menjaga integrity dari informasi pada database. Misal pada desa akan terdata otomatis ketika
penginputan dilakukan (pada kasus ini diasumsikan petugas yang menginputkan
adalah Moeljoko dengan iddesa = 1).

Gambar 12.1
Contoh pembuatan trigger
Kita inputkan lagi data lainnya
BAB 11 FUNGSI DAN PROSEDUR
11.1 Fungsi
Fungsi (function) pada MySQL sama dengan bahasa pemrograman yang lain.
Fungsi mengembalikan suatu nilai, yang berbeda dengan prosedur. Berikut contoh
penggunaan fungsi.

Gambar
11. 1 Contoh penggunaan fungsi
11.2 Prosedur
Prosedur (procedure) mirip dengan fungsi, dimana yang membedakan adalah suatu
prosedur tidak mengembalikan nilai. Berikut contoh dari prosedur.

BAB 10 ORDERING, GROUPING DAN HAVING
10.1 Ordering
Fungsi ordering digunakan untuk mengurtkan tampilan data berdasarkan
atribut tertentu. Misal diminta untuk ditampilkan jeniskegiatan dan alamat
kegiatan yang diurutkan berdasarkan jenis kegiatan.
Gambar 10. 1 Data
kegiatan yang diurutkan berdasarkan jenis kegiatan
Secara default fungsi
ordering mengurutkan data secara ascending, yaitu secara alfabetik dari A
ke Z, atau secara angka dari yang terkecil ke terbesar. Pengurutan juga bisa
dilakukan secara descending. Misalkan
diminta untuk menampilkan data kegiatan dan alamat kegiatannya diurutkan
berdasarkan jenis kegiatan.
Gambar 10. 2 Data kegiatan yang diurutkan
berdasarkan jeniskegiatan secara descending
10.2 Grouping
Grouping artinya pengelompokkan, digunakan untuk mengelompokkan
data berdasarkan atribut tertentu. Sebagai contoh Anda diminta untuk
menampilkan banyaknya buku dan total stok dari buku untuk setiap penerbit.
Query yang dapat digunakan adalah:

Gambar 10. 3 Menampilkan idkegiatan dengan
menggunakan grouping
10.3 Having
Having
digunakan untuk menggantikan WHERE dan biasanya digunakan ketika harus
dipasangkan dengan fungsi agregat.

Gambar 10. 4 Menampilkan data
pengarang dengan menggunakan having
BAB 9 VIEW
9.1 Definisi View
Tujuan dari pembuatan view adalah untuk kenyamanan
(mempermudah penulisan query), untuk keamanan (menyembunyikan beberapa kolom
yang bersifat rahasia), atau dalam beberapa kasus bisa digunakan untuk
mempercepat proses menampilkan data (terutama jika kita akan menjalankan query
tersebut secara berulang).
Misal ingin dibuat dua buah
tampilan. Tampilan pertama yaitu menampilkan daftar kegiatan tampilan satunya
menampilkan daftar pemberitahuan. Untuk tampilan pertama querynya cukup mudah:

Gambar 9. 1 Data kegiatan
Sedangkan untuk menampilkan
tampilan yang kedua, kita perlu melakuan subquery bersarang dengan memanfaatkan
query pada tampilan pertama:

Gambar 9. 2 Data kegiatan
Query yang digunakan untuk menampilkan tampilan kedua
adalah query yang cukup panjang. Jika diinginkan tampilan yang lain yang
levelnya bahkan lebih tinggi daripada tampilan kedua tersebut, tentunya akan
menjadi sangat rumit sekali.
Disinilah view dapat
digunakan untuk membantu seorang programmer.
9.2 Membangun View
Disini akan dibagi menjadi dua sub bab lagi, yaitu view untuk data kegiatan dan pemberitahuan.
9.3 Menghapus View
Untuk menghapus view
dapat menggunakan perintah DROP. Sebelum dihapus, view dapat dilihat pada list tabel:
Jika dilakukan penghapusan, maka daftar view pun akan hilang.
BAB 8 JOIN
8.1 Natural Join
Jika diperhatikan, penulisan query
menggunakan SELECT untuk menampilkan data yang berrelasi menggunakan klausa
WHERE memerlukan banyak energi. Query yang dituliskan panjang sehingga
kemungkinan kesalahan dalam penulisan query pun semakin besar. Sebagai contoh
perhatikan query berikut yang menggunakan klausa WHERE:

Gambar 8. 1 Menampilkan data desa dan kegiatan
menggunakan klausa WHERE
Sekarang Anda dapat membuat
tampilan yang sama dengan query yang lebih singkat, yaitu menggunakan NATURAL
JOIN. Seperti yang ditunjukkan pada gambar berikut:
Gambar
8. 2
Menampilkan
data kegiatan dan desa menggunakan NATURAL JOIN
Anda tidak perlu lagi menyamakan
FK dengan PK nya, karena NATURAL JOIN memastikan atribut yang bernama sama
pasti berhubungan. Sehingga Anda dapat menghemat waktu dan energi dengan
menggunakan NATURAL JOIN. Walaupun demikian, ada paling tidak dua kondisi yang
harus diperhatikan jika Anda memutuskan menggunakan NATURAL JOIN:
1. Pastikan
untuk atribut-atribut yang berhubungan/berrelasi memiliki nama yang sama.
2. Pastikan
untuk atribut-atribut yang tidak saling berhubungan/berrelasi tidak memiliki
nama yang sama.
Untuk membuktikan kondisi
tersebut, di sini akan diberikan tambahan tabel yaitu tabel petugas. Dimana tabel petugas berrelasi dengan tabel lainnya
dalam hal pengelolaan sehingga database memiliki tabel yang mencatat history
pengelolaan data. Lebih jelasnya digambarkan pada ERD berikut:

Gambar
8. 3 ERD
yang menampilkan tabel histori pada database si_desa
Perhatikan pada tabel admin
PK nya berubah menjadi idadmin (silakan
diubah dengan menggunakan ALTER). Selain itu terdapat juga tambahan entitas
yang lain, Berikut akan ditunjukkan pembuatan tabel ADMIN

Gambar
8. 4 Pembuatan
tabel admin
Sedangkan untuk tabel lainnya hanya
akan dicontohkan pembuatan tabel kelola_pengarang
saja. Silakan tabel lainnya juga dibuat dengan cara yang sama.

Gambar
8. 5 Pembuatan
tabel penduduk
Kemudian isikan tabel admin dan tabel penduduk yang telah dibuat tadi dengan data sebagai
berikut (tabel lainnya silakan diisi sendiri):
Perhatikan bahwa tabel admin dan tabel penduduk memiliki atribut yang bernama sama, Akan
tetapi jika kita gunakan natural join untuk menampilkan id
desa dan id desa pada tabel penduduk
Himpunan kosong dihasilkan dari natural join karena tidak
memperhatikan kondisi dan syarat untuk natural join. Hal ini diakibatkan
karena pada tabel admin memiliki
atribut nama Untuk mengatasi
permasalahan ini, dapat digunakan klausa where
Selain dengan klausa where,
dapat juga digunakan left join, right join dan inner
join untuk memecahkan permasalah di atas, yang dijabarkan pada sub bab
beikutnya.
8.2 Left Join dan Right Join
Left
Join akan menampilkan semua record
dari tabel sebelah kiri, dan record dari
tabel sebelah kanan yang cocok. Hasilnya akan NULL untuk bagian kanan jika
tidak ada kecocokan. Misal diminta untuk ditampilkan tabel adminyang menampilkan juga no HP admin yang mencatat. Query yang
tepat jika menggunakan left join adalah sebagai berikut:
Akan tetapi jika posisi kedua tabel yang berhubungan
diubah, maka tampilan datanya pun akan memiliki arti yang lain.
Right join adalah join yang serupa
dengan left join, hanya saja posisi tabel yang kanan akan ditampilkan
semua record nya. Sedangkan tabel
yang kiri hanya record yang
bersesuaian saja.
8.3 Inner Join
Versi aman dari left join maupun right
join adalah inner join. Inner join tidak mementingkan posisi
tabel pada query dan fungsinya sama dengan klausa where.
BAB 7 SUBQUERY BERSARANG
7.1 SELECT
Berdasarkan kasus yang sudah ada,
ada beberapa permasalahan yang mungkin saja agak rumit jika diselesaikan dengan
query SQL dasar. Misal Anda diminta untuk menampilkan data pengarang, yang pada
tahun 2017 bukunya diterbitkan oleh Erlangga dan pada tahun 2016 bukunya
diterbitkan oleh Andi.
Untuk menyelesaikan ini Anda dapat
menggunakan subquery bersarang:

Gambar
7. 1 Query
bersarang untuk kasus SELECT
DISTINCT digunakan
untuk jika dalam suatu tampilan data terdapat baris yang duplikat (lebih dari
satu baris dengan isi yang sama), maka hanya ditampilkan satu baris data
saja.
7.2 INSERT
Jika Anda diminta
untuk memasukkan data baru, dimana memiliki detail sebagai berikut:
Iddesa : null
Namadesa : Ranggang
Idkegiatan : null
Idpemberitahuan : 11
Maka Anda dapat menggunakan query
bersarang berikut untuk tabel desa:
Gambar 7. 2 Query bersarang untuk menginputkan
data desa
Sementara untuk tabel kegiatan akan menjadi lebih rumit,
karena kita tidak tahu informasi idkegiatan.
Sedangkan PK dari desa mengharuskan
format kode memuat iddesa dan idkegiatan. Hal tersebut bukan masalah,
Anda dapat memasukkan kode dummy terlebih
dahulu, yang kemudian Anda bisa update nantinya. Misal:

Gambar
7. 3 Query
bersarang untuk menginputkan data kegiatan
Selanjutnya Anda tinggal menuliskan
perintah UPDATE:
7.3 UPDATE
Perhatikan tampilan data buku dan
penerbit berikut:
Misalkan ada kesalahan pada data di atas. Id kegiatan
Maka query bersarang yang bisa Anda gunakan adalah:

Gambar 7. 4 Query bersarang untuk kasus UPDATE
7.4 DELETE
Sama seperti kasus sebelumnya,
jika diminta untuk menghapus data desa yang
kegiatan, maka query yang
dapat digunakan adalah sebagai berikut:

Gambar
7. 5 Query
bersarang untuk kasus DELETE
Jika data desa ada yang dihapus, lalu
bagaimana dengan tabel kegiatam?
Karena sebelumnya membangun tabel desa menggunakan ON DELETE CASCADE, maka seharusnya data pada tabel tersebut akan
otomatis ikut hilang. Mari kita buktikan, tampilkan data pada tabel desa
menggunakan select * from desa;
Langganan:
Postingan (Atom)
-
Pengertian Tree Tree merupakan salah satu bentuk struktur data tidak linear yang menggambarkan hubungan yang bersifat hira...
-
Recursive adalah proses pemanggilan dirinya sendiri (fungsi atau prosedur). Fungsi maupun prosedur yang memanggil dirinya disebut fungsi ata...
-
Pada pertemuan sebelumnya, semua data pada tabel penduduk telah dihapus. Maka pada pertemuan ini dilakuan pengisian data terlebih dahulu: ...