Pages

Rabu, 19 November 2014

Laporan Praktikum DBD VII : Sub Query dan Indeks



LANDASA TEORI

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;
Untuk mengopi semua data dari tabel mahasiswa ke tabel baru yang dinamakan „identitas 1‟:
SELECT * INTO identitas1 FROM mahasiswa;
Untuk mengopi data pada kolom nim dan nama dari tabel mahasiswa ke tabel baru yang dinamakan „identitas 2‟:
SELECT nim_mhs, nama_mhs INTO identitas2 FROM mahasiswa;

SUB QUERY
Sub query adalah perintah SELECT yang berada di dalam perintah SQL lain. Sub query sangat berguna ketika kita ingin menampilkan data dengan kondisi yang bergantung
pada data di dalam table itu sendiri.
Kegunaan-kegunaan  Sub query dalam memanipulasi data: 

  • Meng-copy data dari satu tabel ke tabel lain. 
  • Menerima data dari inline view. 
  • Mengambil data dari tabel lain untuk kemudian di update ke tabel yang ditujuh. 
  • Menghapus baris dari satu tabel berdasarkan baris dari tabel lain.

ATURAN SUB QUERY
  1. Klausa ORDER BY tidak boleh digunakan .di sub query. ORDER BY dapat digunakan ,di pernyataan SELECT luar.
  2. Klausa sub query SELECT harus beisi satu nama kolom tunggal atau ekspresi kecuali untuk sub query-sub query menggunakan kata kunci EXIST.
  3. Secara default, nama-nama kolom di sub query mengacu ke nama table diklausa FROM di query lebih luar dengan mengkualifikasi nama kolom
  4. Saat sub query adalah salah satu dua operan dilibatkan di pembandingan, sub query harus muncul di sisi kanan pembandingan.
  5. Sub query tdak boleh digunakan sebagai operan di ekspresi.

BENTUK UMUM DARI SUB QUERY


Sintaks:
SELECT select_list
FROM table WHERE expr operator ( SELECT select_list FROM table );
Contoh:
Menampilkan data karyawan yang bekerja satu departemen dengan Biri.
SELECT last_name, title
FROM employee WHERE dept_id = ( SELECT dept_id FROM employee WHERE UPPER(last_name) = ‘BIRI’ );

INDEKS
Indeks berguna untuk mempersingkat 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)

KOLOM UNIK
Unique berfungsi untuk menjaga agar tidak terjadinya duplikasi nilai (kesamaan data) dalam sebuah kolom, hal ini dapat ditangani dengan membuat sebuah indeks unik atau fungsi unik sendiri pada kolom yang dimaksud. Unique ini sering digunakan dalam pembuatan bukan primary key namun membutuhkan cek dupikasi agar tidak ada yang sama, karena dalam primary key sudah otomatis mempunyai sifat unik. Berikut Struktur SQL saat pembuatan tabel baru :
CREATE TABLE nama_tabel (nama_kolom tipe_data unique)
Ketika tabel sudah ada kita bisa menggunakan cara seperti pada BAB. 2 berikut struktur SQL nya :
ALTER TABLE nama_tabel ADD UNIQUE (nama_kolom)
Untuk menghapus unique berikut caranya :
ALTER TABLE nama_table DROP CONSTRAINT NAMA_CONSTRAIN




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’))

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

TUGAS PRAKTIKUM
Tugas praktikum kali ini masih menggunakan tabel pada praktikum sebelumnya :
1. Tampilkan nama fakultas dan jumlah mahasiswa yang mampunyai ketentuan nama fakultas yang dimunculkan dengan jumlah mahasiswanya terkecil!
Untuk memunculkan nama fakultas yang jumlah mahasiswanya terkecil, kita dapat menggunakan query berikut :
SELECT nama_fak, count(*) FROM mahasiswa, fakultas WHERE mahasiswa.id_fak=fakultas.id_fak GROUP BY nama_fak ORDER BY count(*) ASC LIMIT 1;



2. Tampilkan nama mahasiswa, nama fakultas, alamat dengan syarat nama fakultas sama dengan edi dan alamatnya tidak sama dengan luki!
Untuk menampilkannya gunakan query berikut :
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 fakultas WHERE nama_mah = 'dwi' AND alamat_mah IN (SELECT alamat_mah FROM mahasiswa WHERE nama_mah != 'dewi'))



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!
Pertama buat dulu tabel indeksnya :
CREATE INDEX mahasiswa_index ON mahasiswa(alamat_mah)



Insertkan data yang sama kecuali nim pada tabel mahasiswa :
INSERT INTO mahasiswa VALUES (9, 'edo', 'pasuruan', 1, 087990002, 'L')



