Laporan Praktikum Desain Basis Data VII : Sub Query dan Index

Sunday, November 16, 2014






















Teori

Sub Query

SQL Subquery Contoh:

1) Biasanya, subquery harus kembali hanya satu record, tapi kadang-kadang juga dapat kembali beberapa catatan bila digunakan dengan operator. 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_namelast_namesubject
------------------------------------
ShekarGowdaBadminton
PriyaChandraChess
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:
idfirst_name
---------------------
100Rahul
102Stephen
   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_namesupplier_nameorder_id
----------------------------------------------
TelevisionOnida5103
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);

>>Source : http://beginner-sql-tutorial.com/id/sql-subquery.htm

Indeks SQL
   Indeks di sql dibuat pada tabel yang ada untuk mengambil baris cepat.

   Bila ada ribuan catatan dalam sebuah tabel, mengambil informasi akan memakan waktu yang lama. Oleh karena itu indeks dibuat pada kolom yang sering diakses, sehingga informasi dapat diambil dengan cepat. Indeks dapat dibuat pada satu kolom atau sekelompok kolom. Ketika indeks dibuat, terlebih dahulu memilah data dan kemudian akan menetapkan sebuah ROWID untuk setiap baris.


Sintaks untuk membuat Index:
CREATE INDEX index_name 
ON table_name (column_name1,column_name2...); 
Sintaks untuk membuat Index unik SQL:
CREATE UNIQUE INDEX index_name 
ON table_name (column_name1,column_name2...); 
  • index_name adalah nama INDEKS.
  • table_name adalah nama dari tabel yang kolom diindeks milik.
  • column_name1, column_name2 .. adalah daftar kolom yang membentuk INDEKS.
>>Source http://beginner-sql-tutorial.com/id/sql-index.htm

Hasil Praktikum & Tugas

>>Praktikum (PostgreSQL)

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.


Nomer 1,2 dan 3
Lanjutan Nomer 3


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.




>>Tugas (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.


3 A

3 B

3 C


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.

Kesimpulan


   Kesimpulan dari hasil praktikum dan evaluasi, adalah bahwa PostgreSQL dan MySQL tidak berbeda pada syntax SubQuery, hanya berbeda pada konteks penghapusan index, penulisan trim, serta proses backup (select into).

   Fungsi dari select into adalah untuk membuat sebuah tabel baru berdasarkan output dari statement select. Akan tetapi statement select into tidak bisa secara instant mem-backup index seperti primari key, unique, dll.