Join The Community

Blog Competition

Search

Selasa, 18 November 2014

Laporan Praktikum Desain Basis Data “SUB QUERY DAN INDEKS”



      1.      Materi/ Teori
A.    SUB QUERY
Sub Query adalah query nested atau sebuah query yang berada di dalam query. sub query merupakan pernyataan SELECT yang merupakan bagian dari pernyataan INSERT dan SELECT. Sub Query digunakan untuk menangani masalah dalam query yang kompleks, contohnya ketika Anda tahu bagaimana untuk mencari nilai menggunakan pernyataan SELECT, tetapi tidak tahu nilai yang tepat dalam database.
adapun kegunaan sub query yang lain adalah:
A.    Meng-copy data dari satu tabel ke tabel lain
B.     Menerima data dari inline view
C.     Mengambil data dari tabel lain untuk kemudian di update ke tabel yang dituju
D.    Menghapus baris dari satu tabel berdasarkan baris dari tabel lain
Sub Query dapat ditempatkan  bersama klausa where, having, dan from bersama dengan operator perbandingan =, in, not, in, <>, <any>, >=, dan <=. penggunaannya dapat diterapkan pada pernyataan SELECT, UPDATE, DELETE, dan INSERT.
Select nama_kolom from nama_tabel where nama_kolom  operator (subquery);

B.     SELECT INTO Statement
Merupakan query SQL yang digunakan untuk menduplikasi informasi dari tabel satu ke tabel yang lain tanpa membuat tabel sebelumnya
SELECT * INTO newtable FROM table1;

C.    INDEKS
Indeks berguna untuk mepersingkat pencarian data dalam database dengan meng-indeks (memberi keyword unik) pada kolom tertentu. sehingga proses pencarian lebih effisien. untuk database skala kecil penggunaan indeks, dampaknya belum terasa. jika menggunakan database skala besar, penggunaan indeks akan sangat membantu sekali dalam proses pencarian data.  indeks sebaiknya jangan digunakan pada tabel atau kolom yang sangat jarang atau tidak pernah diakses.
cara membuat indeks sebagai berikut:
CREATE INDEX nama_index ON nama_tabel (nama kolom);
Ada pula query UNIQUE INDEKS,  digunakan untuk mencegah duplikasi nilai yang terdapat dalam tabel. Jadi dengan adanya unique index berarti pembaca tidak dapat meng-insert nilai yang sama dalam sebuah tabel.
CREATE UNIQUE INDEX nama_index ON nama_tabel (nama kolom);


D.    CHECK
Query check berfungsi untuk membatasi inputan agar sesuai dengan ketentuan admin. sebagai contoh misalkan kita ingin agar kolom gender yang terdiri dari satu karakter hanya memiliki dua pilihan karakter yaitu M (male) atau F (Fimale) ini dapat kita seting dengan menggunakan CHECK. Dengan menggunakan CHECK maka sebuah kolom hanya bisa diisi dengan data yang memenuhi kriteria dalam CHECK.
alter table nama_tabel add check (nama_kolom in (‘kondisi’,’kondisi’));

E.     TRIM
Trim digunakan apabila dalam suatu data ada spasi yang tidak diperlukan. dengan query trim, kita dapat membersihkan spasi yang tidak digunakan tersebut. ada tiga jenis fungsi trim:
RTRIM : digunakan untuk membersihkan spasi kosong yang ada di bagian kanan (Right) String.
LTRIM : digunakan untuk membersihkan spasi kosong yang ada di bagian kiri (Left) String.
TRIM : digunakan untuk membersihkan spasi kosong yang ada di bagian kiri, kanan, maupun tengah String
Select trim(nama_kolom) from nama_tabel;
Untuk penggunaan query trim, kita dapat menentukan karakter yang akan dihapus, bukan hanya spasi saja. dengan menambahkan opsi tersebut pada struktur query trim:
LEADING : merupakan opsi untuk menghilangkan karakter terpilih yang ada disebelah kiri. Parameter Leading diartikan sebagai sufik dari karakter yang ada.
TRAILING : merupakan opsi untuk menghilangkan karakter terpilih yang ada disebelah kanan String. Parameter Trailing diartikan sebagai sufik dari karakter yang ada.
BOTH : merupakan opsi yang dapat menangani parameter Leading maupun Trailing.
berikut struktur query nya:
Select trim(LEADING ‘karakter, misal : -’ from nama_kolom) from nama_tabel; 

    2.      Hasil Praktikum
