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