Sunday, 9 November 2014

SUB QUERY DAN INDEKS



Praktikum 7
Sub Query dan Index
           
Assalamu’alaykum blogger yang dicintai Allah, semoga selalu dalam rahmat dan naungan-Nya yah :) seperti biasa , setiap weekend aku ngepost hasil praktikum a.k.a laporan biar bermanfaat buat para blogger sekalian. Kali ini yang akan aku bahas adalah “SUB QUERY”. Pasti pada bertanya-tanya toh apa itu sub query ? Langsung aja mari kita bahas bareng yaaa, tetep semangat qaqa :D

A.  Landasan Teori

1.     SELECT INTO STATEMENT
Query select into statement merupakan query SQL yang digunakan untuk mengopi informasi dari tabel ke tabel lain tanpa membuattabel sebelemunya.
Berikut struktur query nya:
SELECT * INTO tabel_baru FROM tabel1;

2.    SUBQUERY
SQL menyediakan mekanisme untuk permohonan bersarang (nested query/subquery), adalah struktur SELECT, UPDATE, DELETE, INSERT yang berada dalam query lain. Subquery dapat ditempatkan dalam klausa where, having, from bersama dengan operator perbandingan seperti = untuk baris tunggal dan untuk baris berganda menggunakan in, not in atau <> , < , any,  >,  >=, <=. Subquery digunakan untuk menguji keanggotaan himpunan, membuat perbandingan himpunan, serta menentukan kardinalitas himpunan. Bentuk penggunaannya sebagai berikut:
Select nama_kolom from nama_tabel where nama_kolom operator (subquery);

3.    INDEKS
Indeks berguna untuk mencari nilai data dalam database. Seperti kita akan mengakses sebuah tabel, DBMS akan membaca seluruh tabel hingga selesai. Ketika baris sangat banyak dan hasil dari query hanya sedikit, maka hal ini tidak efisien. Dengan adanya indeks maka kita cukup membuka indeks sehingga akan cepat dalam pencarian kata tersebut. Pemakaian indeks seharusnya digunakan untuk kolom yang sering diakses. Struktur SQL nya:
Create index nama-index on nam_tabel (nama_kolom);

Ada lagi yang namanya “Unique index”, mirip dengan indeks tapi fungsinya mencegah duplikasi data pada sebuah tabel. Ini nih struktur SQL nya untuk membuat unique index:
Create unique index nama_index on nama_tabel (nama_kolom);

Dan untuk menghapusnya cukup dengan mengetikkan :
Drop index nama_index;

4.    KOLOM UNIK
Unik ini dippakai untuk mencegah redudansi (duplikasi data) dalam sebuah kolom. Unique ini sering digunakan dalam pembuatan bukan primary key namun membutuhkan cek duplikasi agar tidak ada yang sama, karena primary key sudah pasti mempunyaisifat unik. Berikut query nya:
Create table nama_table (nama_kolom tipe_data unique);
Atau ketika sudah ada  tabel , tinggal menambahkan dengan:
Alter table nama_tabel ADD UNIQUE (nama_kolom)
Dan untuk menghapusnya:
Alter table nama_table drop constraint nama_constrain;

5.    CHECK
Check berfungsi untuk membatasi nilai masukan dalam sebuah kolom, misalnya kita ingin kolom gender hanya terdiri dari satu karakter dan punya dua pilihan saja, maka kita bisa menggunakan check.

6.    TRIM
Biasanya trim digunakan untuk membersihkan spasi-spasi yang tidak diperlukan. Ada tiga jenis dan fungsi yang berbeda dari trim ini,
RTRIM: digunakan untuk membersihkan spasi kosong yang ada di bagian kiri (Left) String
LTRIM: digunakan untuk membersihkan spasi kosong yang ada di bagiaan kanan (Right) string
TRIM: digunakan untuk membersihkan spasi kosong yang ada di bagian kiri, kanan, maupun tengah string.
Berikut adalah struktur query nya:
Select trim(nama_kolom) from nama_tabel;
Trim memiliki tiga opsi yang digunakan untuk memnentukan karakter apa yang akan dihapus dari suatu string, jadi tidak hanya spasi kosong saja yang bisa dihapus. Opsinya sebagai berikut:
LEADING: untuk menghilangkan karakter terpilih yang ada di sebelah kiri string.
TRAILING:untuk menghilangkan karakter terpilih yang ada di sebelah kanan String.
BOTH : untuk menghilangkan karakter terpilih yang ada dikeduanya (leading maupun trailing).
Berikut struktur query nya:
Select trim(leading ‘karakter, misal: -‘ from nama_kolom) from nama_tabel;

