Copyright © My Blog
Design by Dzignine
Jumat, 14 November 2014

Tugas Praktikum DBD Modul 7

LAPORAN PRAKTIKUM
DESAIN BASIS DATA
SUBQUERY DAN INDEKS

Dosen Pengampu: Aziz Musthofa, S.Kom
 logoUIN
Oleh :
Badruz Zamanil Charis
13650120
JURUSAN TEKNIK INFORMATIKA
FAKULTAS SAINS DAN TEKNOLOGI
UIN MAULANA MALIK IBRAHIM MALANG
2014

Sub Query
Subquery adalah perintah SELECT yang berada di dalam perintah SELECT yang lain.MySQL yang mendukung konsep subquery mulai versi 4.1.x Contoh subquery adalah :
- Memungkinkan membuat query yang terstruktur, sehingga memudahkan pemisahan masing-masing bagian dari perintah/query yang dibuat.
- Sebagai alternatif menggantikan query yang memerlukan JOIN dan UNION yang kompleks.
- Query menjadi lebih mudah dibaca dan dikoreksi, memenuhi kaidah SQL “Structured Query Language.”
Beberapa batasan dalam membuat subquery :
Sintaks subquery secara umum adalah :
SELECT * FROM t1 WHERE column1 = (SELECT column1 FROM t2)
Pada contoh tersebut, SELECT * FROM t1 … adalah query utama/outer query dan(SELECT column1 FROM t2) adalah subquery. Subquery bersifat nested di dalam query utama. Subquery dapat dibuat secara bertingkat sampai 32 tingkat. Subquery harus dituliskan didalam tanda kurung.
Beberapa keuntungan menggunakan subquery adalah :
Sebuah subquery memberikan beberapa kemungkinan hasil, diantaranya
- Sebuah nilai tunggal (scalar) -> scalar subquery
- Sebuah baris -> row subquery
- Sebuah kolom ataupun -> coloumns subquery
- sebuah tabel. -> table subquery
Masing-masing tipe subquery (berdasarkan nilai yang dihasilkan) tersebut, dapat digunakan pada konteks tertentu yang sesuai.
Sub query dapat berupa salah satu dari : SELECTINSERTUPDATEDELETESET, orDO.
Subquery dapat mengandung opsi-opsi yang mendukung SELECT misalnya DISTINCT,GROUP BYORDER BYLIMIT, joins, index hints, UNION, komentar, fungsi, dll.
SELECT kolom1 FROM Tabel WHERE kolom2 [Operator Pembandingan] (SELECT kolom1 FROM Tabel WHERE [Condition])
[Operator Pembandingan] dapat berupa =, >, <, >=, <= Ataupun LIKE, ANY, SOME, ALL, IN, NOT IN dll
Contoh :
1.Sub Query Select

SELECT id, nama_ruang, kapasitas_ruang
FROM ruangWHERE kapasitas_ruang = (SELECT MIN(kapasitas_ruang) FROM ruang);
FROM kelas
JOIN ruang ON kelas.id_ruang = ruang.id
WHERE ruang.nama_ruang IN (SELECT ruang.nama_ruang FROM ruang WHERE ruang.nama_ruang like ‘C%’)
GROUP BY ruang.nama_ruang;
guru.nip AS nip,
concat(guru.gelar_depan,’. ‘,guru.nama,’, ‘,guru.gelar_belakang) AS nama_guru,
mata_pelajaran.nama_mapel AS mapel,
kelas.nama_kelas AS kelas,
ruang.nama_ruang AS ruang,
ruang.kapasitas_ruang AS kapasitas_ruang
FROM guru
LEFT JOIN kelas ON guru.nip = kelas.nip_guru
LEFT JOIN mata_pelajaran ON kelas.id_mapel = mata_pelajaran.id
LEFT JOIN ruang ON kelas.id_ruang = ruang.id
WHERE
ruang.kapasitas_ruang IN (SELECT MAX(ruang.kapasitas_ruang)/2 FROM ruang);
(nama_kelas,hari,id_mapel,nip_guru,jam_mulai,jam_selesai,id_ruang)
VALUES
(
‘A’,
‘Kamis’,
(SELECT id FROM mata_pelajaran WHERE nama_mapel = ‘Biologi’),
(SELECT nip FROM guru WHERE nama LIKE ‘%Akhsan’),
’08:00:00′,
’10:00:00′,
(SELECT id FROM ruang WHERE nama_ruang = ‘C4′)
);
  • SELECT namakolom FROM namatabel WHERE kondisi opeatorperbandingan IN (subquery);
  • SELECT namakolom FROM namatabel WHERE kondisi opeatorperbandingan ALL (subquery);
  • SELECT namakolom FROM namatabel WHERE kondisi opeatorperbandingan ANY (subquery);
  • SELECT namakolom FROM namatabel WHERE EXIST / NOT EXIST (subquery);
