Alhamdulillah segala puji bagi Allah yang maha esa yang telah memberi saya kesehatan sehingga saya bisa mengerjakan tugas ini dengan tepat waktu, meskipun agak ngoyoh sedikit. Pada kesempatan kali ini kita akan membahas tentang SUB QUERY dan INDEKS. Dari pada penasaran mari kita simak langsung penjelasan di bawah ini.
- SELECT INTO STATEMENT
SELECT INTO adalah sebuah perintah yang ada pada MySQL yang digunakan untuk memindahkan data dari satu tabel ke tabel yang lain atau dari satu database ke database yang lain. SELECT INTO sebenarnya juga dapat memilah field yang mana sajakah yang ingin kita pindahkan dengan cara menyebutkan nama fieldnya. berikut adalah beberapa contoh penggunaan SELECT INTO:
- Membuat backup sebuah tabel
SELECT * INTO backup_transaksi FROM transaksi
- Membuat backup sebuah tabel ke dalam database yang baru
SELECT * INTO backup_trsndskdi IN ‘backup_database.mdb’ FROM transaksi
- Membuat backup beberapa kolom sebuah tabel
SELECT ID,NamaPelanggan INTO backup_transaksi FROM transaksi
- Membuat backup sebuah tabel dengan syarat
SELECT ID,NamaPelanggan INTO backup_transaksi FROM transaksi WHERE NamaPelanggan=’Usman’
- Membuat backup antara 2 tabel
SELECT ID,NamaPelanggan INTO backup_transaksi FROM transaksi JOIN Produk ON transaksi.IDProduk=Produk.IDProduk
- SUB QUERY
Sub Query adalah query nested atau sebuah query yang ada di dalam query. Sub query merupakan pernyataan SELECT yang merupakan bagian dari pernyataan INSERT, SELECT. Sub query digunakan untuk menangani masalah dalam query yang kompleks bahkan kita tidak tahu nilai berapa yang akan di select atau di insert. Query dasar dalam sub query :
SELECT namakolom FROM namatabel WHERE namakolom operator (subquery);
Beberapa kegunaan dari Sub Query adalah :
- Subquery digunakan untuk menyelesaikan persoalan dimana terdapat suatu nilai yang tidak diketahui (unknown values).
- 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 baris dari tabel lain
Perintah ini hanya bisa menerima satu buah hasil dari sub query, jika hasil dari sub query ada lebih adari satu maka akan terjadi error. Ada beberapa bahasan terkait penggunaah Sub Query ini antara lain :
- 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.
- SELECT namakolom FROM namatabel WHERE kondisi opeatorperbandingan IN (subquery);
- Sub query dengan ALL
Command ALL diikuti dengan operator perbandingan digunakan memiliki arti menampilkan nilai jika perbandingan bernilai benar untuk semua data. Operator perbandingan tersebut berupa ( <, >, =, != ). Berikut adalah query dasar dari sub query all
- SELECT namakolom FROM namatabel WHERE kondisi opeatorperbandingan ALL (subquery);
- Sub query dengan ANY
Command ANY diikuti dengan operator perbandingan memiliki arti menampilkan nilai yang sesuai dengan apapun yang dihasilkan oleh sub query. Contoh query dasar dari sub query ANY
- SELECT namakolom FROM namatabel WHERE kondisi opeatorperbandingan ANY (subquery);
- Sub query dengan EXISTS
Perintah EXISTS disini berguna untuk mengartur penampilan hasil query, Query Utama akan dijalankan jika Sub Query bernilai TRUE (ada hasilnya) jika hasilnya kosong maka Query utama tidak akan dijalankan. Lawan dari statement EXISTS adalah NOT EXISTS
- SELECT namakolom FROM namatabel WHERE EXIST / NOT EXIST (subquery);
- Insert Into Statement
Untuk meng-copy data dari suatu tabel ke tabel lain kita bisa menggunakan perintah INSERT INTO. Tetapi sebelu kita menggunakan perintah INTO INTO ini kita harus membuat tabel baru yang jumlah field dan urutannya sama dengan tabel field sebelumnya, nama dari field tidak harus sama. Query untuk perintah INSERT INTO adalah sebagai berikut :
- INSERT INTO namatabel2 SELECT namakolom FROM namatabel1 ;
Kita juga bisa memberikan kondisi sesuai dengan kondisi yang kita inginkan dengan penambahan perintah WHERE.
- INDEX
Indexes adalah suatu bagian yang special dari system database yang digunakan untuk peningkatan kemampuan menyeluruh dari proses yang ada.
MySQL mengijinkan antara 16 sampai 64 indexes untuk setiap table, akan tetapi ini tergantung storage engine yang digunakan.
Setiap index dapat diletakan di field (kolom) mana saja, mulai dari field 1 sampai field 15. Walaupun penggunaan beberapa field (multicolumn) index tidak terlihat nyata, akan tetapi penggunaan ini akan memberikan kemudahan untuk kemampuan pencarian pada sebuah atau banyak field (column).
Pada lain hal, ada sebuah hal yang menjadikan kelemahan dari penggunaan index. Dimana dengan index kita dapat meningkatkan kecepatan dalam membaca data dari database, tetapi akan membuat lambat proses perubahan data dalam database, karena perubahan akan berpengaruh pada data yang di index. Anda akan mendapat hasil yang normal ketika hanya menampilkan data dari database jika dibandingkan anda melakukan proses tambah (insert) data atau ubah (update) data yang sudah ada.
Pengguna index, baik digunakan pada field (column) :
- Ketika sering menggunakan WHERE pada bagian query.
- Ketika sering menggunakan ORDER BY pada bagian query.
- Ketika memiliki banyak perbedaan nilai.
- Ketika sering menggunakan JOIN pada bagian query.
MySQL memiliki beberapa tipe dari Index yang berbeda, yaitu :
- UNIQUE
- PRIMARY KEY.
- FULLTEXT index
Contoh Penggunaan Macam Index
- Indentifikasi suatu field menggunakan PRIMARY KEY
- Indentifikasi suatu field harus UNIQUE
UNIQUE tidak dapat digunakan dalam jumlah banyak. Sebagian besar digunakan seperti nilai tanggal, angka, nama, kota, kode pos yang berulang, terutama sekali pada table dengan ribuan baris (record). Tetapi semua tergantung pada aplikasi yang anda buat, apakah anda hanya menggunakan sekali-kali pada field yang benar-benar harus unik, seperti alamat email, username dari sistem aplikasi registrasi (sistem login). Anda tidak dapat mendefinisikan sekaligus PRIMARY KEY dan UNIQUE dalam sebuah field, karena PRIMARY KEY sudah didesain harus mengikut aturan unik.
- Identifikasi suatu field akan mendapatkan keuntungan dari sebuah INDEX
Pada rekomendasi ada adalah ketika index akan membantu dan berfikir tentang apa informasi akan disajikan. Jika anda memerlukan untuk melihat daftar dari invoices berdasarkan tanggal atau total jumlah order, maka INDEX akan membuat logical indexes. Jika sebuah table registrasi/login akan menggunakan kombinasi pada username dan password untuk verifikasi suatu proses login, maka akan dibuat index. Anda juga membuat index pada field foreign key anda.
Berikut adalah struktur SQL untuk membuat indeks pada suatu kolom
- CREATE INDEX namaindex ON namatabel (nama kolom);
Sedangkan Unique indexmirip dengan indeks tetapi lebih 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. Berikut struktur SQL nya :
- CREATE UNIQUE INDEX namaindex ON namatabel (nama kolom);
Untuk menghapus index berikut strukturnya :
- DROP INDEX namaindex;
- 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 namatabel (namakolom tipedata unique);
Ketika tabel sudah ada kita bisa menggunakan ALTER TABLE. Berikut Struktur SQL
- ALTER TABLE nama_tabel ADD UNIQUE (nama_kolom);
Untuk menghapus unique berikut caranya :
- ALTER TABLE nama_table DROP CONSTRAINT NAMA_CONSTRAIN
- PENGGUNAAN TRIM
Menghilangkan beberapa karakter di MySQL terkadang sangat kita perlukan. Terutama dalam mengupdate data dalam bentuk karakter/teks yang bertipe varchar, text dan sebangsanya. Contoh simplenya misalnya menghilangkan tanda tertentu seperti menghilangkan tanda koma di belakang kata “Rabu” pada ” Senin,Selasa,Rabu,”. Jika ada masalah seperti ini, kita dapat membersihkannya dengan menggunakan fungsi TRIM. Fungsi TRIM dibagi menjadi 3, yaitu TRIM, LTRIM dan RTRIM. 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;
Ketika kita menggunakan fungsi TRIM kita memiliki tiga opsi yang bisa digunakan untuk menghilangkan atau menghapus suatu karakter string. Jadi fungsi TRIM tidak hanya bisa menghapus spasi saja tetapi kita bisa gunakan untuk menghapus karakter string suatu data. 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 namakolom) from nama_tabel;
HASIL PRAKTIKUM
- Tampilkan nama fakultas dan jumlah mahasiswa yang mampunyai ketentuan nama fakultas yang dimunculkan dengan jumlah mahasiswanya terkecil!
Untuk menyelesaikan soal pertama di atas kita bisa menggunakan kombinasi perintah order by dan limit yang telah di jelaskan pada bab sebelumnya ( baca : Pengenalan Operator Dasar Pada MYQSL). Hasilnya akan seperti pada gambar berikut :
- Tampilkan nama mahasiswa, nama fakultas, alamat dengan syarat nama fakultas sama dengan edi (bisa di sesuaikan) dan alamatnya tidak sama dengan luki (bisa di sesuaikan)!
Pada soal kedua ini kita akan menggunakan sub query dengan operator in. Maka hasilnya akan seperti pada gambar berikut :
- 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 :
Kita insertkan data yang sama (kecuali nim) pada tabel mahasiswa.
Setelah itu kita buat lagi indeks yang bersifat unik pada tabel fakultas seperti pada gambar :
Kemudian kita insertkan juga data yang sama (kecuali id fakultas) :
Dari indeks dan unik indeks dapat kita ketahui bahwa pada unik indeks data yang dimasukkan tidak bisa sama walaupun id nya berbeda.
- Buat kolom nama di mahasiswa menjadi unik dan inputkan 2 data yang sama. Kemudian amati perbedaannya.
Untuk membuat suatu kolom menjadi unuk kita bisa menggunakan perintah alter table, seperti pada gambar berikut :
Setelah itu kita masukkan data pada tabel tersebut dengan catatan nama mahasiswa harus sama :
Maka apabila ada data yang sama pada nama mahasiswa akan tidak bisa di inputkan lagi.
- Pindahkan data dari tabel mahasiswa, fakultas ambil kolom nim, nama mahasiswa, alamat, nama fakultas ke tabel baru yang dinamai „tabel identitas‟.
Untuk memindahkan data dari tabel mahasiswa dan fakultas ke table udentitas, kita perlu membuat terlebih dahulu tabel identitas, dengan field nim, nama, alamat mahasiswa dan nama fakultas. Setelah itu kita bisa menggunakan perintah insert into statement. Hasilnya apabila sukses akan sama seperti pada gambar ;
- 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.
Dalam mysql operator check tidak ada.
- 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.
Gunakan perintah TRIM untuk menyelesaikannya :
- Munculkan data mahasiswa dengan hilangkan karakter “+” di akhir data dan karakter “a” di awal kata pada kolom nama.
PERBEDAAN MYSQL dan POSTGRE SQL PADA BAHASAN SUB QUERY
Pada pembahasan kali ini terdapat beberapa perbedaan antara MySQL dan POSTGRE SQL. Akan tetapi juga banyak sekali persamaan antara keduanya pada beberapa query. Salah satunya adalah pada Sub Query IN, operator Limit, indeks. Dan juga ada beberapa perbedaaan antara keduanya yaitu dalam pembahasan operator CHECK, dalam POSTGRE SQL terdapat pembahasan check, akan tetapi pada DBMS MySQL tidak ada pembahasan tentang operator check. Selain itu adanya perbedaan query pada perintah INSERT INTO STATEMENT, pada DBMS MySQL untuk mengkopi semua data ke data lain kita perlu membuat dahulu tabel yang ingin kita kopikan kemudian kita gunakan perintah INSERT INTO STATEMENT dari tabel awal untuk di kopikan ke tabel yang telah kita buat tadi. Berikut tadi perbedaan dari MySQL dan PostgreSQL.
KESIMPULAN dan SARAN
Sub Query merupakan query yang digunakan untuk menspesifikasikan perintah yang memiliki kondisi tertentu dengan cara memberikan perintah SELECT di dalam SELECT. Perintah tersebut akan sangat membantu kita apabila memiliki banyak sekali data, sehingga kita bisa menemukan data tersebut dengan cepat. Tetapi kita juga harus melihat suatu DBMS tersebut macam-macam query yang variatif atau tidak, karena apabila suatu DBMS tersebut terdapat satu SQL yang tidak ada sementara pada DBMS lain ada maka kita akan kekurangan satu fungsi perintah untuk mendapatkan data yang tepat. Jadi juga perhatikan DBMS yang digunakan agar kita bisa mendapatkan data yang tepat untuk di tampilkan.
DAFTAR PUSTAKA
- http://codeoke.blogspot.com/2012/12/sub-query-mysql.html
- http://blog.binadarma.ac.id/usman/2012/10/16/select-into-pada-mysql.html
- http://ronysyahputra.wordpress.com/2009/11/06/pengenalan-singkat-index-di-mysql/
loading...
0 Response to "SUB QUERY DAN INDEKS"
Post a Comment