Event

Event
My vacation with my friends FBI

Selasa, 18 November 2014

PRAKTIKUM DESAIN BASIS DATA VII SUBQUERY dan INDEX


 SUBQUERY DAN INDEX
A.    Landasan Teori
1.      Subquery adalah statement SELECT yang dilampirkan sebagai klausa dalam SQL statement lain.

Perintah SELECT (query) yang terdapat didalam perintah SELECT yang lain. Dengan dukungan subquery, kita dapat lebih mudah untuk membuat berbagai macam format laporan sesuai dengan yang diharapkan. Subquery dapat ditempatkan dalam klausa where, having, from bersama dengan operator perbandingan seperti = untuk baris tunggal dan untuk baris ganda menggunakan in, not in atau <>, < any, >,>=,<=. Penggunaan subquery dapat diterapkan pada SELECT, UPDATE, DELETE dan INSERT.  Penggunaan subquery sendiri mengembalikan nilai ke main query. Subquery digunakan untuk menyelesaikan persoalan dimana terdapat nilai yang tidak diketahui (unknown values) .
Bentuk umum penggunaannya :
            Select <nama_kolom> from <nama_tabel> where <nama_kolom> operator (subquery)
 Berikut ini diberikan contoh penggunaan subquery.
SELECT  last_name
FROM  mahasiswa
WHERE salary>
                        (SELECT salary
                        FROM mahasiswa
                        WHERE mahasiswa_id = 149);
Query diatas akan menampilkan nama pegawai yang gajinya lebih dari pegawai dengan nomer pegawai 149. Sebelumnya, gaji dari pegawai dengan nomer pegawai 149 tidak diketahui, untuk itu kita tempatkan sebagai subquery agar nilai yang tidak diketahui tersebut dapat diketahui dan pada ilustrasi gambar diatas nilai gaji dari pegawai 149 adalah 10500.
2.      SELECT  INTO  STATEMENT
            Query select into statement merupakan query SQL yang digunakan untuk mengopi informasi dari tabel ke tabel yang lain tanpa harus membuat tabel yang baru.
            Berikut struktur query penggunaan select into statement untuk mengkopi semua data dari tabel lain :
            Select *  into <newtable> from <table1>;
            Dan struktur query penggunaan select into statement untuk mengkopi data berdasarkan kolom tertentu dari tabel lama ke tabel baru.
            Select <column_name>(s) into <newtable> [IN externaldb] from <table1>;
3.      INDEKS
Indeks berguna untuk mempercepat proses pencarian data. Kolom yang dijadikan sebagai indeks secara otomatis datanya akan diurutkan. Dalam suatu kasus ketika mengakses sebuah tabel biasanya DBMS akan membaca seluruh tabel baris perbaris hingga selesai. Ketika baris sangat banyak dan hasil dari query hanya sedikit, maka hal ini tidak efisien. Dengan adanya indeks maka kita akan cepat mencari kata dalam suatu pencarian. Clausa where dalam Indeks :
            Create index  <nama_indeks> on <nama_tabel>(nama_kolom);
Indeks sebaiknya jangan digunakan pada tabel atau kolom yang sangat jarang atau tidak pernah diakses. Sedangkan Unique Index mirip dengan indeks tetapi lebih digunakan untuk mencegah duplikasi nilai yang terdapat dalam tabel. Jadi dengan adanya unique index dengan kata lain pembaca tidak dapat meng-insert nilai yang sama dalam sebuah tabel. Berikut struktur SQL nya:
            Create unique index <nama_index> on <nama_tabel>(nama_kolom);
Atau dengan menghapus indeks:
            Drop index <nama_index>;