2. Ketika sering menggunakan ORDER BY pada bagian query.
3. Ketika memiliki banyak perbedaan nilai.
4. Ketika sering menggunakan JOIN pada bagian query.
2. UNIQUE
3. PRIMARY KEY.
4. FULLTEXT index
  • CREATE INDEX namaindex ON namatabel (nama kolom);
  • CREATE UNIQUE INDEX namaindex ON namatabel (nama kolom);
  • DROP INDEX namaindex;
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 namatabel (namakolom tipedata unique);
  • ALTER TABLE nama_tabel ADD UNIQUE (nama_kolom);
  • ALTER TABLE nama_table DROP CONSTRAINT NAMA_CONSTRAIN
- 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 kelas.nama_kelas AS kelas, ruang.nama_ruang, ruang.kapasitas_ruang
———————————————————————————-
SELECT
2.Sub Query Indeks
INSERT INTO kelas
3.Sub query dengan IN
Jika operator ‘=’ hanya digunakan untuk hasil yang tepat satu, maka jika ingin menampilkan yang memiliki hasil lebih dari satu maka menggunakan perintah IN.
4.Sub query dengan ALL
Command ALL diikuti dengan operator perbandingan digunakan memiliki arti menampilkan nilai jika perbandingan bernilai benar untuk semua data. Operator perbandingan tersebut berupa ( <, >, =, != ). Berikut adalah query dasar dari sub query all
5.Sub query dengan ANY
Command ANY diikuti dengan operator perbandingan memiliki arti menampilkan nilai yang sesuai dengan apapun yang dihasilkan oleh sub query. Contoh query dasar dari sub query ANY
6.Sub query dengan EXISTS
Perintah EXISTS disini berguna untuk mengartur penampilan hasil query, Query Utama akan dijalankan jika Sub Query bernilai TRUE (ada hasilnya) jika hasilnya kosong maka Query utama tidak akan dijalankan. Lawan dari statement EXISTS adalah NOT EXISTS
INDEKS
INDEKS adalah suatu bagian yang special dari system database yang digunakan untuk peningkatan kemampuan menyeluruh dari proses yang ada. MySQL mengijinkan antara 16 sampai 64 indexes untuk setiap table, akan tetapi ini tergantung storage engine yang digunakan.
Setiap indeks dapat diletakan di field (kolom) mana saja, mulai dari field 1 sampai field 15. Walaupun penggunaan beberapa field (multicolumn) index tidak terlihat nyata, akan tetapi penggunaan ini akan memberikan kemudahan untuk kemampuan pencarian pada sebuah atau banyak field (column).
Pada lain hal, ada sebuah hal yang menjadikan kelemahan dari penggunaan indeks. Dimana dengan index kita dapat meningkatkan kecepatan dalam membaca data dari database, tetapi akan membuat lambat proses perubahan data dalam database, karena perubahan akan berpengaruh pada data yang di indeks. Anda akan mendapat hasil yang normal ketika hanya menampilkan data dari database jika dibandingkan anda melakukan proses tambah (insert) data atau ubah (update) data yang sudah ada.
Pengguna indeks, baik digunakan pada field (column) :
1. Ketika sering menggunakan WHERE pada bagian query.
MySQL memiliki beberapa tipe dari Indeks yang berbeda, yaitu :
1. INDEX.
Contoh Penggunaan Macam Indeks
1. Indentifikasi suatu field menggunakan PRIMARY KEY
2. Indentifikasi suatu field harus UNIQUE
UNIQUE tidak dapat digunakan dalam jumlah banyak. Sebagian besar digunakan seperti nilai tanggal, angka, nama, kota, kode pos yang berulang, terutama sekali pada table dengan ribuan baris (record). Tetapi semua tergantung pada aplikasi yang anda buat, apakah anda hanya menggunakan sekali-kali pada field yang benar-benar harus unik, seperti alamat email, username dari sistem aplikasi registrasi (sistem login). Anda tidak dapat mendefinisikan sekaligus PRIMARY KEY dan UNIQUE dalam sebuah field, karena PRIMARY KEY sudah didesain harus mengikut aturan unik.
3. Identifikasi suatu field akan mendapatkan keuntungan dari sebuah INDEX
Pada rekomendasi ada adalah ketika index akan membantu dan berfikir tentang apa informasi akan disajikan. Jika anda memerlukan untuk melihat daftar dari invoices berdasarkan tanggal atau total jumlah order, maka INDEX akan membuat logical indexes. Jika sebuah table registrasi/login akan menggunakan kombinasi pada username dan password untuk verifikasi suatu proses login, maka akan dibuat index. Anda juga membuat index pada field foreign key anda.
Disini akan akan diberikan SQL bebrapa tipe dari indeks berupa penggunaan INDEX dan UNIQUE INDEKS Berikut struktur SQL untuk membuat indeks pada suatu kolom
Sedangkan Unique indexmirip 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 :
Untuk menghapus index berikut strukturnya :

 KOLOM UNIK