Kemudian buat indeks yang bersifat unik :
CREATE UNIQUE INDEX unama_fak_index ON fakultas (nama_fak)



Selanjutnya insertkan data yang sama kecuali nim pada tabel mahasiswa :




4. Buat kolom nama di mahasiswa menjadi unik dan inputkan 2 data yang sama. Kemudian amati perbedaannya !
Untuk membuat kolom nama mahasiswa menjadi unik pertama kita pakai query :
ALTER TABLE mahasiswa ADD UNIQUE (nama_mah)



Selanjutnya insertkan data pada tabel tersebut dan pada kolom nama mahasiswa harus sama :
INSERT INTO mahasiswa VALUES (20, 'Linda', 'Lamongan', 2, 087665343, 'P'), (21, 'Dinda', 'jakarta', 3, 098890001, 'P')




5. Pindahkan data dari tabel mahasiswa, fakultas ambil kolom nim, nama mahasiswa, alamat, nama fakultas ke tabel baru yang dinamai „tabel identitas‟.
Sebelumnya kita buat dahulu tabel identitas kemudian kita bisa menggunakan query insert into statement :

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.


Kita gunakan check pada kolom gender :
ALTER TABLE mahasiswa ADD CHECK (gender in ('L', 'P'))



Kemudian masukan satu data untuk mengecek apakah berhasil dijalankan atau tidak :
INSERT INTO mahasiswa VALUES (22, 'cahyono+++', 'solo', 2, 0876543311, 'O')


 

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! 


Masukkan data dari cahyono :
INSERT INTO mahasiswa VALUES (23, ' cahyono+++', 'batu', 3, 0876543311, 'L')
Kemudian hilangkan spasi mengunakan query LTRIM :
SELECT nim_mah, LTRIM(nama_mah), alamat_mah, id_fak, no_telp, gender FROM mahasiswa
 

 
8. Munculkan data mahasiswa dengan hilangkan karakter “+” di akhir data dan karakter “a” di awal kata pada kolom nama


Jika kita ingin menghilangkan tanda “+” dan karakter “a” kita gunakan :
SELECT trim(nama_mah), trim(trailing'+' FROM nama_mah) FROM mahasiswa





EVALUASI PERBANDINGAN
Dalam mySQL untuk meng-copy semua data pada suatu tabel dan memindahkannya pada tabel lain kita perlu membuat tabel baru terlebih dahulu kemudian setelah itu kita gunakan perintah insert into statement dari tabel awal ke tabel yang baru.
Penggunaan query trim, trim yang menggunakan spasi pada kolom yang akan di jalankan tidak berpengaruh pada postgreSQL, tetapi pada MySQL jika kita menyelipkan spasi antara perintah trim dengan kolom yang akan di eksekusi dengan perintah trim, maka terjadi keslahan. Karena spasi trim akan diartikan sebagai fungsi. penggunaan trim tidak boleh dipisahkan dengan nama kolom yang akan dieksekusi.

KESIMPULAN
Subquery adalah Query di dalam query.
Kegunaan-kegunaan  Subquery dalam memanipulasi data:
Meng-copy data dari satu tabel ke tabel lain
Menerima data dari inline view
Mengambil data dari tabel lain untuk kemudian di update ke tabel yang dituju
Menghapus baris dari satu tabel berdasarkan 

KRITIK DAN SARAN
Sub query merupakan query yang digunakan untuk menspesifikasikan perintah yang memiliki kondisi tertentu dengan cara memberikan perintah SELECT di dalam SELECT biasa juga disebut dengan NESTED SELECT. Query tersebut akan sangat membantu apabila kita memiliki banyak sekali data, sehingga kita bisa menemukan data yang sedang kita cari dengan sangat cepat. Tetapi kita juga harus melihat suatu DBMS tersebut macam-macam query yang variatif atau tidak , karena setiap DBMS memiliki beberapa perbedaan dengan DBMS yang lain.

MANFAAT BAGI PEMBACA
Pembaca dapat memahami prinsip penggunaan nested select agar mempersingkan penulisan query serta agar pembaca dapat memahami cara penggunaan cluster, kolom unik dan trim. 

DAFTAR PUSTAKA
Modul Praktikum Desain Basis Data 2014.pdf
http://beginner-sql-tutorial.com/id/sql-subquery.htm
http://beginner-sql-tutorial.com/id/sql-index.htm
http://tutorial-bor.blogspot.com/2011/07/pengertian-index-bagian-1.html
http://risnotes.com/2011/12/subqueries/
http://beginner-sql-tutorial.com/id/sql.htm
http://codeoke.blogspot.com/2012/12/sub-query-mysql.html
http://catatankuliahum.blogspot.com/2013/02/sub-query-basis-data.html

Tidak ada komentar:

Posting Komentar