A.    Hasil Praktikum PostgreSQL
1.      Menampilkan nama fakultas dan jumlah mahasiswa yang mempunyai ketentuan nama fakultas yang dimunculkan dengan jumlah mahasiswanya terkecil. Querynya sebagai berikut:
SELECT nama_fak, count(*) as jumlah_mahasiswa from mahasiswa m, fakultas f where m.id_fak=f.id_fak GROUP BY f.nama_fak ORDER BY 2 ASC LIMIT 1;”.

2.      Selanjutnya menampilkan nama mahasiswa, nama fakultas, alamat dengan ketentuan nama fakultas sama dengan edi dan alamatnya tidak sama dengan luki.
Querynya sebagai berikut:
SELECT nama_mah, nama_fak, alamat_mah from mahasiswa m, fakultas f where m.id_fak=f.id_fak and nama_fak in (SELECT nama_fak from fakultas f, mahasiswa m where m.id_fak=f.id_fak and nama_mah=’edi’) and alamat_mah <> SELECT alamat_mah from mahasiswa where nama_mah=’luki’);


3.      Membuat index di tabel mahasiswa dalam kolom alamat, kemudian buat index lagi yang bersifat unik pada tabel fakultas dalam kolom fak_nama. Kemudian coba masukkan data yang sama.
Querynya seperti di bawah ini:
CREATE INDEX ALAMAT_INDEX ON MAHASISWA (alamat_mah);
CREATE UNIQUE INDEX NAMA_FAK_INDEX ON FAKULTAS (nama_fak);

4.      Buat kolom nama pada tabel mahasiswa menjadi unik, dan coba inputkan 2 data yang sama.
Querynya sebagai berikut:
ALTER TABLE MAHASISWA ADD UNIQUE (nama_mah);
Coba inputkan 2 nama yang sama.

5.      Pindah data dari tabel mahasiswa, fakultas ambil kolom nim, nama mahasiswa, alamat, dan nama fakultas ke tabel baru yang dinamai ‘identitas’.
Querynya sebagai berikut:
SELECT nim_mah, nama_mah, alamat_mah, nama_fak into identitas from mahasiswa m, fakultas f where m.id_fak=f.id_fak;”.

6.      Coba buat contoh pembuatan check. Kita akan coba langsung menambahkan pada tabel yang ada.
Querynya sebagai berikut:
ALTER TABLE mahasiswa ADD CHECK (gender in (‘L’,’P’));
Coba inputkan data mahasiswa yang gendernya sesuai dan tidak sesuai syarat.

7.      Inputkan data di tabel mahasiswa dimana sebelum karakter dahulukan spasi dan diakhiri dengan tanda ‘+’. Misalnya ‘    linta++++’. Lalu munculkan seluruh data dan hilangkan spasi di depan.
Querynya sebagai berikut:
SELECT TRIM (LEADING ‘ ‘ from nama_mah) FROM mahasiswa;”.

8.      Lalu coba munculkan seluruh data mahasiswa dengan menghilangkan karakter di akhir data dan karakter ‘a’ di awal pada kolom nama.
Querynya sebagai berikut:
SELECT TRIM (both ‘a,+’ from nama_mah) FROM mahasiswa;”.

B.     Hasil Praktikum MySql
1.      Menampilkan nama fakultas dan jumlah mahasiswa yang mempunyai ketentuan nama fakultas yang dimunculkan dengan jumlah mahasiswanya terkecil. Querynya sebagai berikut:
SELECT nama_fak, count(*) as jumlah_mahasiswa from mahasiswa m, fakultas f where m.id_fak=f.id_fak GROUP BY f.nama_fak ORDER BY 2 ASC LIMIT 1;”.


