Minggu, 12 Oktober 2014

Laapooraan 4



BAB I
LANDASAN TEORI


Dasar teori

Setiap data yang terdapat dalam SQL dapat disetting sesuai dengan kebutuhan, sebuah bahasa SQL tersusun dari bermacam-macam key words (kata kunci). Di antaranya Arithmatic dan Procedural yang mana dalam penggunaannya selalu diikuti dengan expresi. Berikut adalah beberapa operator dasar SQL.

a. AS
Label biasanya digunakan sebagai nama lain dari sebuah kolom yang dipilih, selain itu kita juga dapat mengontrol teks sebuah atribut yang digunakan untuk memanggil suatu kolom dengan menggunakan AS. AS biasa digunakan untuk menampilkan label kolom dengan nama lain sehingga yang akan muncul dalam hasil query bukan nama asli kolom, tetapi nama yang mungkin lebih sesuai dan mudah dimengerti. AS digunakan setelah nama kolom yang akan diganti yang kemudian diikuti dengan nama penggantinya.
Memberikan nama lain pada kolom : SELECT namakolomlama AS namakolombaru FROM namatabel;
Berikut ini perintah untuk memberikan nama lain pada kolom jenis menjadi jenis_film pada tabel jenisfilm: SELECT JENIS AS TYPE FROM JENISFILM;

b. AND dan OR
AND digunakan untuk menampilkan data dengan dua atau kondisi yang harus dipenuhi, apabila salah satu tidak terpenuhi maka pencarian tidak akan ada hasilnya. Contohnya adalah apabila akan mencari data yang nama depan ‘rofiq’ dan pekerjaanya ‘programmer’. Kedua kondisi tersebut harus dipenuhi, sehingga apabila dalam tabel terdapat nama rofiq tetapi pekerjaanya konsultan, maka hasil pencarian akan kosong. Sedangkan OR digunakan untuk menampilkan data dengan dua atau lebih kondisi, tetapi pencarian akan ada hasilnya meskipun salah satu kondisi saja yang terpenuhi. Contohnya adalah apabila akan mencari data yang nama depan ‘rofiq’ atau orang lain dengan pekerjaan ‘programmer’. Kedua kondisi tersebut harus dipenuhi minimal salah satu, sehingga apabila dalam tabel terdapat tidak nama rofiq tetapi terdapat pekerjaan konsultan, maka hasil pencarian tetap diperoleh.
Memberikan perintah pada tabel : select * from namatabel  where namakolom = ‘pencarian 1’ and namakolom = ‘pencarian 2’;
         Atau
select * from namatabel where namakolom = ‘pencarian 1’ or namakolom = ‘pencarian 2’;

c. BETWEEN
Between digunakan untuk menentukan lebar nilai yang akan di seleksi, penentuan lebar ini dilakukan dengan menentukan nilai terendah dan nilai tertinggi.
Memberikan perintah pada tabel : select * from nama_tabel where nama_kolom  between  ‘nilai_awal’  and ‘nilai_akhir’; 

d. Nested Queries / Subquery (IN, NOT IN, EXISTS, NOT EXISTS)
Subquery berarti query di dalam query. Dengan menggunakan subquery, hasil dari query akan menjadi bagian dari query di atasnya. Subquery terletak di dalam klausa WHERE atau HAVING. Pada klausa WHERE, subquery digunakan untuk memilih baris - baris tertentu yang kemudian digunakan oleh query. Sedangkan pada klausa HAVING, subquery digunakan untuk memilih kelompok baris yang kemudian digunakan oleh query.
Contoh 1 : perintah untuk menampilkan data pada tabel jenisfilm yang mana data pada kolom jenisnya tercantum pada tabel film menggunakan IN :
SELECT * FROM JENISFILM WHERE JENIS IN (SELECT JENIS FROM FILM);
atau menggunakan EXISTS
SELECT * FROM JENISFILM WHERE EXISTS (SELECT * FROM FILM WHERE HARGA > 2000);

Pada contoh di atas :

SELECT JENIS FROM FILM disebut subquery, sedangkan : SELECT * FROM JENISFILM berkedudukan sebagai query. Perhatikan, terdapat data jenis dan harga pada tabel jenisfilm yang tidak ditampilkan. Hal ini disebabkan data pada kolom jenis tidak terdapat pada kolom jenis di tabel film.