B.  Hasil Praktikum
          1.     Tampilkan nama fakultas dan jumlah mahasiswa yang mampunyai ketentuan nama      
          fakultas yang dimunculkan dengan jumlah mahasiswanya terkecil!
     Pada postgresql dan mysql , mempunyai query yang sama , yaitu:
   Select fakultas.nama_fak, count(nama_mah) from mahasiswa, fakultas where 
   mahasiswa.id_fak=fakultas.id_fak group by fakultas.nama_fak having count
   (nama_mah) <=3;






2.    Tampilkan nama mahasiswa, nama fakultas, alamat dengan syarat nama fakultas sama dengan edi dan alamatnya tidak sama dengan luki! Query nya yaitu :
select nama_mah, nama_fak, alamat_mah from mahasiswa, fakultas where mahasiswa.id_fak=fakultas.id_fak and nama_fak in (select nama_fak from mahasiswa , fakultas where mahasiswa.id_fak=fakultas.id_fak and nama_mah='edi' and alamat_mah <> (select alamat_mah from mahasiswa where nama_mah='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!
Struktur query nya adalah:






 
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.  Query pada postgre berbeda dengan mysql. Pada postgres yaitu:

Sedangkan pada mysql yaitu:



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. Pada postgre perintah check berpengaruh, tapi tidak pada mysql. Terbukti pada saat menginputkan data yang tidak sesuai dengan batasan, pada mysql tetap dimasukkan dan ditampilkan. Seperti dibawah ini:






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.    Evaluasi Perbandingan PostgreSQL dan MySQL

Dalam praktikum kali ini, tredapat beberapa query yang berbeda, seperti pada penggunaan select into, yaitu memindahkan data paa tabel ke tabel lain. Pada postgresql  hanya tinggal mengetikkan:
select nama_kolom1,nama_kolom2 into tabel_baru from tabel_lama;
Namun pada mysql kita harus membuat tabel nya dulu, query nya:
Create table tabel_baru select nama_kolom1,nama_kolom2 from tabel_lama;
Kemudian pada perintah CHECK, tidak berpengaruh pada mysql. Dan nomor 7 & 8 pada mysql juga tidak terjadi perubahan pada kolom yang ingin di TRIM.

D.   Kesimpulan

Subquery adalah query dalam query, fungsinya yaitu untuk mengopi data dari tabel sau ke yang lai, mengambil data dari tabel satu kemudian di update ke tabel yang baru, dan menghapus bari dari satu tabel berdasarkan baris tabel lain.
Indeks digunakan untuk mencari data dalam database.
Kolom unik digunakan untuk menjaga redudansi atau duplikasi data pada kolom di dalam database.
Check, fungsinya untuk membatasi nilai input.
Trim, berfungsi sebagai pembersih spasi kosong atau karakter yang tidak diperlukan.

E.    Kritik dan Saran

Pada praktikum kali ini, dibutuhkan pemahaman lebih lanjut terhadp fungsi-fungsi serta kegunaan subquery, juga dibutuhkan latihan yang lebih mendalam lagi agar semakin faham apa yang akan ditampilkan dengan menggunakan subquery ini.Dibutuhkan juga logika untuk menganalisis persoalan yang dihadapi.
Untuk para blogger, semoga bisa paham dengan sedikit materi yang aku sajikan. Apabila terdapat kesalahan pada praktikumku, ngga usah sungkan,  tinggal klik kolom komentar di bawah ini, dan kirim ke aku huhu ^^V
See you next time, Wassalamu’alaykum ..

F.    Daftar Pustaka
Musthafa, Aziz. 2014. Modul Praktikum Desain Basis Data. Fakultas Sains Dan Teknologi UIN Malang.
Solichin, Achmad. 2010. MySQL dari Pemula Hingga Mahir diakses melalui http://achmatim.net/download/21/


Leave a Reply