4.      KOLOM UNIK
Unique berfungsi untuk menjaga agar tidak terjadinya duplikasi nilai (kesamaan data) dalam sebuah kolom. Unique sering digunakan dalam pembuatan bukan primary key namun membutuhkan cek duplikasi agar tidak ada yang sama, karena dalam primary key sudah otomatis mempunyai sifat unik. Berikut struktur SQL dalam pembuatan tabel :
Create table <nama_tabel>(nama_kolomtipe_data unique);
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
5.      CHECK
Check berfungsi untuk melakukan pembatasan nilai masukan dalam sebuah kolom, 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. Berikut query contoh pengunaan check :
db_contoh=> CREATE TABLE pelanggan (
db_contoh(> nama varchar(35),
db_contoh (> kode_area CHAR(10) Check (lenght (trim(kode_area)) = 2),
db_contoh(> umur INTEGER CHECK (umur >= 0),
db_contoh(> gender CHAR(1) CHECK (gender IN ('L', 'P')),
db_contoh(> ttl DATE CHECK (ttl BETWEEN '1998-01-01' AND CURRENT_DATE),
db_contoh(> CHECK (upper(trim(nama)) != 'nita' OR
db_contoh(> upper(trim(nama)) != 'jeki')
db_contoh(> );
CREATE
6.      Penggunaan TRIM
Suatu ketika pasti akan memiliki data yang di dalamnya terdapat spasi kosong yang tidak diperlukan, misalnya spasi ganda. Jika ada masalah seperti ini, kita dapat membersihkan spasi-spasi kosong yang tidak diperlukan menggunakan fungsi TRIM, RTRIM, dan LTRIM. Ketiga fungsi ini memiliki bentuk penggunaan sebagai berikut :
- 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
Berikut Struktur SQL nya :
            Select trim (nama_kolom) from <nama_tabel>;
Dalam penggunaannya, fungsi TRIM memiliki tiga opsi. Ketiga opsi ini dapat digunakan untuk menentukan karakter apa yang akan dihapus dari suatu String. Jadi, fungsi TRIM juga dapat menghilangkan karakter tertentu (bukan spasi kosong saja) dari suatu string. Opsinya sebagai berikut :
- LEADING : merupakan opsi untuk menghilangkan karakter terpilih yang ada di sebelah kiri. Parameter Leading diartikan sebagai sufik dari karakter yang ada.
- TRAILING : merupakan opsi untuk menghilangkan karakter terpilih yang ada di sebelah kanan String. Parameter Trailing diartikan sebagai sufik dari karakter yang ada.
- BOTH : merupakan opsi yang dapat menangani parameter Leading maupun Trailing.
Berikut Struktur SQL nya :
            Select trim(LEADING ‘karakter, misal : -’ from nama_kolom) from nama_tabel;

B.     Tujuan
1)      Mahasiswa memahami dan menggunakan sub query dan indeks dalam pengelolaan database.
2)      Mahasiswa memahami cara penggunaan cluster, kolom unik dan trim.
C.     Hasil Praktikum
1)      Versi PostgreSQL
Berikut ini tampilan awal psql. Tekan "Enter" jika servernya "localhost

Tekan"enter" jika muncul "database [postgres] :"
Tekan "enter" jika nomor portnya 5432.
Tekan 'Enter' dengan mengisi username-nya 'postgres' lalu tekan enter.

Isikan password sesui dengan password saat instalasi.

koneksikan database dengan user menggunakan query "\c [nama database]". kemudian akan muncul seperti berikut ini.

o   Tampilkan nama fakultas dan jumlah mahasiswa yang mempunyai ketentuan nama fakultas yang dimunculkan dengan jumlah mahasiswanya terkecil

o   Tampilkan nama mahasiswa, nama fakultas, alamat dengan syarat nama fakultas sama dengan edi dan alamatnya tidak sama dengan luki

o   Buatlah index di tabel mahasiswa (alamat)

kemudian lihat struktur pada tabel

index dapat dicek dengan memasukkan data baru

Kemudian buat index yang bersifat unik pada tabel fakultas (fak_nama).

kemudian lihat struktur pada tabel

index dapat dicek dengan memasukkan data baru

Lihat perbedaan antara keduanya!!!
o   Buat kolom nama di mahasiswa menjadi unique dan inputkan 2 data yang sama.


Coba dengan memasukkan 2 data yang sama

o   Pindahkan data dari tabel mahasiswa, fakultas kemudian ambil kolom nim, nama mahasiswa, alamat, nama fakultas ke tabel baru yang dinamai 'identitas'

o   Buatlah contoh penggunaan check pada sub bab pembahasan Check. Kemudian masukkan beberapa data baik yang sesuai dengan kriteria check maupun bukan dan amati perbedaannya.

Masukkan beberapa data kemudian amati perbedaannya

o   Inputkan data dari tabel mahasiswa dimana pada kolom nama sebelum inputkan karakter dahulukan dengan spasi dan di akhiri dengan tanda "+" seperti berikut :" adinda++++"

Hilangkan spasi di depan dan munculkan seluruh data

o   Munculkan data mahasiswa dengan hilangkan karakter "+" di akhir kata dan karakter "a" di awal kata pada kolom nama.


D.    TUGAS RUMAH
Versi MySQL
Berikut ini tampilan awal mysql. Isi dengan query mysql -u root.

koneksikan dengan database menggunakan query use [nama database];

o   Tampilkan nama fakultas dan jumlah mahasiswa yang mempunyai ketentuan nama fakultas yang dimunculkan dengan jumlah mahasiswanya terkecil

o   Tampilkan nama mahasiswa, nama fakultas, alamat dengan syarat nama fakultas sama dengan edi dan alamatnya tidak sama dengan luki

o   Buatlah index di tabel mahasiswa (alamat)

kemudian lihat struktur pada tabel

index dapat dicek dengan memasukkan data baru

Kemudian buat index yang bersifat unik pada tabel fakultas (fak_nama).

kemudian lihat struktur pada tabel

index dapat dicek dengan memasukkan data baru

Lihat perbedaan antara keduanya!!!
o   Buat kolom nama di mahasiswa menjadi unique dan inputkan 2 data yang sama.



Coba dengan memasukkan 2 data yang sama

o   Pindahkan data dari tabel mahasiswa, fakultas kemudian ambil kolom nim, nama mahasiswa, alamat, nama fakultas ke tabel baru yang dinamai 'identitas'

o   Buatlah contoh penggunaan check pada sub bab pembahasan Check. Kemudian masukkan beberapa data baik yang sesuai dengan kriteria check maupun bukan dan amati perbedaannya.

o   Inputkan data dari tabel mahasiswa dimana pada kolom nama sebelum inputkan karakter dahulukan dengan spasi dan di akhiri dengan tanda "+" seperti berikut :" adinda++++"

Hilangkan spasi di depan dan munculkan seluruh data

o   Munculkan data mahasiswa dengan hilangkan karakter "+" di akhir kata dan karakter "a" di awal kata pada kolom nama.


E.     Evalusi Perbandingan PostgreSQL dan MySQL Shell
Berdasarkan query-querynya :
Instruksi
PostgreSQL
MySQL
Subquery
Select <nama_kolom> from <nama_tabel> where <nama_kolom> operator (subquery)
Select <nama_kolom> from <nama_tabel> where <nama_kolom> operator (subquery)
Membuat index
Create index  <nama_ indeks> on <nama_tabel> (nama_kolom);
Create index  <nama_ indeks> on <nama_tabel> (nama_kolom);
Membuat index Unique
Create unique index <nama_index> on <nama_tabel>(nama_kolom);
Create unique index <nama_index> on <nama_tabel>(nama_kolom);
Menghapus index
Drop index <nama_index>;
Alter table <nama_table dari_Index> drop index <nama_index>;
Select into statement
Select <column_name>(s) into <newtable> [IN externaldb] from <table1>;

Create table <nama_table baru> select <nama_kolom_ from <nama_table1>
Check
Alter table <nama_tabel> add check (nama_kolom in (karakter);
Alter table <nama_tabel> add check (nama_kolom in (karakter);
Trim trailing
Select trim(trailing 'karakter' from <nama_kolom>) from <nama_tabel>
Select trim <nama_kolom>, trim (trailing 'karakter' from <nama_kolom>) from nama_tabel
Trim leading
Select trim(leading 'karakter' from <nama_kolom>) from <nama_tabel>
Select trim <nama_kolom>, trim (leading 'karakter' from <nama_kolom>) from nama_tabel
Trim both
Select trim(both 'karakter' from <nama_kolom>) from <nama_tabel>
Select trim <nama_kolom>, trim (both 'karakter' from <nama_kolom>) from nama_tabel

F.      Kesimpulan
            Dalam praktikum kali ini :
  •  select into digunakan untuk memindahkan kolom ke tabel yang baru tanpa harus membuat tabel yang baru
  • SQL subquery adalah query dalam query yang digunakan untuk menghapus baris dari satu tabel berdasarkan baris tabel lain, menyelesaikan pesoalan dimana terdapat suatu nilai yang tidak diketahui atau dapat dikatakan pula statement SELECT yang dilampirkan sebagai klausa dalam SQL statement lain
  • indeks digunakan untuk meng-effisienkan pencarian data. Kolom yang dijadikan sebagai indeks secara otomatis datanya akan diurutkan
  • kolom unique, digunakan agar data yang diinputkan tidak boleh sama dalam satu kolom
  • check berfungsi untuk melakukan pembatasan nilai masukan dalam sebuah kolom
  • trim digunakan untuk menghapus spasi atau karakter yang tidak diperlukan
Kritik
Asisten yang kurang memberi penjelasan yang rinci terhadap soal yang ada di modul, sehingga praktikan kesulitan mengerjakan soal di modul
Saran
Mohon lebih rinci dalam penjelasannya dan bantuan dalam mengerjakan soal di modul
G.    DAFTAR PUSTAKA
Ø  http://beginner-sql-tutorial.com/id/sql-subquery.html
Ø  http://dev.mysql.com/
Ø  Raharjo,Budi.Membuat Database menggunakan MYSQL.Informatika : Bandung.2011
Ø  Sanjaya, Ridwan. 2005. Pengolahan Database MySQL dengan Java 2. Yogyakarta: Andi


                                                                                            

Tidak ada komentar:

Posting Komentar

© Copyright 2010 My Esperienza Blog
Welcome to My Esperienza Blog