Contoh 2 : perintah untuk menampilkan data pada tabel jenisfilm yang mana data pada

kolom jenisnya tidak tercantum pada tabel film menggunakan NOT IN:

SELECT * FROM JENISFILM WHERE JENIS NOT IN (SELECT JENIS FROM FILM);

atau menggunakan NOT EXISTS
SELECT * FROM JENISFILM WHERE NOT EXISTS (SELECT * FROM FILM WHERE HARGA > 2000);

    e. LIKE
LIKE digunakan untuk melakukan seleksi atau pemilihan tetapi tidak seperti halnya sama dengan (=) yang hanya akan menampilkan data yang benar-benar sesuai (match) dengan parameternya, LIKE akan menampilkan data yang mengandung string parameter yang dimasukan, meskipun hanya satu karakter saja yang sama.
Berikut struktur SQL untuk pencarian data menggunakan LIKE :
select * from nama_tabel where nama_kolom like ‘operator’;


   f. REGEXP
Regular Expression atau Regex, merupakan sebuah teknik atau cara untuk mencari persamaan - persamaan string atau data dan memanipulasinya. Biasanya lebih sering digunakan untuk string. Didalam PostgreSQL disimbolkan dengan "~".
Berikut struktur SQL untuk pencarian data menggunakan REGEXP :
select * from nama_tabel where nama_kolom  ~  ‘operator_regexp dan patern’;
 
   g. Sintak DISTINCT
Distinct adalah kata kunci untuk menghilangkan duplikasi. Sebagai contoh, buat sebuah tabel pelanggan yang berisi nama dan kota asal dengan beberapa record isi dan beberapa kota asal yang sama. Kemudian ketikkan perintah berikut :
SELECT DISTINCT KOTA FROM PELANGGAN;
Dengan perintah di atas maka nama kota yang sama hanya akan ditampilkan satu saja.

   h. LIMIT
  LIMIT dan OFFSET digunakan untuk membatasi jumlah output dari query berdasarkan jumlah row bukan karena kondisi seperti WHERE. Bisa dikatakan LIMIT adalah untuk menentukan jumlah baris yang akan ditampilkan yang dihitung dari baris pertama, sedangkan OFFSET digunakan untuk menghilangkan  baris  sesuai dengan jumlah yang diberikan pada OFFSET. Berikut struktur perintah dasar SQL :
select * from nama_tabel limit 2;
Atau
select * from nama_tabel offset 2; 


   i. UNION, INTERSECT DAN EXCEPT
  UNION merupakan operator yang digunakan untuk menggabungkan hasil query, dengan ketentuan jumlah, nama dan tipe kolom dari masing - masing tabel yang akan ditampilkan datanya harus sama. Berikut ini perintah untuk memperoleh data pada tabel film dimana jenisnya action dan horor:
SELECT JENIS,JUDUL FROM FILM WHERE JENIS = 'ACTION' UNION SELECT JENIS, JUDUL FROM FILM WHERE JENIS = 'HOROR';
Perintah di atas identik dengan:
SELECT JENIS,JUDUL FROM FILM WHERE JENIS ='ACTION' OR JENIS = 'HOROR'
Namun tidak semua penggabungan dapat dilakukan dengan OR, yaitu jika bekerja pada dua tabel atau lebih.
      INTERSECT merupakan operator yang digunakan untuk memperoleh data dari dua buah
query dimana data yang ditampilkan adalah yang memenuhi kedua query tersebut dengan
ketentuan jumlah, nama dan tipe kolom dari masing - masing tabel yang akan ditampilkan
datanya harus sama.

SELECT * FROM namatabel1 INTERSECT SELECT * FROM namatabel2;
Pada MySQL tidak terdapat operator INTERSECT namun sebagai gantinya dapat menggunakan operator IN seperti contoh 1 pada bagian Nested Queries.
      EXCEPT / Set Difference merupakan operator yang digunakan untuk memperoleh data dari dua buah query dimana data yang ditampilkan adalah data yang ada pada hasil query 1 dan tidak terdapat pada data dari hasil query 2 dengan ketentuan jumlah, nama dan tipe kolom dari masing - masing tabel yang akan ditampilkan datanya harus sama.
