Minggu, 09 November 2014

Praktikum DBD Laporan 7

         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.

Kegunaan-kegunaan  Subquery dalam memanipulasi data:

  1.  Meng-copy data dari satu tabel ke tabel lain
  2.  Menerima data dari inline view
  3.  Mengambil data dari tabel lain untuk kemudian di update ke tabel yang dituju
  4.  Menghapus baris dari satu tabel berdasarkan baris dari tabel lain.
ATURAN SUB QUERY

         Klausa ORDER BY tidak boleh digunakan .di subquery. ORDER BY dapat digunakan ,di pernyataan SELECT luar. Klausa subquery SELECT harus beisi satu nama kolom tunggal atau ekspresi kecuali untuk subquery-subquery menggunakan kata kunci EXIST. secara default, nama-nama kolom di subquery mengacu ke nama table diklausa FROM di query lebih luar dengan mengkualifikasi nama kolom Saat subquery adalah salah satu dua operan dilibatkan di pembandingan, subquery harus muncul di sisi kanan pembandingan.

SELECT select_list FROM table WHERE expr operator ( SELECT select_list FROM table );

Operator EXIST dan NOT EXIST

     Kata kunci EXIST dan NOT EXIST dirancang hanya untuk digunakan di subquery. Kata kunci-kata kunci ini menghasilkan nilai TRUE atau FALSE EXIST akan mengirim nilai TRUE jika dan hanya jika terdapat sedikitnya satu baris di table hasil yang dikirim oleh subquery. EXIST mengirim nilai FALSE jika subquery mengirm table kosong NOT EXIST kebalian dan EXIST. Karena EXIST dan NOT EXIST hanya memeriksa keberadaan baris-baris di table hasil subquery.

Operator Any(Some)

Operator Any (some) hampir sama penggunaannya seperti Exists. Tetapi operator relasi yang digunakan biasanya selain = (sama dengan). hal tersebut disebabkan apabila operator relasi = yang digunakan, maka sebetulnya fungsi operator Any (some) sama seperti operator IN, sehingga kondisi seperti itu tidak dianjurkan karena lebih mudah pemahamannya apabila menggunakan operator IN.

Operator All

Operator all digunakan untuk melakukan pembandingan dengan sub query. Kondisi dengan all menghasilkan nilai benar jika pembandingan menghasilkan benar untuk setiap nilai dalam sub query.

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.

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...); 

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);

ALTER TABLE nama_tabel ADD UNIQUE (nama_kolom);

Untuk menghapus unique berikut caranya :

ALTER TABLE nama_table DROP CONSTRAINT NAMA_CONSTRAIN

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;

Praktek

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)  kemudian amati perbedaannya  ketika memasukkan data yang sama!



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

  
5. Pindahkan data dari tabel mahasiswa, fakultas ambil kolom nim, nama mahasiswa, alamat, nama fakultas ke tabel baru yang dinamai "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  :  “   paloh+++”. 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!



PERBEDAAN MYSQL dan POSTGRE SQL PADA SUB QUERY DAN INDEKS

- Ketika drop index menggunakan postgreSQL, perintah yang  digunakan adalah
Drop index nama_index;
 Sedangkan pada MySQL menggunakan perintah :
Alter table nama_table_dari_Index drop index nama_index;

- Ketika memindahkan data dari tabel mahasiswa di PostgreSQL cukup memberikan perintah kolom mana yang ingin ditampilkan kemudian langsung memasukkan kedalam tabel identitas seperti berikut
Select nim_mah, nama_mah, alamat_mah, nama_fak into identitas from mahasiswa, fakultas;
Sedangkan di MySQL harus membuat tabel setelah itu baru memasukkan kolom ke dalam tabel identitas,perintahnya sebagai berikut :
Create table identitas select nim_mah, nama_mah, alamat_mah, nama_fak from mahasiswa, fakultas where mahasiswa.id_fak=fakultas.id_fak;


KESIMPULAN

Select into statement merupakan query  SQL yang digunakan untuk mengopi informasi dari tabel ke tabel yang lain tanpa membuat tabel sebelumnya. Subquery ialah bentuk query yang terdapat dalam query yang lain. Indeks berguna dalam suatu pencarian nilai atau data dalam database. 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. Check tidak berlaku dalam MySQL, namun dalam PostgreSQL ada. Trim digunakan untuk menghapus spasi dan karakter yang berlebih.


sumber 

http://catatankuliahum.blogspot.com/2013/02/sub-query-basis-data.html
http://codeoke.blogspot.com/2012/12/sub-query-mysql.html
http://beginner-sql-tutorial.com/id/sql-index.htm

Tidak ada komentar:

Posting Komentar