SUB QUERY DAN INDEKS
1. Dasar Teori
A. SELECT INTO STATEMENT
Query select into statement merupakan query SQL yang digunakan untuk mengopi informasi dari tabel ke tabel yang lain tanpa membuat tabel sebelumnya. Berikut struktur query penggunaan select into statement untuk mengopi semua data dari tabel1 ke tabel yang baru :
Query select into statement merupakan query SQL yang digunakan untuk mengopi informasi dari tabel ke tabel yang lain tanpa membuat tabel sebelumnya. Berikut struktur query penggunaan select into statement untuk mengopi semua data dari tabel1 ke tabel yang baru :
SELECT
* INTO newtable FROM table1;
Berikut
struktur query penggunaan select into statement
untuk mengopi data berdasarkan kolom
tertentu dari tabel1 ke tabel yang baru :
SELECT
column_name(s) INTO newtable [IN externaldb] FROM table1;
Contoh :
• mengopi semua data dari tabel mahasiswa ke tabel baru yang dinamakan “identitas 1”:
Select * into identitas1 from mahasiswa;
• 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;
B. SUB QUERY
Ø Mencari nama pegawai yang memiliki jabatan yang
sama dengan pak hendro bisa menggunakan query sebagai berikut :
Select * into identitas1 from mahasiswa;
• 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;
B. SUB QUERY
Sub Query adalah query Nested merupakan bentuk query yang terdapat
dalam query yang lain. Subquery dapat ditempatkan dalam klausa where, having,
from bersama dengan operator perbandingan seperti = untuk baris tunggal dan
untuk baris berganda menggunakan in, not
in atau <>, < any, >,
>=, <=. Penggunaan sub query
dapat diterapkan pada pernyataan SELECT, UPDATE, DELETE, dan INSERT. Bentuk
penggunaannya sebagai berikut :
Select nama_kolom from nama_tabel where nama_kolom operator (subquery);
Sub Query digunakan untuk menangani masalah yang kompleks yang
mungkin sulit untuk dilakukan hanya dengan sebuah query. Berikut contoh dari
subquery menggunakan data pegawai :
Select
nama_peg,jabatan_peg from pegawai
where jabatan_peg in
(select
jabatan_peg from pegawai where nama_peg=’Hendro’);
Hasil
:
Ø
Mencari nama pegawai yang gajinya lebih besar
dari pegawai dengan nama Dodi bisa
menggunakan query sebagai berikut :
select nama_peg,gaji_peg from pegawai where gaji_peg > any
(select gaji_peg
from pegawai where nama_peg =’Dodi’);
Hasil
:
Ø Mencari nama pegawai yang gajinya lebih besar
dari 950000 dan
jabatannya bukan
seperti jabatan pak hendro bisa menggunakan
query sebagai berikut :
select nama_peg, jabatan_peg, gaji_peg from pegawai where gaji_peg >= 950000
and jabatan_peg
<> (select jabatan_peg from
pegawai where nama_peg=’Hendro’);
Hasil
:
C. 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.
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 sangat tidak efisien. Seperti halnya ketika kita membaca sebuah
buku dan ingin mencari kata atau istilah tertentu dalam buku maka biasanya akan
di cari dengan membuka setiap halaman dari awal sampai akhir. PostgreSQL tidak
bisa membuat indeks dengan otomatis, sehingga user dapat membuat
indeks tersebut untuk sering kali digunakan kolom, biasanya dalam clause
WHERE. Berikut struktur SQL :
CREATE
INDEX nama_index ON nama_tabel (nama kolom);
Contoh :
- Pada
tabel pegawai kita berikan index pada kolom gaji untuk query sebagai berikut :
Create
index gaji_index on pegawai(gaji_peg);
Hasil :
indeks
sebaiknya jangan digunakan pada tabel
atau kolom yang sangat jarang atau tidak pernah diakses. Selain untuk perintah SELECT Indeks juga bermanfaat untuk
UPDATE
dan DELETE yang menggunakan kondisi pencarian. Sedangkan Unique index mirip 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 nama_index ON nama_tabel (nama kolom);
Untuk
menghapus index berikut strukturnya :
DROP
INDEX Nama_index;
Contoh :
·
Pada tabel pegawai kita berikan index yang
bersifat unik pada kolom nama, untuk query sebagai berikut :
Create
unique index unama_index on pegawai(nama_peg);
Hasil :
Apabila kita memasukkan dengan nama yang sudah
terdapat pada data terdahulu
akan
terdapat error.
D. 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
Contoh :
E. 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
(length(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
F. 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;
2. 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!
Tampilkan dulu tabel mahasiswanya :
Lalu munculkan 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!
Buat index dulu di tabel mahasiswa(alamat) :
Lalu cek dulu tabel mahasiswa dan fakultas :
Kemudian amati perbedaannya ketika memasukan data :
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!
3. PERBANDINGAN ANTARA POSTGRESQL DAN MYSQL
Okey Gaes, dari praktikum kali ini yang telah
saya lakukan, terdapat perbedaan antara PostgreSQL dengan MySQL dapat dilihat
pada query dalam PostgreSQL dan MySQL. Pada PostgreSQL, saat dilakukan check
untuk pengisian kategori ‘gender’ yang tidak sesuai kriteria tidak dapat
dilakukan, Sedangkan MySQL meskipun sudah ditambahkan check masih tetap bisa
diisi dengan data pada kategori ‘gender’ yang tidak sesuai dengan kriteria. Nah
yang saya ketahui lagi perbedaan lain yaitu untuk query menghapus index jika
PostgreSQL menggunakan drop nama_index; sedangkan pada mySQL menggunakan alter Table
nama_table drop nama_index;.
4. KESIMPULAN
Sub Query adalah query Nested merupakan bentuk query yang terdapat dalam query yang lain. Subquery dapat ditempatkan dalam klausa where, having, from bersama dengan operator perbandingan seperti = untuk baris tunggal dan untuk baris berganda menggunakan in, not in atau <>, < any, >, >=, <=. Index adalah objek pada MySQL yang berisi data yang terurut - dari nilai-nilai pada satu atau lebih field dalam suatu table.
Kritik dan Saran
Untuk soal nomor 8 ini kok saya susah memahami ya pak. Soalnya menurut saya kemarin sudah benar kalo saya ngerjainnya, kok katanya aslab nya salah. Nah loh kan banyak tanda tanya tuh :D
SEMOGA BERMANFAAT :)
DAFTAR PUSTAKA
- http://mysql.phi-integration.com/sql/membuat-index-pada-mysql
- http://tutorial-bor.blogspot.com/2011/07/pengertian-index-bagian-1.html
- http://blog.rosihanari.net/penggunaan-subquery-dalam-query-sql-bag-1/