Ketika tabel sudah ada kita bisa menggunakan ALTER TABLE. Berikut Struktur SQL
Untuk menghapus unique berikut caranya :

PENGGUNAAN TRIM
Menghilangkan beberapa karakter di MySQL terkadang sangat kita perlukan. Terutama dalam mengupdate data dalam bentuk karakter/teks yang bertipe varchar, text dan sebangsanya. Contoh simplenya misalnya menghilangkan tanda tertentu seperti menghilangkan tanda koma di belakang kata “Rabu” pada ” Senin,Selasa,Rabu,”. Jika ada masalah seperti ini, kita dapat membersihkannya dengan menggunakan fungsi TRIM. Fungsi TRIM dibagi menjadi 3, yaitu TRIM, LTRIM dan RTRIM.  Ketiga fungsi ini memiliki bentuk penggunaan sebagai berikut :
- RTRIM : digunakan untuk membersihkan spasi kosong yang ada di bagian kanan (Right) String.


PERCOBAAN MENGGUNAKAN MYSQL

1. Tampilkan nama fakultas dan jumlah mahasiswa yang mampunyai ketentuan nama fakultas yang dimunculkan dengan 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!

4. Buat kolom nama di mahasiswa menjadi unik dan inputkan 2 data yang sama. Kemudian amati perbedaannya !

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!


Perbandingan antaa PostgreSQL dengan MySQL


    1. Perbedaan PostgreSQL dengan MYsql pada Penggunakan trim Pada 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.
    2. Memindah data pada tabel ke sebuah tabel yang lain.
      1. PostgreSQL : SELECT nama_kolom INTO tabel_baru from tabel_asal;
        mySQL : CREATE tabel_baru SELECT nama_kolom from nama_tabel;

      2. Perbedaan Pada nomor lima dimana postgre hanya dengan perintah select dapat menyalin informasi yang ada pada tabel satu ke tabel yang lain sedangkan pada mysql harus membuat temporary table terlebih dahulu 

        Kesimpulan

        •  Select into digunakan untuk menduplikat tabel
        • SQL subquery adalah query dalam query yang digunakan untuk menghapus baris dari satu tabel berdasarkan baris tabel lain, menyelesaikan pesoaln dimana terdapat suatu nilai yang tidak diketahui
        • indeks digunakan untuk meng-effisienkan pencarian data
        • 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 yang tidak diperlukan
        • Sub Query merupakan query yang digunakan untuk mempermudah dalam mengolah sebuah database. Yang mana memiliki konsisi tertentu dengan cara memberikan perintah SELECT di dalam SELECT ini yang dinamakan query

        Manfaat dan Tujuan

        Semoga ini bermanfaat bagi pembaca. Dan semoga postingan kali ini dapat membantu pembaca dalam menyelesaikan masalah yang berhubungan dengan subquery dan indeks dan bertujuan untuk memahami antara PostgreSQL dengan MySQL pada materi Sub Query dan Indeks.

        Saran


        Diperlukan pembelajaran lebih lanjut mengenai subquery dan indeks ini, serta diperlukan latihan dalam mencoba latihan soal yang lain agar praktikan lebih mahir dalam menggunakan kedua DBMS tersebut.Dalam pengguaan query  juga harus melihat macam-macam query yang variatif atau yang tidak.

        Daftar Pustaka

        http://irpantips4u.blogspot.com
        http://www.webtechniques.com

        codeoke.blogspot.com/2012/12/sub-query-mysql.html

        http://risnotes.com/2011/12/subqueries/ 

        Buku : Yakub, 2008, “ Sistem Basis Data : Tutorial Konsep “; Graha Ilmu: Yogyakarta
                     Kadir Abdul, 2000, Konsep & Tuntutan Praktis Basis Data, Yogyakarta: Andi


        0 komentar:

        Posting Komentar