2.      Selanjutnya menampilkan nama mahasiswa, nama fakultas, alamat dengan ketentuan nama fakultas sama dengan edi dan alamatnya tidak sama dengan luki.
Querynya sebagai berikut:
SELECT nama_mah, nama_fak, alamat_mah from mahasiswa m, fakultas f where m.id_fak=f.id_fak and nama_fak in (SELECT nama_fak from fakultas f, mahasiswa m where m.id_fak=f.id_fak and nama_mah=’edi’) and alamat_mah <> SELECT alamat_mah from mahasiswa where nama_mah=’luki’);” atau tanda ‘<>’ bisa diganti ‘not in’.

3.      Membuat index di tabel mahasiswa dalam kolom alamat, kemudian buat index lagi yang bersifat unik pada tabel fakultas dalam kolom fak_nama. Kemudian coba masukkan data yang sama.
Querynya seperti di bawah ini:
CREATE INDEX alamat_index2 ON MAHASISWA (alamat_mah);
CREATE UNIQUE INDEX nama_fak_index2 ON FAKULTAS (nama_fak);

4.      Buat kolom nama pada tabel mahasiswa menjadi unik, dan coba inputkan 2 data yang sama.
Querynya sebagai berikut:
ALTER TABLE MAHASISWA ADD UNIQUE (nama_mah);
Coba inputkan 2 nama yang sama.


5.      Pindah data dari tabel mahasiswa, fakultas ambil kolom nim, nama mahasiswa, alamat, dan nama fakultas ke tabel baru yang dinamai ‘identitas’.
Querynya sebagai berikut:
Buat tabelnya dulu
CREATE TABLE identitas (nim_mah integer not null, nama_mah varchar(20), alamat_mah varchar(15), nama_fak varchar(15));
Pindah data
INSERT INTO identitas SELECT nim_mah, nama_mah, alamat_mah, nama_fak from mahasiswa m, fakultas f where m.id_fak=f.id_fak;”.

6.      Coba buat contoh pembuatan check. Kita akan coba langsung menambahkan pada tabel yang ada.
Querynya sebagai berikut:
ALTER TABLE mahasiswa ADD CHECK (gender in (‘L’,’P’));
Coba inputkan data mahasiswa yang gendernya sesuai dan tidak sesuai syarat.

7.      Inputkan data di tabel mahasiswa dimana sebelum karakter dahulukan spasi dan diakhiri dengan tanda ‘+’. Misalnya ‘    linta++++’. Lalu munculkan seluruh data dan hilangkan spasi di depan.
Querynya sebagai berikut:
SELECT TRIM (LEADING ‘ ‘ from nama_mah) FROM mahasiswa;”.

8.      Lalu coba munculkan seluruh data mahasiswa dengan menghilangkan karakter di akhir data dan karakter ‘a’ di awal pada kolom nama.
Querynya sebagai berikut:
SELECT TRIM(trailing ‘+’ from nama_mah) FROM mahasiswa;
SELECT TRIM(leading ‘a’ from nama_mah) FROM mahasiswa;”.


      3.      Evaluasi Perbandingan
Pada bagian TRIM, di PostgreSQL boleh ada spasi setelah query TRIM, namun pada MySQL tidak boleh ada spasi. Kemudian pada check juga ada perbedaan, dalam MySQL untuk menggunakan fungsi CHECK harus menggunakan lain cara. Lalu pada TRIM di bagian BOTH juga terjadi perbedaan, kalau POstgreSQL boleh depan belakang, tapi kalai Mysql harus depannya atau belakangnya.
 
       4.      Kesimpulan, kritik, saran, manfaat
Kebanyakan querynya sama, hanya dalam beberapa bagian saja terdapat perbedaan, namun semuanya mudah untuk dilakukan dan dipelajari. Semoga lebih dilengkapi saja modulnya agar tidak terjadi kebingungan, semoga dapat bermanfaat bagi pembaca yang ignin memerdalam pengetahuannya tentang sub query da indeks.

      5.      Daftar Pustaka
modul praktikum desain basis data 2013 Teknik Informatika UIN malang
codeoke.blogspot.com/2012/12/sub-query-mysql.html 
http://risnotes.com/2011/12/subqueries/ 
Ebook : Dwi Apri Styorini S.Kom, Pemrograman Basis Data Lanjutan MySQL

0 komentar:

Posting Komentar