Oke, ini adalah laporan ke 7 modul praktikum
desain basis data yang membicarakan tentang subquery dan indeks.
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;
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;
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/
Tidak ada komentar:
Posting Komentar