Pages

LAPORAN DESAIN BASIS DATA BAB VII (SUBQUERY DAN INDEX)



Bismillah

Oke, ini adalah laporan ke 7 modul praktikum desain basis data yang membicarakan tentang subquery dan indeks.

Lebih jelasnya, langsung saja ya..

Here we go

Topik bahasan

-          Pada bab kali ini akan membahas tentang sub query dan indeks

-          Selain hal itu akan dibahas juga mengenai cluster, kolom unik dan trim



Tujuan



-   memahami dan menggunakan sub query dan indeks dalam pengelolaan database

-   memahami cara penggunaan cluster, kolom unik dan trim.

Materi (Landasan teori)



Kalau di dalam postgreSQL, kita dapat menggunakan SELECT INTO STATEMENT untuk menyalin suatu data dari tabel yang sudah kita buat sebelumnya ke tabel baru. Yaitu dengan menentukan kolom-kolom yang kita inginkan

Akan tetapi pada mysql kita dapat menggunakan query berikut untuk membuat tabel yang isinya merupakan salinan dari tabel yang sudah kita buat sebelumnya



Create table nama_table_baru (select nama_kolom, nama_kolom.. from nama_tabel);



Jika kita menginginkan untuk menyalin semua data, maka tuliskan syntaks berikut

Create table nama_table_baru (select * from nama_table);



SUBQUERY

Sub Query adalah penggunaan statement SELECT di dalam statement SELECT, Sub Query dideklarasikan di dalam perintah my qsl di dalam tanda (), dan biasa menggunakan salah satu dari statemen SELECT, UPDATE, SET, DELETE, atau DO

Bentuk umum dari sub query adalah sebagai berikut:






Dapat ditulis sebagai berikut : select select_list from table where expresi operator (select select_list from table where expresi operator ‘value’)

Subquery digunakan untuk menyelesaikan persoalan dimana terdapat suatu nilai yang tidak diketahui (unkown values).



Operator exist

Merupakan jenis operator Boolean, yang menghasilkan niali benar (true) atau salah (false). Operator exists akan memberikan nilai benar (true) kalau subquery menghasilkan paling tidak sebuah baris/record[1].



Sintaksnya sebagai berikut :

Select nama_kolom from nama_tabel where not exists (select * from nama_table where kondisi );



Operator any

Operator any hampir sama penggunaaannya seperti exists. Tetapi operator relasi yang digunakan biasanya selain = (sama dengan). Hal tersebut disebabkan apabia operator relasi = yang digunakan, maka sebetulnya fungsi operator any (some) sama seperti operator in, sehingga kondisi seperti itu tidak dianjurkan karena lebih mudah pemahamannya apabila menggunakan operator in[2].

Sintaksnya sebagai berikut

Select nama_kolom, nama_kolom from nama_table where nama_kolom > any (select nama_kolom from nama_table);



Operator all

Command ALL diikuti dengan operator perbandingan digunakan memiliki arti menampilkan nilai jika perbandingan bernilai benar untuk semua data. Berikut adalah contoh penggunaannya.Sintaksnya sebagai berikut:



select nama_kolom from nama_table where nama_kolom < all (select nama_kolom from nama_table where nama_kolom > ‘value’);



Sub query dengan IN

Jika operator ‘=’ hanya digunakan untuk hasil yang tepat satu, maka jika ingin menampilkan yang memiliki hasil lebih dari satu maka menggunakan perintah IN, berikut contohnya :

Kita buat terlebih dahulu sebuah tabel yang menunjukkan hasil yang kita inginkan, contoh tabel Job ini digunakan untuk menampilkan data yang hasil dari sub query lebih dari satu.

INDEKS

Index adalah objek pada MySQL yang berisi data yang terurut - dari nilai-nilai pada satu atau lebih field dalam suatu table. 



Sama seperti daftar isi pada sebuah buku, index terutama digunakan  untuk mempercepat pencarian terhadap suatu set data dengan kondisi tertentu - yang melibatkan kombinasi field yang sudah didefinisikan dalam suatu index. 



Tanpa index, pencarian data biasanya akan memakan waktu lama, terutama jika data sudah dalam skala jumlah yang sangat besar[3].



IndekSederhana dan Unik :

Anda dapat membuat indeks yang unik di atas meja.Sebuah indeks yang unik berarti bahwa dua baris tidak dapat memiliki nilai index yang sama. Here is the syntax to create an Index on a table Berikut adalah sintaks untuk membuat indeks[4]

CREATE UNIQUE INDEX index_name

ON table_name ( column1, column2,...);

Anda dapat menggunakan satu atau lebih kolom untuk membuat indeks.Sebagai contoh kita dapat membuat indeks pada tutorials_tbl menggunakan tutorial_author

CREATE UNIQUE INDEX AUTHOR_INDEX

ON tutorials_tbl (tutorial_author)

Anda dapat membuat index sederhana di atas meja. Hanya menghilangkan UNIQUE dari query untuk membuat indeks sederhana.Indeks sederhana ini memungkinkan nilai-nilai duplikat dalam sebuah tabe[5]l.

Jika Anda ingin indeks nilai dalam sebuah kolom di urutan, Anda dapat menambahkan kata DESC dicadangkan setelah nama kolom:

mysql> CREATE UNIQUE INDEX AUTHOR_INDEX

ON tutorials_tbl (tutorial_author DESC)



perintah ALTER untuk menambahkan dan drop INDEKS:

Ada empat jenis laporan untuk menambahkan indeks untuk tabel:

  • ALTER TABLE tbl_name ADD PRIMARY KEY (column_list): Pernyataan ini menambahkan PRIMARY KEY, yang berarti bahwa nilai-nilai diindeks harus unik dan tidak dapat menjadi NULL.
  • ALTER TABLE ADD UNIQUE tbl_name nama_index (column_list): Pernyataan ini membuat index yang nilai harus unik (dengan pengecualian nilai NULL, yang mungkin muncul beberapa kali).
  • ALTER TABLE ADD INDEX nama_index tbl_name (column_list): ini menambahkan indeks biasa di mana nilai apapun mungkin muncul lebih dari sekali.
  • ALTER TABLE ADD FULLTEXT tbl_name nama_index (column_list): ini menciptakan indeks FULLTEXT khusus yang digunakan untuk teks-mencari tujuan.

Berikut adalah contoh untuk menambahkan indeks dalam tabel yang ada.

mysql> ALTER TABLE testalter_tbl ADD INDEX (c);

Anda dapat drop INDEKS saja dengan menggunakan klausa DROP bersama dengan perintah ALTER.Coba contoh berikut untuk drop di atas indeks dibuat.

mysql> ALTER TABLE testalter_tbl DROP INDEX (c);

Anda dapat drop INDEKS saja dengan menggunakan klausa DROP bersama dengan perintah ALTER. Coba contoh berikut untuk drop di atas x. merdeka dibuat

Menampilkan Informasi INDEKS:

Anda dapat menggunakan perintah SHOW INDEX ke daftar semua indeks yang terkait dengan meja.Vertikal-format output (ditentukan oleh \ G) sering berguna dengan pernyataan ini, untuk menghindari sampul garis panjang:

Coba contoh :




 mysql> SHOW INDEX FROM table_name\G
……..j


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[6]

Jika tabel sudah ada, maka bisa menggunakan alter table add check



Fungsi LTRIM (string)

Berfungsi untuk menghilangkan atau menghapus spasi dari bagian kiri suatu string

Contoh:

MySQL> SELECT LTRIM(”    Sistem Basis Data”)Setelah_Di_LTRIM;

Fungsi RTRIM(string)

Berfungsi untuk menghilangkan atau menghapus spasi dari bagian kanan suatu string
Contoh:
MySQL> SELECT RTRIM(“Sistem Basis Data      “)Setelah_Di_RTRIM;

Fungsi TRIM(string)

Berfungsi untuk menghilangkan atau menghapus spasi dari bagian kiri dan kanan suatu string[7]
Contoh:
MySQL> SELECT TRIM(”     Sistem Basis Data     “)Setelah_Di_TRIM;





HASIL PRAKTIKUM

PGSQL

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!


MYSQL

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!
karena pada mysql tidak bisa menggunaka both, maka saya terpaksa menggunakan sintaks berikut :D



Perbandingan antara 2 DBMS

Dilihat dari hasil praktikum diatas,

Bisa dilihat perbandingan yang paling mencolok adalah masalah nomer 5 (menyalin data dari tabel lain)

PGSQL :Menggunakan SELECT INTO STATEMEN

MYSQL :Menggunakan Create tabel yang ditambahkan sub query berupa Select

Pada nomer 8 (soal tentang menghilangkan karakter + dan spasi)perbedaannya adalah

PGSQL :bisa menggunakan TRIM BOTH

MYSQL : Tidak bisa, akan terjadi error


KESIMPULAN

Dengan contoh pembuatan index dan efektivitasnya pada kedua contoh dengan "Select" dan "Update" terlihat penggunaan index berperan signifikan dalam meningkatkan performa jika terjadi join, lookup atau pencarian data referensi. Dengan demikian, biasakan gunakan index terutama untuk foreign key yang digunakan untuk join ke table lain darisuatu tabel.

Begitu juga dengan Subquery yang dapat merelasikan banyak tabel dengan efektif


KRITIK,SARAN, dan MANFAAT

Sebaikanya dalam pengecekan blog, kritikannya bukan hanya sistematika penulisannya, tetapi juga query serta isi hasil praktikumnya juga dikoment..

Karna kritikan yang membangun itu lebih baik dari pada blame aja :D


DAFTAR PUSTAKA

http://codeoke.blogspot.com/2012/12/sub-query-mysql.html

http://asdyaniarya.blogspot.com/2014/01/praktikum-sub-query-pada-mysql.html


http://www.w3schools.com/SQl/sql_create_index.asp


Aziz Modul praktikum dbd Subquery dan indeks (VII) 2014

http://openclosesesame.wordpress.com/category/perintah-string-pada-database-sql/





[1] http://codeoke.blogspot.com/2012/12/sub-query-mysql.html


[2] http://asdyaniarya.blogspot.com/2014/01/praktikum-sub-query-pada-mysql.html


[3] http://mysql.phi-integration.com/sql/membuat-index-pada-mysql


[4] http://www.w3schools.com/SQl/sql_create_index.asp


[5] http://tutorial.belajarweb.net/mysql/mysql-indexs.html


[6] Aziz Modul praktikum dbd Subquery dan indeks (VII) 2014


[7] http://openclosesesame.wordpress.com/category/perintah-string-pada-database-sql/

fitri

YOU MIGHT ALSO LIKE

Tidak ada komentar:

Posting Komentar

Pengunjung

Instagram