SELECT * FROM namatabel1 EXCEPT SELECT * FROM namatabel2;

Pada MySQL tidak terdapat operator EXCEPT namun sebagai gantinya dapat menggunakan operator NOT IN seperti contoh 2 pada bagian Nested Queries.


 BAB II
HASIL PRAKTIKUM

Sebelum melakukan praktikum, sebaiknya melakukan persiapan terlebih dahulu. Persiapannya adalah: gunakan tabel mahasiswa dan fakultas pada pertemuan 3. tambahkan kolom gender di tabel mahasiswa kemudian update data mahasiswa. insert data mahasiswa hingga 7 baris.
Langkah pertama yaitu masuk / login ke database terlebih dahulu.
Untuk database di postgre SQL Shell hasilnya adalah seperti ini
  Sedangkan untuk mySQL hasilnya seperti ini
Nah, untuk melakukan persiapannya, masukkan data mahasiswa hingga 7 baris, lalu tambahkan kolom gender pada tabel mahasiswa, dan isi kolom gender (L\P) sesuai yang diinginkan.
Untuk hasil SQL Shell hasilnya seperti ini.
Sedangkan untuk mySQL hasilnya bisa dilihat gambar di bawah ini
Setelah proses / persiapan telah dilakukan, barulah kita mengerjakan tugas nomor 1 yaitu, Berdasarkan tabel sebelumnya yaitu bab 3, tampilkan data mahasiswa dengan  nama
dari kolomnya  berubah menjadi nomor_identitas, nama, alamat,nama_fakultas  tanpa
harus merubah nama kolom secara permanen.
Untuk mengerjakannya, masukkan querynya = select nim_mah as nomor_identitas,nama_mah as nama,alamat_mah as alamat,nama_fak as nama_fakultas from mahasiswa,fakultas where mahasiswa.id_fak=fakultas.id_fak;
Maka hasilnya untuk postgres SQL adalah sebagai berikut:
Dan untuk mySQL sebagai berikut:
Nah, sudah jadi kan? Terus sekarang kita lanjut ke nomor 2. Soalnya yaitu, Tampilkan  nama mahasiswa  fakultas saintek  yang berjenis kelamin laki-laki. Kemudian nama mahasiswa fakultas saintek atau berjenis kelamin laki-laki.
Oke, langsung aja masukkan querynya :
select nim_mah,nama_mah,alamat_mah,nama_fak,no_telp,gender from mahasiswa,fakultas where (nama_fak='saintek' or gender='L') and mahasiswa_id_fak=fakultas.id_fak;
Dan hasilnya adalah untuk postgreSQL :
Dan ini untuk mySQL :
Oke, selanjutnya soal nomor 3 yaitu : Suatu tabel mahasiswa terdapat 7 baris data mahasiswa. Tampilkan data mahasiswa dari nomor 3 sampai dengan 5, kemudian tampilkan juga data mahasiswa yang bukan dari nomor 3 sampai dengan 5  menggunakan between  dan tanpa menggunakan between.
Querynya adalah sebagai berikut : select*from mahasiswa where nim_mah between 16 and 18;
Hasilnya untuk postgre
 Hasil mySQL
