LANDASA TEORI
Merupakan query SQL yang digunakan untuk menduplikasi informasi dari tabel satu ke tabel yang lain tanpa membuat tabel sebelumnya.
SELECT * INTO newtable FROM table1;
Untuk mengopi semua data dari tabel mahasiswa ke tabel baru yang dinamakan „identitas 1‟:
SELECT * INTO identitas1
FROM mahasiswa;
Untuk 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
Sub query adalah
perintah SELECT yang berada di dalam perintah SQL lain. Sub query
sangat berguna ketika kita ingin menampilkan data dengan kondisi yang
bergantung
pada data di dalam table itu sendiri.
pada data di dalam table itu sendiri.
- 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 ditujuh.
- Menghapus baris dari satu tabel berdasarkan baris dari tabel lain.
ATURAN SUB QUERY
- Klausa ORDER BY tidak boleh digunakan .di sub query. ORDER BY dapat digunakan ,di pernyataan SELECT luar.
- Klausa sub query SELECT harus beisi satu nama kolom tunggal atau ekspresi kecuali untuk sub query-sub query menggunakan kata kunci EXIST.
- Secara default, nama-nama kolom di sub query mengacu ke nama table diklausa FROM di query lebih luar dengan mengkualifikasi nama kolom
- Saat sub query adalah salah satu dua operan dilibatkan di pembandingan, sub query harus muncul di sisi kanan pembandingan.
- Sub query tdak boleh digunakan sebagai operan di ekspresi.
BENTUK UMUM DARI SUB QUERY
Sintaks:
SELECT select_list FROM table WHERE expr operator ( SELECT select_list FROM table );
SELECT select_list FROM table WHERE expr operator ( SELECT select_list FROM table );
Contoh:
Menampilkan data karyawan yang bekerja satu departemen dengan Biri.
SELECT last_name, title FROM employee WHERE dept_id = ( SELECT dept_id FROM employee WHERE UPPER(last_name) = ‘BIRI’ );
Menampilkan data karyawan yang bekerja satu departemen dengan Biri.
SELECT last_name, title FROM employee WHERE dept_id = ( SELECT dept_id FROM employee WHERE UPPER(last_name) = ‘BIRI’ );
INDEKS
Indeks berguna untuk mempersingkat pencarian data dalam database dengan meng-indeks (memberi keyword unik) pada kolom tertentu. Sehingga proses pencarian lebih effisien. Untuk database skala kecil penggunaan indeks, dampaknya belum terasa. Jika menggunakan database skala besar, penggunaan indeks akan sangat membantu sekali dalam proses pencarian data. Indeks sebaiknya jangan digunakan pada tabel atau kolom yang sangat jarang atau tidak pernah diakses.
Cara membuat indeks sebagai berikut :
CREATE INDEX nama_index ON nama_tabel (nama kolom);
Ada pula query UNIQUE INDEKS, 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.
CREATE UNIQUE INDEX nama_index ON nama_tabel (nama kolom)
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
CHECK
Query check berfungsi untuk
membatasi inputan agar sesuai dengan ketentuan admin. 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.
ALTER TABLE nama_tabel
ADD CHECK (nama_kolom IN (‘kondisi’,’kondisi’))
TRIM
Trim digunakan apabila dalam suatu data ada spasi yang tidak
diperlukan. dengan query trim, kita dapat membersihkan spasi yang tidak digunakan
tersebut. ada tiga jenis fungsi trim
- 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.
SELECT TRIM (nama_kolom)
FROM nama_tabel
Untuk penggunaan query trim, kita
dapat menentukan karakter yang akan dihapus, bukan hanya spasi saja.
dengan menambahkan opsi tersebut pada struktur query trim:
- LEADING : Merupakan opsi untuk menghilangkan karakter terpilih yang ada disebelah kiri. Parameter Leading diartikan sebagai sufik dari karakter yang ada.
- TRAILING : Merupakan opsi untuk menghilangkan karakter terpilih yang ada disebelah kanan String. Parameter Trailing diartikan sebagai sufik dari karakter yang ada.
- BOTH : Merupakan opsi yang dapat menangani parameter Leading maupun Trailing.
SELECT TRIM (LEADING
‘karakter, misal : -’ FROM nama_kolom) FROM nama_tabel
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!
Untuk memunculkan nama fakultas yang jumlah
mahasiswanya terkecil, kita dapat menggunakan query berikut :
SELECT
nama_fak, count(*) FROM mahasiswa, fakultas WHERE mahasiswa.id_fak=fakultas.id_fak
GROUP BY nama_fak ORDER BY count(*) ASC LIMIT 1;
2. Tampilkan nama mahasiswa, nama fakultas, alamat dengan syarat nama fakultas sama dengan edi dan alamatnya tidak sama dengan luki!
Untuk menampilkannya gunakan query berikut :
SELECT
nama_mah, nama_fak, alamat_mah FROM
mahasiswa, fakultas WHERE mahasiswa.id_fak
= fakultas.id_fak AND nama_fak IN (SELECT
nama_fak FROM fakultas WHERE
nama_mah = 'dwi' AND alamat_mah IN (SELECT
alamat_mah FROM mahasiswa WHERE
nama_mah != 'dewi'))
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!
Pertama buat dulu tabel indeksnya :
CREATE
INDEX mahasiswa_index ON mahasiswa(alamat_mah)
Insertkan data
yang sama kecuali nim pada tabel mahasiswa :
INSERT INTO mahasiswa VALUES (9, 'edo', 'pasuruan', 1,
087990002, 'L')
Kemudian buat indeks yang bersifat unik :
CREATE UNIQUE INDEX unama_fak_index ON fakultas
(nama_fak)
Selanjutnya insertkan
data yang sama kecuali nim pada tabel mahasiswa :
4. Buat kolom nama di mahasiswa menjadi unik dan inputkan 2 data yang sama. Kemudian amati perbedaannya !
Untuk membuat kolom nama mahasiswa menjadi unik
pertama kita pakai query :
ALTER
TABLE mahasiswa ADD UNIQUE (nama_mah)
Selanjutnya insertkan
data pada tabel tersebut dan pada kolom nama mahasiswa harus sama :
INSERT INTO mahasiswa VALUES (20, 'Linda', 'Lamongan',
2, 087665343, 'P'), (21, 'Dinda', 'jakarta', 3, 098890001, 'P')
5. Pindahkan data dari tabel mahasiswa, fakultas ambil kolom nim, nama mahasiswa, alamat, nama fakultas ke tabel baru yang dinamai „tabel identitas‟.
Sebelumnya kita
buat dahulu tabel identitas kemudian kita bisa menggunakan query insert into
statement :
Kita gunakan check pada kolom gender :
ALTER
TABLE mahasiswa ADD CHECK (gender in ('L', 'P'))
Kemudian masukan satu data untuk mengecek apakah
berhasil dijalankan atau tidak :
INSERT INTO mahasiswa VALUES (22, 'cahyono+++',
'solo', 2, 0876543311, 'O')
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!
Masukkan data dari cahyono :
INSERT
INTO mahasiswa VALUES (23, ' cahyono+++', 'batu', 3, 0876543311, 'L')
Kemudian hilangkan spasi mengunakan query LTRIM :
SELECT nim_mah, LTRIM(nama_mah), alamat_mah, id_fak,
no_telp, gender FROM mahasiswa
8. Munculkan data mahasiswa dengan hilangkan karakter “+” di akhir data dan karakter “a” di awal kata pada kolom nama
Jika kita ingin menghilangkan tanda “+” dan karakter “a”
kita gunakan :
SELECT
trim(nama_mah), trim(trailing'+' FROM nama_mah) FROM mahasiswa
EVALUASI
PERBANDINGAN
Dalam mySQL untuk meng-copy semua
data pada suatu tabel dan memindahkannya pada tabel lain kita perlu membuat
tabel baru terlebih dahulu kemudian setelah itu kita gunakan perintah insert
into statement dari tabel awal ke tabel yang baru.
Penggunaan query trim, trim yang menggunakan spasi pada kolom yang
akan di jalankan tidak berpengaruh pada postgreSQL, tetapi
pada MySQL jika kita menyelipkan spasi antara perintah trim dengan kolom yang
akan di eksekusi dengan perintah trim, maka terjadi keslahan. Karena
spasi trim akan diartikan sebagai fungsi. penggunaan trim tidak boleh
dipisahkan dengan nama kolom yang akan dieksekusi.
KESIMPULAN
Subquery adalah Query di dalam
query.
Kegunaan-kegunaan Subquery
dalam memanipulasi data:
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
KRITIK DAN
SARAN
Sub query merupakan query yang
digunakan untuk menspesifikasikan perintah yang memiliki kondisi tertentu
dengan cara memberikan perintah SELECT di dalam SELECT biasa juga disebut dengan NESTED SELECT. Query tersebut akan sangat membantu apabila kita memiliki banyak
sekali data, sehingga kita bisa menemukan data yang sedang kita cari dengan
sangat cepat. Tetapi kita juga harus melihat suatu DBMS tersebut macam-macam
query yang variatif atau tidak , karena setiap DBMS memiliki beberapa perbedaan
dengan DBMS yang lain.
MANFAAT BAGI PEMBACA
MANFAAT BAGI PEMBACA
Pembaca dapat memahami prinsip penggunaan nested select agar
mempersingkan penulisan query serta agar
pembaca dapat memahami cara penggunaan cluster, kolom unik dan trim.
DAFTAR PUSTAKA
Modul Praktikum Desain Basis Data 2014.pdf
http://beginner-sql-tutorial.com/id/sql-subquery.htm
Modul Praktikum Desain Basis Data 2014.pdf
http://beginner-sql-tutorial.com/id/sql-subquery.htm
http://beginner-sql-tutorial.com/id/sql-index.htm
http://tutorial-bor.blogspot.com/2011/07/pengertian-index-bagian-1.html
http://risnotes.com/2011/12/subqueries/
http://beginner-sql-tutorial.com/id/sql.htm
http://codeoke.blogspot.com/2012/12/sub-query-mysql.html
http://catatankuliahum.blogspot.com/2013/02/sub-query-basis-data.html
Tidak ada komentar:
Posting Komentar