Laporan Ke VIII - Subquery dan Index
Gak terasa kita udah nyampe ke penghujung akhir semester 3 ini. Entah apa yang di dapat tapi kok yang namanya materi terus berlanjut ampe pertemuan ke delapan tentang subquery dan index. Jadi pembahasan untuk postingan kali ini ya tentang subquery dan index.
Mungkin dari temen temen sekalian ada yang belum faham ini apa sih yang dimaksud dengan Subquery sendiri dan apa pula yang dimaksud dengan index.Nah maka dari itu silahkan di baca aja ni di Landasan Teori . Nantinya temen-temen bakal tau apa itu Subquery dan apa aja fungsi-fungsinya.
A. LANDASAN TEORI
Subquery merupakan sebuah query didalam query. Pengertian dari subquery adalah sebuah pernyataan SELECT yang dilampirkan sebagai klausa dalam SQL pernyataan yang lain. subquery digunakan untuk menentukan suatu nilai yang belum diketahui.
Contohnya adalah : SELECT ..... FROM ..... WHERE... (SELECT...FROM ....WHERE)
Yang tercetak hitam adalah sebuah main query dan yang tercetak merah adalah sebuah subquery. Pada pernyataan diatas subquey dijalankan terlebih dahulu kemudian menjalankan main query jadi main query akan dijalankan ketika sudah mendapat inputan dari subquery tersebut.
Contoh penulisan dari subquery adalah :
SELECT select_list
FROM table
WHERE expr operator (SELECT select_list
FROM table) ;
Pengertian subquery akan dijelaskan melalui ilustrasi berikut ini :
Misal kita ingin membuat suatu query untuk mencari gaji pegawai yang lebih besar dari gaji yang dimiliki oleh pegawai bernama ‘JONES’.
Untuk memecahkan persoalan ini, kita membutuhkan dua query, satu query untuk mencari gaji yang dimiliki oleh JONES dan query lain u ntuk mencari pegawai yang memiliki gaji lebih besar daripada gaji JONES.
Inner query atau subquery akan menghasilkan suatu nilai yang nantinya dipakai oleh outer query atau main query.
Sintak (cara penulisan) sub query :
SELECT select_list
FROM table
WHERE expr operator
(SELECT select_list
FROM table);
Subquery dapat ditempatkan dalam klausa SQL berikut :
• WHERE
• HAVING
• FROM
Tipe-tipe dari subquery :
• Single row, nilai yang dikembalikan misal : CLERK
• Multiple-row, nilai yang dikembalikan misal : CLERK, MANAGER
• Multiple-column, nilai yang dikembalikan misal : CLERK 7900
MANAGER 7698
Single Row Subquery
Single row subquery memberikan hasil hanya satu baris pada bagian subquery.
Untuk single row subquery ini yang digunakan adalah operator pembandingan :
= , > , >= , < , <= , atau <>.
Penggunaan Klausa Having dalam Subquery
Klausa HAVING bisa digunakan dalam subquery.
Percobaan 5 : Tampilkan nomer department, dan gaji minimum pada tiap-tiap
department yang memiliki gaji minimum yang lebih besar daripada gaji minimum
pada department dengan nomer department = 20.
Kesalahan-kesalahan dalam subquery
Kesalahan dalam subquery yang mungkin terjadi adalah operator baris
tunggal (=) digunakan pada subquery yang menghasilkan lebih dari satu baris,
seperti pada contoh berikut :
Yang benar adalah query berikut :
Penggunaan Operator ANY dalam Multiple Row Subquery
Operator ANY identik dengan operator SOME, yang membandingkan suatu
nilai dengan tiap nilai yang ada dalam subquery.
Operator ALL membandingkan suatu nilai dengan semua nilai yang ada dalam
subquery.
Operator >ALL ekuivalen dengan MAKSIMUM.
Operator <ALL ekuivalen dengan MINIMUM
Indeks dapat dibentuk secara manula maupun secara otomatis. secara manual index terbentuk melalui printah Create Index dan secara otomatis, Index terbentuk saat menentukan primary key dan unique terhadap field tententu.
Pengertian Indeks Indeks dapat dibayangkan sebagai indeks buku, sehingga lelalui indeks buku tersebut dapat dicari letak item tertentu dalam buku dengan mudah. Keberadaan indkes dalam basis data antara lain adalah untuk mempercepat pencarian data berdasarkan kolom tertentu, misalnya diberikan perintah :
select * from pegawai where no_pegawai = '7902';
Jika tidak dijadikan indeks, pencarian data akan dilakukan terhadap seluruh tabel, sama seperti kalu akan mencari sesuatu dalam buku tetapi buku tersebut tidak dilengkapi dengan indeks. namun sekirannya indeks yang berkaitan dengan nip ada, maka sistem akan menemukanya dengan cepat.
Beberapa ha yang sangat terbantu dnegan adanya indeks adalah :
A. Proses penggabungan sejumlah tabel
B. Proses dengan ORDER BY
C. Proses fungsi agregat seperti MIN dan MAX
D. Proses pencarian data
Menciptakan indeks
Untuk membuat file indeks digunakan perintah CREATE INDEX, dengan bentuk umum parintahnya adalah :
create index nama_index on nama_tabel (nama_field_index);
Keterangan :
nama_index adalah nama indeks yang dibuat
nama_tabel : adala nama tabel yang diindeks
nama_field_index yang berada di dalam tanda kurung menyatakan kolom / field / atribut yang diunakan untuk mengindeks.
Contoh 1 :
Apabila kita ingi mengindecx tabel pegawai berdasarkan field nama dengan nama index-nya adalah nama_idx, maka perintah index-nya adalah :
create index nama_idx on pegawai (nama);
Contoh 2 :
Disini akan ditunjukan beberapa manfaat dari proses index.
1. membantu mempercepat proses pencarian data apabila kita ingin menampilkan data pegawai yang namanya adalah 'James', maka perintah yang dituliskan adalah :
2. select*from pegawai where nama='James';
Kemudian bandingkan dengan proses pencarian pada data yang telah diindex :
create index nm_idx on pegawai (nama);
select*from pegawai from pegawai where nama = 'James';
Dari kedua proses pencarian di atas, dapat disumpulkan bahwa pencarian pada table yang sudah diindeks akan lebih cepat (perhatian lama waktu pencarian).
3. Membantu mempercepat proses pengitungan data denga fungsi agregasi. Akan dihitung gaji terbesar untuk pegawai yang perkerjannya adalah 'SALESMAN', maka perintah yang dituliskan :
4. select max(gaji) from pegawai where pekerjaan = 'SALESMAN';
kemudian bandingkan dengan proses pencarian pada data yang telah diindex :
create index gaji_idx on pegawai (gaji); select max(gaji) from pegawai where pekerjaan='SALESMAN';
create index gaji_idx on pegawai (gaji); select max(gaji) from pegawai where pekerjaan='SALESMAN';
Kesimpulannya sama dengan proses pencarian data di atas. Menciptakan Indeks yang unik
Untuk menciptakan indeks yang unik maka harus ditambahkan kata UNIQUE diantara create dan index. Maksud Indeks yang unik adalah bahwa field yang dijadikan sebagai kunci index haruslah field yang berisi data yang unik.
Untuk menciptakan indeks yang unik maka harus ditambahkan kata UNIQUE diantara create dan index. Maksud Indeks yang unik adalah bahwa field yang dijadikan sebagai kunci index haruslah field yang berisi data yang unik.
Contoh1 :
create index pekerjaan_idx on pegawai (pekerjaan); hasil query ok Contoh2 :
create unique index pekerjaan_idx on pegawai (pekerjaan); hasil ERROR Keterangan : Pada contoh kedua perintah index dianggap salah (error) yang disebabkan karena data yang tersimpan di field pekerjaan tidak unik.
create unique index pekerjaan_idx on pegawai (pekerjaan); hasil ERROR Keterangan : Pada contoh kedua perintah index dianggap salah (error) yang disebabkan karena data yang tersimpan di field pekerjaan tidak unik.
Menciptakan Indeks Untuk Beberapa Field Untuk menciptakan indeks dengan beberapa field sebagai kunci indeksnya, maka perlu penyebutan nama-nama field yang dimaksud sebagai berikut :
create unique index no_nama_idx on pegawai (no_pegawai, nama);
create unique index no_nama_idx on pegawai (no_pegawai, nama);
B. HASIL PRAKTIKUM
====> PostgreSQL
Untuk Praktikum kali ini kita gak lepas dari tabel yang kita buat kemarin
1. Tampilkan nama fakultas dan jumlah mahasiswa yang mampunyai ketentuan nama fakultas yang dimunculkan dengan jumlah mahasiswanya terkecil!
2. Tampilkan nama mahasiswa, nama fakultas, alamat dengan syarat nama fakultas sama dengan edi dan alamatnya tidak sama dengan luki!
3. Buatlah index di tabel mahasiswa(alamat). Kemudian buat lagi index yang bersifat unik pada tabel fakultas(fak_nama) kemudian amati perbedaannya ketika memasukkan data yang sama!
4. Buat kolom nama di mahasiswa menjadi unik dan inputkan 2 data yang sama. Kemudian amati perbedaannya !
5. Pindahkan data dari tabel mahasiswa, fakultas ambil kolom nim, nama mahasiswa, alamat, nama fakultas ke tabel baru yang dinamai „tabel identitas‟.
6. Buatlah contoh penggunaan check pada sub bab pembahasan CHECK. Kemudian masukkan beberapa data baik yang sesuai dengan criteria check maupun yang bukan dan amati perbedaannya.
7. Inputkan data di tabel mahasiswa dimana pada kolom nama sebelum inputkan karakter dahulukan dengan spasi dan di akhiri dengan tanda “+” seperti berikut : “ andi cahyono++++”. kemudian munculkan seluruh data dan hilangkan spasi didepan!
8. Munculkan data mahasiswa dengan hilangkan karakter “+” di akhir data dan karakter “a” di awal kata pada kolom nama!
1. Tampilkan nama fakultas dan jumlah mahasiswa yang mampunyai ketentuan nama fakultas yang dimunculkan dengan jumlah mahasiswanya terkecil!
2. Tampilkan nama mahasiswa, nama fakultas, alamat dengan syarat nama fakultas sama dengan edi dan alamatnya tidak sama dengan luki!
3. Buatlah index di tabel mahasiswa(alamat). Kemudian buat lagi index yang bersifat unik pada tabel fakultas(fak_nama) kemudian amati perbedaannya ketika memasukkan data yang sama!
4. Buat kolom nama di mahasiswa menjadi unik dan inputkan 2 data yang sama. Kemudian amati perbedaannya !
5. Pindahkan data dari tabel mahasiswa, fakultas ambil kolom nim, nama mahasiswa, alamat, nama fakultas ke tabel baru yang dinamai „tabel identitas‟.
untuk soal no 5 ini sebenarnya tidak dapat di selesaikan dengan query yang sama pada SQL posgre tapi untuk menyelesaikannya kita bisa menggunakan query pada pertemuan kemarin yaitu view
dan hasilnya bisa di lihat di atas
untuk soal no 5 ini sebenarnya tidak dapat di selesaikan dengan query yang sama pada SQL posgre tapi untuk menyelesaikannya kita bisa menggunakan query pada pertemuan kemarin yaitu view
dan hasilnya bisa di lihat di atas
6. Buatlah contoh penggunaan check pada sub bab pembahasan CHECK. Kemudian masukkan beberapa data baik yang sesuai dengan criteria check maupun yang bukan dan amati perbedaannya.
7. Inputkan data di tabel mahasiswa dimana pada kolom nama sebelum inputkan karakter dahulukan dengan spasi dan di akhiri dengan tanda “+” seperti berikut : “ andi cahyono++++”. kemudian munculkan seluruh data dan hilangkan spasi didepan!
8. Munculkan data mahasiswa dengan hilangkan karakter “+” di akhir data dan karakter “a” di awal kata pada kolom nama!
C. PERBEDAAN POSGREE DAN SQL
Dalam praktikum kali ini banyak dari query-query yang tidak bisa digunakan di digunakan di MYSQL seperti contoh pada nomor 2 dan 8. Bahkan saya membutuhkan waktu 3 jam untuk mencari query yang benar untuk soal nomor 2 dan 8 hehehehe tapi gak apalah ada hikmahnya....
D. KESIMPULAN
Subquery merupakan sebuah query didalam query. Pengertian dari subquery adalah sebuah pernyataan SELECT yang dilampirkan sebagai klausa dalam SQL pernyataan yang lain. subquery digunakan untuk menentukan suatu nilai yang belum diketahui. Jadi di sini ada kemungkinanan nah di dalam kemungkinan itu ada kemungkinan lagi itulah ibarat dari subquery. Sedangkan Indeks dapat dibayangkan sebagai indeks buku, sehingga lelalui indeks buku tersebut dapat dicari letak item tertentu dalam buku dengan mudah. Keberadaan indkes dalam basis data antara lain adalah untuk mempercepat pencarian data berdasarkan kolom tertentu, ya intinya seperti mbah kita lah heheheE. KRTIK DAN SARAN
Setidaknya udah selesailah untuk persoalan praktikum yang kemarin meskipun gak terselesaikan semua karena ada beberapa query yang memang tidak disediakan oleh Mysql. Tapi kenapa query yang kurang hanya query MySQL saja ya padahal dari segi pengguna lebih banyak Mysql dari pada posgree ??? mungkin ada yang bisa menjelaskan ???F. DAFTAR PUSTAKA
http://lecturer.eepis-its.edu/~tessy/tutorial/sqlold/PRAKDB2BAB6.pdf
http://bloggerombol.blogspot.com/2013/01/subquery.html
http://tutorial-bor.blogspot.com/2011/07/pengertian-index-bagian-1.html
Comments
Post a Comment