A.LANDASAN TEORI
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 :
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;
SUB QUERY
Subquery atau
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);
SQL
Subquery Contoh:
1) Biasanya, subquery harus kembali hanya satu record, tapi
kadang-kadang juga dapat kembali beberapa catatan bila digunakan dengan
operator SEPERTI DI, TIDAK DI dalam
klausul mana. Sintaks query akan seperti,
SELECT first_name, last_name,
subject
FROM student_details
WHERE games NOT IN ('Cricket', 'Football');
Subquery Output akan sama
dengan:
first_name
|
last_name
|
subject
|
————-
|
————-
|
———-
|
Shekar
|
Gowda
|
Badminton
|
Priya
|
Chandra
|
Chess
|
2) Mari kita
mempertimbangkan tabel student_details yang telah kami gunakan sebelumnya. Jika
Anda tahu nama siswa yang belajar mata pelajaran ilmu pengetahuan, Anda bisa
mendapatkan id mereka dengan menggunakan query ini di bawah ini,
SELECT id, first_name
FROM student_details
WHERE first_name IN ('Rahul', 'Stephen');
tetapi, jika Anda
tidak tahu nama mereka, maka untuk mendapatkan id mereka Anda perlu menulis
query dengan cara ini,
SELECT id, first_name
FROM student_details
WHERE first_name IN (SELECT first_name
FROM student_details
WHERE subject= 'Science');
Subquery
Output:
Id
|
first_name
|
——–
|
————-
|
100
|
Rahul
|
102
|
Stephen
|
Dalam pernyataan
sql di atas, pertama inner query diproses terlebih dahulu dan kemudian
permintaan luar diproses.
SQL
Subquery; Pernyataan INSERT
3) Subquery dapat
digunakan dengan pernyataan INSERT untuk menambahkan baris data dari satu atau
lebih tabel ke meja lain. Mari kita mencoba untuk mengelompokkan semua siswa
yang belajar Matematika dalam tabel ‘maths_group’.
INSERT INTO maths_group(id,
name)
SELECT id, first_name || ' ' || last_name
FROM student_details WHERE subject= 'Maths'
SQL
Subquery; Pernyataan SELECT
4) Sebuah subquery
dapat digunakan dalam laporan SELECT sebagai berikut. Mari kita menggunakan
produk dan meja order_items didefinisikan dalam bagian sql_joins.
select p.product_name,
p.supplier_name, (select order_id from order_items where product_id = 101) as
order_id from product p where p.product_id = 101
product_name
|
supplier_name
|
order_id
|
——————
|
——————
|
———-
|
Television
|
Onida
|
5103
|
Korelasi
Subquery
Permintaan A
disebut subquery berkorelasi ketika kedua inner query dan permintaan luar
saling bergantung. Untuk setiap baris diproses oleh inner query, permintaan
luar diproses juga. Inner query tergantung pada permintaan luar sebelum dapat
diproses.
SELECT p.product_name FROM
product p
WHERE p.product_id = (SELECT o.product_id FROM order_items o
WHERE o.product_id = p.product_id);
Catatan
Subquery
Bersarang Subquery
1) Anda dapat
sarang karena banyak pertanyaan yang Anda inginkan, tetapi dianjurkan untuk
tidak lebih dari 16 sarang subqueries di oracle
Non-corelated Subquery
2) Jika subquery
tidak tergantung pada permintaan luar itu disebut subquery non-berkorelasi
Kesalahan Subquery
3) Meminimalkan
kesalahan subquery: Gunakan drag and drop, copy dan paste untuk menghindari
berjalan subqueries dengan ejaan dan kesalahan ketik basis data. Perhatikan
bidang beberapa Anda menggunakan koma SELECT, tambahan atau untuk beberapa
mendapatkan pesan error SQL “sintaks salah”.
SQL Subquery Komentar
Menambahkan
komentar Subquery SQL adalah kebiasaan yang baik (/ * perintah komentar anda *
/) yang dapat menghemat waktu Anda, menjelaskan kerja sebelumnya .
INDEKS
Indeks disini
berguna dalam suatu pencarian nilai atau data dalam database. 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.
Dengan adanya indeks buku maka kita cukup dengan membuka indeks, sehingga akan
cepat dalam pencarian kata tersebut. 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);
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;
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
Di Oracle ada dua
jenis indeks SQL yaitu, implisit dan eksplisit.
Indeks
Implisit:
Mereka dibuat
ketika suatu kolom explicity didefinisikan dengan PRIMARY KEY, UNIQUE Kendala
KUNCI.
Indeks
Explicit:
Mereka diciptakan
menggunakan “membuat indeks ..” sintaks.
SQL
Catatan:
1) Meskipun indeks sql diciptakan untuk mengakses
baris dalam tabel cepat, mereka memperlambat operasi DML seperti INSERT,
UPDATE, DELETE di atas meja, karena indeks dan tabel kedua diperbarui sepanjang
ketika operasi DML dilakukan. Jadi menggunakan indeks hanya pada kolom yang
digunakan untuk mencari meja sering.
2) Apakah tidak diperlukan untuk membuat indeks di atas meja yang memiliki sedikit data.
3) Dalam database oracle Anda dapat membuat hingga enam belas (16) kolom dalam INDEX.
2) Apakah tidak diperlukan untuk membuat indeks di atas meja yang memiliki sedikit data.
3) Dalam database oracle Anda dapat membuat hingga enam belas (16) kolom dalam INDEX.
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
TRIM
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.Hasil
Praktikum
Dibawah ini
adalah hasil praktikum dari materi sub query dan indexs. Oke tidak usah
lama-lama berikut ulasannya.Tugas praktikum kali ini masih menggunakan tabel
pada praktikum sebelumnya :
1. Menampilkan nama fakultas dan jumlah mahasiswa yang
mampunyai ketentuan nama fakultas yang dimunculkan dengan jumlah mahasiswanya
terkecil.
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). Kemudian
buat lagi index yang bersifat unik pada
tabel fakultas(fak_nama)
Jadi jika kita membuat unique index maka kita tidak akan
bisa menginput data yang sama isinya.
4. Membuat kolom
nama di mahasiswa menjadi unik dan menginputkan 2 data yang sama.
Jika kita membuat nama mahasiswa menjadi unik maka kita
tidak akan bisa menginput nama mahasiswa yang sama
5. Memindahkan data dari tabel mahasiswa, fakultas dengan
mengambil kolom nim, nama mahasiswa, alamat, nama fakultas ke tabel baru yang
dinamai “tabel identitas‟.
6. Menginputkan data di tabel mahasiswa dimana pada kolom
nama sebelum inputkan karakter dahulukan dengan spasi dan di akhiri dengan
tanda kemudian munculkan seluruh data
dengan menghilangkan spasi didepannya.
7. Munculkan data mahasiswa dengan hilangkan karakter “+”
di akhir data dan karakter “a” di awal kata pada kolom nama!
C.Perbedaan
Oke, dari praktikum yang sudah saya lakukan terdapat
beberapa perbedaan yang dimiliki. Dan perbedaan tersebut adalah di bagian
ketika saya mencoba untuk menghapus
index. Ketika
menggunakan postgreSQL, menggunakan
Drop index nama_index;
Sedangkan
pada MySQL, jika kita menggunakan syntax tersebut maka aka terjadi error. Jadi pada MySQL kita menggunakan syntax :
Alter table nama_table_dari_Index drop
index nama_index;
Perbedaan selanjutnya pada saat
trim, ketika di MySQL trim diberi spasi dengan kolom yang akan di beri intruksi
maka akan terjadi eror, mungkin ini disebabkan pemebrian spasi tersebut membuat
trim terdeteksi menjadi nama fungsi.
Jadi tak perlu di beri spasi.
D.Kesimpulan
Kesimpulan
dari praktikum ini adalah bahwa dari hasil evaluasi PostgreSQL dan MySQL hanya
terdapat sedikit perbedaan, overall semua nya hampir sama, dan perbedaan
tersebut terletak pada saat menghapus indeks, proses trim. Owh iya hampir lupa,
sampai saat penulisan laporan ini saya juga belum berhasil dengan proses check
pada MySQL, kalau pembaca ada yang tahu, mohon saya diberi pencerahan. Mungkin
saya beri sedikit saran pada pembaca sekalian bhawa selesaikan segera semua
tugas sebelum akhir pekan jika pada saat weekend kalian ada acara atau janji, karena jika tidak hal
itu akan membebani sekali, ya seperti saat ini mungkin. Hehe, demikian lah
hasil laporan yang telah saya buat jika ada kesalahan dan kekurangan mohon
maaf, dan semoga ilmu yang sedikit ini bermanfaat.
No comments:
Post a Comment