Dan untuk data mahasiswa yang bukan dari nomor 3 sampai dengan 5 querynya tinggal tambahkan aja not di depan between. Jangan lupa kasih spasi : select*from mahasiswa where nim_mah not between 16 and 18;
Hasilnya postgre
Hasilnya mySQL
Nah, untuk perintah terakhir di soal yang tidak memakai between, untuk perintah memunculkan data yang bukan nomor 3 sampai dengan 5 querynya adalah sebagai berikut : select*from mahsiswa where nim_mah <16 or nim_mah >18;
Untuk postgre, didapat hasilnya seperti ini
Dan untuk mySQL hasilnya seperti ini
Nah, yang sekarang (masih soal 3), query dari yang gak pake between untuk memunculkan data antara nomor 3 dan 5 memakai : select*from mahasiswa where nim_mah >15 and nim_mah <19;
Hasilnya untuk postgre adalah :
Terus yang mySQL bisa dilihat seperti ini hasilnya
Nah, yang sekarang nih langsung capcus ke soal nomor 4. Adapun soalnya adalah sebagai berikut : Tampilkan mahasiswa dengan nomor 2,3,5 menggunakan operator IN. Oke, langsung pake query : select nim_mah,nama_mah,nama_fak from mahasiswa,fakultas where (mahasiswa.id_fak=fakultas.id_fak) and nim_mah in (15,16,17);
Oke, didapat hasilnya seperti ini untuk postgres :
Dan untuk yang mySQL hasilnya :
Oke next soal nomor 5 adalah :Tampilkan semua data mahasiswa yang namanya mempunyai awalan huruf “a”. Memakai query seperti ini : select*from mahasiswa where nama_mah like 'a%';
Hasil untuk postgres :
Hasil untuk mySQL :
Sekarang soal ke 6 adalah : Tampilkan semua data mahasiswa yang namanya mempunyai akhiran “a” dan huruf ke-3 dari nama tersebut terdapat huruf “n”. Querynya adalah sebagai berikut : select*from mahasiswa where nama_mah ~'a.n';
Hasilnya didapat untuk postgres :
Dan untuk mySQL hasilnya didapat :
Karena query '~' tidak bisa digunakan dalam mySQL, jadi saya ganti regexp
Oke, and then soal nomor 7, soalnya adalah Tampilkan nomor fakultas di tabel mahasiswa dengan nomor harus tidak ada yang sama dari baris pertama sampai akhir. Kita pakai query seperti ini : select distinct id_fak from mahasiswa;
Dan taraa.. hasilnya seperti ini untuk postgres :) :
Dan untuk mySQL adalah seperti ini :
Oke, kita lanjutkan soal nomor 8 yaitu Tampilkan data mahasiswa 3 baris saja. Kita pakai query seperti ini : select*from mahasiswa limit 3;
Hasilnya adalah (postgres) :
Dan untuk mySQL hasilnya seperti ini :
Soal selanjutnya yaitu Tampilkan data mahasiswa dengan ciri-ciri memiliki nama awalan a kemudian kata selanjutnya boleh r atau boleh t atau boleh d. misalkan yang memenuhi kriteria ciri tersebut seperti adi, atik, arif, adam dll. (Berhubung yang diminta tidak ada, maka saya ganti huruf ke-4nya adalah i.)
Oke deh.. Langsung tancap gas. Berikut querynya : select*from mahasiswa where nama_mah ~'...i';
Dan ini dia hasilnya  .. (postgres)
Dan untuk mySQL hasilnya adalah :
Karena ada tanda ~ lagi maka saya ganti regexp juga
And finally, soal terakhir yaitu :  Buatlah tabel dengan nama organ_dalam dan organ_luar sebagai berikut :
a.  Tabel organ_dalam
Nomor  Nama
1            Jantung
2            Paru-paru
3            Tenggorokan
b.  Tabel organ_luar
Nomor  Nama
1            Hidung
2            Mata
3            Tenggorokan
  Tampilkan data  dari kedua tabel tersebut menggunakan UNION, EXCEPT dan
INTERSECT
Querynya untuk membuat tabelnya adalah sebagai berikut : create table organ_dalam (nomor varchar (2),nama varchar (20));
Query untuk memasukkan datanya adalah : insert into organ_dalam values (1,'jantung'),(2,'paru-paru'),(3,'tenggorokan');
Hasilnya bisa dilihat seperti ini : (postgres)
Dan mySQL seperti ini :
Sama seperti organ dalam, kita buat tabel organ luarnya. Querynya : create table organ_luar (nomor varchar (2),nama varchar (20));
Query untuk memasukkan datanya adalah : insert into organ_luar values (1,'mata'),(2,'hidung'),(3,'tenggorokan');
Hasilnya adalah (postgres) :
 mySQL :
Okey, untuk selanjutnya kita langsung saja masukkan query union, except, dan intersection.
Untuk postgres, kita bisa lihat hasilnya di bawah ini
 

