A.
Dasar
Teori
I.
Sub
Query
Subquery (Subselect) adalah pernyataan
SELECT yang merupakan bagian dari pernyataan lain, misal : INSERT. Pernyataan
ORDER BY, FOR UPDATE OF, UNION, INTERSECT atau EXCEPT tidak termasuk dalam
pernyataan ini.
Subquery menghasilkan sebuah tabel yang merupakan bagian dari tabel
atau view yang diidentifikasikan pada klausa FROM. Pembagian ini dapat
digambarkan seperti urutan operasi, dimana hasil dari suatu operasi adalah
input bagi operasi lain. Subquery diperlukan pada saat hasil query tidak
berhasil dilakukan dengan hanya melalui satu tabel saja, juga pada saat hasil
suatu query digunakan pada klausa WHERE query lainnya. Hasil yang diperoleh
dari SUBSELECT tidak dapat ditampilkan oleh “main” SELECT.
Urutan operasi pada
Subquery adalah :
1. klausa FROM
2. klausa WHERE
3. klausa GROUP BY
4. klausa HAVING
5. klausa SELECT
Sintaks :
SELECT ( * | (ekspresi_kolom) ….
FROM (nama_tabel) ….
[WHERE
kondisi ]
[GROUP BY (nama_kolom) …. ]
[HAVING
kondisi_having ]
•
SUBQUERY – Coding
Fungsi :
Pada klausa kondisi (WHERE atau HAVING), akses lain
seperti SELECT dapat melibatkan beberapa tabel. Ada beberapa cara untuk menggabungkan
SELECT tambahan pada klausa SELECT atau HAVING :
•
Perbandingan aritmatik (=, >, <)
•
ANY (dikombinasikan dengan =, >=, <=)
•
SOME (dikombinasikan dengan =, >=, <=)
•
IN
Hasil Subquery menentukan key word manakah yang
dapat digunakan (ANY, SOME, IN). UNION tidak diperkenankan untuk digunakan
dalam SUBSELECT. Sedangkan aritmatik
dapat digunakan.
Contoh :
1. Subquery
dengan Perbandingan Aritmatik
SELECT EMPNO, LASTNAME, M_SALARY
FROM OWNER_ID.EMP
WHERE M_SALARY
>
(SELECT AVG(M_SALARY)
FROM OWNER_ID.EMP)
Subquery
menghasilkan nilai tunggal. Oleh karena itu perbandingan dalam klausa WHERE
cukup dilakukan dengan operator aritmatik yang sederhana.
2. Subquery
dengan IN
SELECT EMPNO, FIRSTNME, M_SALARY
FROM OWNER_ID.EMP
WHERE M_SALARY
> 2500 AND JOBID IN
(SELECT JOBID FROM
OWNER_ID.JOB
WHERE JOB_NAME
LIKE ‘SYSTEM%’
Subquery ini menghasilkan sekumpulan nilai
tetapi hasilnya masih dalam satu kolom. Key word khusus dibutuhkan untuk menggabungkan
nilai-nilai tersebut dalam “main” SELECT. =ANY atau =SOME dapat digunakan
sebagai pengganti IN
II.
Select
Into Statement
Query select into statement
merupakan query SQL yang digunakan untuk mengkopi informasi dari tabel ke tabel
yang lain tanpa membuat tabel sebelumnya. Select Into mengambil data dari tabel
database dan memasukkan ke tabel lain. Perhatikan contoh dibawah ini :
Select namaDepan, namaBelakang,tol_Lahir
into UserBackup krom User
Bagian pertama dari pernyataan
tampak familia dan hanya memilih beberapa kolom. Bagian kedua dari pernyataan
SQL adalah bagian penting, yang menentukan untuk memasukkan baris ke dalam
tabel USerBackup. Bagian terakhir menentukan tabel mana yang mau diambil
datanya untuk dimasukkan ke dalam tabel yang dipilih. Contoh ini mengasumsikan
bahwa baik tabel User maupun Userbackup memiliki struktur yang identik.
III.
Indeks
Sebuah indeks dapat dibuat pada
tabel untuk menemukan data lebih cepat dan efisien. User tidak bisa melihat
indeks, indeks hanya digunakan untuk mempercepat pencarian. Biasanya indeks
digunakan pada kolom yang sering digunakan.
Membuat indeks boleh terdapat duplikasi :
CREATE INDEX index_name ON Table_name
(column_name)
Membuat indeks, tidak boleh terdapat
duplikasi:
CREATE UNIQUE INDEX index_name ON
Table_name (column_name)
IV.
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 pembahasan praktikum
sebelumnya. Berikut struktur SQL nya:
ALTER TABLE
nama_tabel ADD UNIQUE (nama_kolom);
Untuk
menghapus unique berikut caranya :
ALTER TABLE
nama_tabel DROP CONSTRAINT NAMA_CONSTRAIN
V.
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.
VI.
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;
1. Menampilkan Nama Fakultas dan jumlah mahasiswa yang mempunyai
ketentuan nama fakultas yang dimunculkan dengan jumlah mahasiswanya yang terkecil.
PSQL
2. Menampilkan nama mahasiswa, nama fakultas, alamat dengan syarat nama
fakultas sama dengan Edi dan alamatnya tidak sama dengan Luki.
3. Membuat index di tabel mahasiswa (alamat) dan membuat unique index
pada tabel fakultas (fak_nama) kemudian mengamati perbedaannya.
4. Buat kolom nama di mahasiswa menjadi unik dan inputkan 2 data yang
sama.
5. Pindahkan data dari tabel mahasiswa, fakultas ambil kolom mim,
nama mahasiswa, alamat, nama fakultas ke tabel baru yang dinamai tabel
identitas.
6. Contoh penggunaan check,
7. Inputkan data di tabel mahasiswa Dimana pada kolom nama sebelum inputkan
karakter dahulukan dengan spasi dan diakhiri dengan tanda “+” seperti berikut :
“ andicahyono++++”. Kemudian muculkan seluruh data dan hilangkan spasi di
depan!
8. Munculkan data mahasiswa dengan hilangkan karakter “+” diakhir
data dan karakter “a” di awal kata pada kolom nama!
MySQL
C. Evaluasi Perbandingan DBMS
Jadi ada sedikit perbedaan pada penggunaan Sub
query menggunakan PSQL dan MySQL, perbedaannya yaitu pada :
·
Pada nomor 5, terjadi
perbedaan, pada DBMS MySQL, tidak bisa menerima perintah select into, hal ini
mungkin terjadi karena PSQL terkadang lebih unggul dalam beberapa query yang
tidak bisa dijalankan oleh DBMS MySQL seperti object orientednya
·
Kemudian pada nomor 6,
terjadi perbedaan karena fungsi check pada PSQL yang bisa digunakan, tidak bisa
digunakan karena setelah mencoba memasukkan data yang diluar dari check,
ternyata masih bisa diinsertkan. Hal ini menunjukkan bahwa check tidak bisa
digunakan pada MySQL
·
Pada nomor 8, fungsi rim pada
MySQL juga tidak berfungsi.
Sehingga pada praktikum kali ini PostgreSQL
lebih unggul karena dapat melakukan fungsi-fungsi yang lebih memudahkan usir.
D. Kesimpulan
Setelah melakukan praktikum ini, saya dapat mengambil kesimpulan
bahwa sup query dalam sal merupakan sup query di dalam sup query atau disebut
juga nested query. Pada praktikum ini kita juga telah belajar tentang select
into, check, index , unique index serta penggunaan trim.
2. Saran
Ditingkatkan kembali penguatan konsep dan praktek pada Sub Query
agar bisa membuat database dengan baik.
3. Kritik
Saya minta maaf, karena pada laporan ini kurang dari kesempurnaan,
serta ada sedikit materi yang masih belum saya kuasai
4. Manfaat
Semoga laporan ini dapat bermanfaat bagi pembaca untuk
lebih mengetahui tentang Sub Query serta mengetahui perbedaan pada PostgreSQL
dan MySQL
mana nih laporan praktikum 9 dan 10 nya ? Praktikum 1-8 telah terkoreksi.
BalasHapusbtw, Terima Kasih. Mohon Maaf dari saya selama saya salah memberi arahan dan informasi. :)