Dan untuk mySQL ada sedikit perubahan pada intersection dan except-nya. Lebih jelasnya lihat gambar berikut :
      Karena tugas rumahnya sudah selesai, sekarang saya akan menjelaskan evaluasi dari DBMS MySQL dan PostgreSQL di dalam blog ini. Secara keseluruhan perintah querynya hampir sama antara mySQL dengan postgres, akan tetapi letak perbedaannya terletak pada perintah dan simbol saja. Misalkan perintah untuk pencarian data menggunakan REGEXP . Di postgres, REGEXP cukup disimbolkan dengan tanda '~'. Namun di mySQL, simbol tersebut jika dilaksanakan akan eror atau tidak jalan. Jadi di mySQL simbol ~ diganti dengan regexp. Lalu, pada struktur untuk UNION, EXCEPT atau INTERSECT agak berbeda querynya antara mySQL dan postgres. Jika dalam perintah UNION, mySQL maupun postgres sama perintahnya. Namun jika dalam EXCEPT dan INTERSECT, perintahnya agak berbeda. Contohnya, dalam penggunaan postgres, EXCEPT cukup diketik saja. Tidak perlu disimbolkan atau memakai kata lain (select  nama_kolom from nama_tabel  except select nama_kolom from nama_tabel;). Dan di dalam mySQL, penggunaan querynya menjadi seperti ini select*from nama_tabel where nama_kolom not in (select nama from organ_luar);. Nah kalau INTERSECT penggunaan di dalam postgres tetap sama. yaitu tinggal mengetikkan kata intersect saja, tidak perlu disimbolkan atau diganti dengan kata lain. Contoh query : select  nama_kolom1 from nama_tabel1  intersect select nama_kolom2 from nama_tabel2;. Jika dalam mySQL, penggunaan INTERSECT hampir sama dengan perintah EXCEPT. Hanya saja dihilangkan not. Contohnya : select*from nama_tabel1 where nama_kolom1 in (select nama_kolom2 from nama_tabel2);
     Dan jika kita bicara tentang kelebihan atau kekurangannya si postgres dan mySQL, tentu ada. Karena mereka juga kan ciptaan manusia, dimana manusia sendiri tidak sempurna :D. Nah, kalau menurut saya, paling enak itu menggunakan postgres daripada mySQL. Tapi lebih mudah lagi lewat sql yang xampp. Karena apa? di xampp sendiri tidak perlu menggunakan terlalu banyak query. Bahkan kalau ingin membuat tabel, tinggal klik - klik saja, tidak perlu query lagi. Kecuali memang diperlukan. Lalu, kenapa postgres? Tentu saja penggunaannya lebih mudah daripada mySQL. Mungkin bagi saya, karena saya sering memakai postgres dan xampp daripada mySQL. Tapi kita sebenarnya bisa dan mudah atau mahir menggunakan semuanya kok, jika kita terbiasa dan ada niatan mau belajar.




BAB III
PENUTUP



  • Kesimpulan
• AS (menampilkan label kolom dengan nama lain)
• AND dan OR (menggunakan standar logika boolean three-valued)
• BETWEEN (menentukan lebar nilai dari nilai terendah dan nilai tertinggi.)
• LIKE (mencari sebuah data yang hanya diwakili oleh salah satu atau lebuh hurufnya saja.)
• CASE (perbandingan dalam bentuk output kolom.)
• DISTINCT (mengembalikan hasil dari  query  yang tidak terdapat duplikasi)
• SET (melakukan perubahan parameter PostgreSQL)
• SHOW (menampilkan parameter yang aktif.)
• RESET (mengijinkan session parameter untuk dikembalikan pada posisi nilai defaultnya)
• LIMIT  dan OFFSET (membatasi jumlah output berdasarkan jumlah row)
• UNION, EXCEPT, dan INTERSECT (mengkombinasi dua buah query )
  • Lain - Lain
Belajar itu butuh waktu. Tidak ada yang namanya instan di dunia ini. Mau makan mi instan saja harus memasak air terlebih dahulu. Maka dari itu, belajarlah mumpung masih ada waktu. Dan tidak ada kata terlambat. Memang sih, lebih baik terlambat daripada tidak sama sekali. Tapi ya.. jangan sering terlambatlah .. Pokoknya semangat menjalani hidup dan mengerjakan laporan (^^)9.
Manfaat
Semoga para pembaca sekalian bisa lebih paham tentang mySQL, postgres, xampp apalagi. Jikalau ada yang kurang paham atau belum mengerti, bisa langsung saja hubungi sang masternya. Dan apabila ada kekurangan mohon kritik dan sarannya  Karena akhir - akhir ini saya mengerjakan dengan sepenuh hati. :D
  • Daftar Pustaka

Tidak ada komentar:

Posting Komentar