Minggu, 20 Oktober 2013



SQL1

Dosen : Titik Lusiani, M.Kom., OCP


Perintah SQL dengan Menggunakan SELECT
Query secara bahasa kamus berarti pertanyaan, tapi di modul ini, query diartikan sebagai permintaan untuk menampilkan data. Adanya SQL, dimungkinkan data dari database dapat ditampilkan dengan berbagai cara. Penulisan perintah SQL untuk query tidak boleh ada kesalahan, bila terjadi kesalahan bias berakibat data tidak keluar sama sekali atau keluar tetapi data tidak sesuai dengan yang diinginkan. Contoh perintah SQL sederhana:
select nip, nama_peserta from peserta_diklat ;
NIP NAMA_PESERTA
060123
Muhammad Shodiq
060136
Kayla Putri
060125
Fahcri Kantana
060140
Andri Sentani
Perintah ini diartikan dengan : cari nip dan nama_peserta dari tabel peserta_diklat. Perintah SQL dapat ditulis dengan huruf besar atau huruf kecil atau kombinasi keduanya, sistem secara otomatis akan melakukan uppercase (merubah jadi huruf besar) dalam proses pembacaan perintah. Titik koma (;) yang terletak diakhir perintah sebagai tanda perintah SQL telah selesai dan siap diproses/dijalankan, dengan tekan tombol ENTER, maka perintah SQL akan dijalankan. Kata kunci (keyword) untuk perintah SQL diatas adalah select dan from, penulisan kata kunci dalam perintah tidak boleh salah, bila terjadi kesalahan akan diperingatkan oleh sistem dan perintah tidak dapat dijalankan.
Sintaks dari perintah SELECT adalah:
Select <nama kolom> from <nama_tabel> ;
Contohnya:
select nama_peserta from peserta_diklat ;
Hasilnya :
NAMA_PESERTA
a. Tanda * (asterik)
Dalam perintah select, tanda * digunakan untuk menampilkan data secara
keseluruhan (semua field ditampilkan dan urutan field sesuai deskripsi tabel).
Contohnya :
select * from peserta_diklat:
Hasil dari select, semua data dari tabel peserta_diklat ditampilkan untuk semua
field dan urutan fieldnya sesuai deskripsi tabel terakhir.
b. Tentukan Field dan Urutan dalam tampilan
Bila dikehendaki hanya beberapa field saja dan urutan field yang ditampilkan tidak seperti deskripsi tabelnya, maka dalam perintah select dituliskan field dan urutan yang ingin ditampilkan, misalnya dari tabel peserta_diklat hanya ingin ditampilkan Field nama_peserta dan nip dengan urutan tampilan nip terlebih dulu, maka perintah SQL ditulis sebagai berikut:
select nip, nama_peserta from peserta_diklat ;
Hasil dari perintah SQL diatas, data ditampilkan sesuai field yang dipilih dan urutan field sesuai yang dikehendaki, hanya saja urutan data masih seperti data aslinya.
c. Tampilkan Data secara Urut
Untuk menampilkan data yang diurutkan berdasarkan satu atau lebih field,

gunakan perintah order by, misalnya data ingin ditampilkan berdasarkan
nama_peserta dan yang ditampilkan hanya field nip dan nama_peserta saja,
maka perintah SQL ditulis sebagai berikut:
select nip, nama_peserta from peserta_diklat order by nama_peserta ;
Hasil dari perintah SQL diatas, ditampilkan data dengan urutan berdasarkan nama_peserta. Perintah order by berpasangan dengan ascending atau descending, defaultnya berpasangan dengan ascending, untuk pasangan default ini boleh dituliskan, boleh juga tidak dituliskan. Dalam penulisan perintah, ascending boleh ditulis dengan asc saja yang berarti data diurutkan dari yang terkecil sampai yang terbesar, sedangkan descending boleh ditulis dengan desc saja yang berarti data diurutkan dari yang terbesar sampai yang terkecil.
Sintaks lengkap untuk order by adalah:
Select kolom1, kolom2, kolom3
 from nama_tabel
 order by kolom_urutan1,
kolom_urutan2.
4. Kondisi
Untuk pencarian sebuah atau sekelompok data dari database, diperlukan satu atau lebih kondisi. Artinya bila diberikan suatu kondisi pada perintah SQL, maka hanya data-data tertentu saja yang akan ditampilkan. Kata kunci untuk pemberian kondisi adalah where yang dituliskan setelah penulisan nama tabel pada perintah SQL.
Sintaks untuk penulisan kondisi pada perintah SQL:
Select nama_kolom from nama_tabel where (kondisi):
Macam-macam kondisi dalam perintah SQL dapat dijelaskan sebagai berikut:
a. Perintah where dengan satu kondisi terdiri dari dua, yaitu setelah perintah where hendak ditampilkan data yang mengandung suatu karakter tertentu dan menggunakan ekspresi aritmatik, contohnya:
select * from peserta_diklat where nama_peserta = \u2018Fachri Kantana\u2019 ;
asil dari perintah SQL diatas, ditampilkan data yang punya nama_peserta
sama dengan Fachri Kantana saja. b. Perintah where dengan satu atau lebih kondisi berupa ekspresi AND dan OR. Ekspresi AND digunakan bila semua kondisi harus terpenuhi, sedangkan OR bila hanya salah satu kondisi saja yang harus terpenuhi. Untuk penjelasan lebih lanjut, tabel peserta_diklat diubah kolom dan datanya menjadi berikut ini:
Contoh perintah SQL untuk menampilkan data dengan dua kondisi yang harus
terpenuhi:


select * from peserta_diklat where kwl = ‘060’ and kpp like ’%2%’;
Hasil dari perintah SQL diatas, ditampilkan data yang punya kwl sama dengan
060 dan kpp yang mengandung angka 2 yaitu 021 dan 022.
Contoh perintah SQL untuk menampilkan data dengan salah satu kondisi saja
yang harus terpenuhi:
select * from peserta_diklat where kwl = ‘010’ or kpp like ’%7%’;
Hasil dari perintah SQL diatas, ditampilkan data yang punya kwl sama dengan
010 atau kpp yang mengandung angka 7 yaitu 075.

Single row-function :

Fungsi Single
-RowFungsi merupakan fitur paling dibutuhkan dari SQL yang dapat digunakan untuk Fungsi SQL
-Melakukan kalkulasi pada data
-Memodifikasi item data secara individual
-Memanipulasi output dari sejumlah baris
-Melakukan format terhadap tanggal
dan angka untuk ditampilkan
-Mengkonversi tipe data pada kolom
Fungsi SQL ada kalanya menggunakan argument dan selalu mengembalikan nilai.
Ada dua tipe fungsi SQL:
a.Fungsi Single Row (fungsi satu baris)Fungsi ini hanya bekerja pada satu baris dan mengembalikan satu hasil per baris. Ada beberapa tipe, diantaranya: character, number, date, dan konversi.
b.Fungsi Multiple Row
Group Function
(fungsi banyak baris)Fungsi ini dapat memanipulasi sejumlah baris dan memberikan satu hasil per sejumlah baris. Fungsi banyak baris akan dijelaskan pada modul yang lain.Fungsi ini digunakan untuk memanipulasi item data, menerima satu atau lebih argument dan mengembalikan satu nilai dari setiap baris yang dikembalikan oleh query. Sintaksnya dapat ditulis sebagai berikut.Fungsi Satu Barisnama_fungsi[(arg1,arg2, ...)]nama_fungsimerupakan nama dari fungsi yang akan digunakanFungsi Single-RowFungsi merupakan fitur paling dibutuhkan dari SQL yang dapat digunakan untuk:Fungsi SQL
-Melakukan kalkulasi pada data
-Memodifikasi item data secara individual
-Memanipulasi output dari sejumlah baris
-Melakukan format terhadap tanggal dan angka untuk ditampilkan

SUBQUERY Pada stage 1 sampai 4, anda dihadapkan dengan pencarian data yang kondisinya masih jelas pada tabel, tetapi tidak menutup kemungkinan bahwa akan muncul kebutuhan data yang kondisinya tidak jelas. Hal ini bisa diselesaikan dengan menggunakan penggabungan 2 (dua) query atau lebih. (memasukkan query yang 1 (satu) ke query yang lain)  Query yang ada di bagian dalam mengembalikan sebuah nilai (atau kumpulan nilai) yang digunakan oleh query bagian luar.  Sebuah subquery adalah sebuah query SELECT yang ditancapkan pada sebuah klausa di query SELECT yang lain. anda dapat meletakkan subquery pada beberapa klausa pada SQL query, meliputi:  Klausa WHERE   Klausa HAVING  Klausa FROM Syntax sederhana untuk menuliskan subquery adalah sebagai berikut: 
OPERATOR yang dimaksud pada Syntax ini bisa meliputi single-row operator
 (>, =, >=, <, <=, <>) dan multiple-row operator (IN, ANY, ALL). Single-row operator digunakan pada subquery yang mengembalikan 1 baris data  (single-row subquery), sedangkan multiple-row operator digunakan pada subquery yang mengembalikan banyak baris data (multiple-row subquery). Terdapat juga subquery yang mengembalikan banyak baris dan banyak kolom. Example For Single-Row Subquery: 1. Menampilkan nim, nama belakang, dan kota_tinggal dari mahasiswa yang tinggal di kota yang sama dengan mahasiswa bernama depan ‘Bambang’ 
2. menampilkan nim, nama belakang dan nilai uas terendah dari mahasiswa yang nilai uasnya lebih tinggi nilai uas terendah matakuliah 'Pemrograman Visual I' 


 

SELECT N.NIM, M.NAMA_BELAKANG, MIN(N.UAS)
 FROM MAHASISWA M JOIN NILAI N  ON M.NIM = N.NIM
GROUP BY N.NIM, M.NAMA_BELAKANG
HAVING MIN(N.UAS) >  (SELECT MIN(NL.UAS)  FROM NILAI NL JOIN MATAKULIAH MK ON NL.KODE_MK = MK.KODE_MK 
WHERE MK.NAMA_MK = 'Pemrograman Visual II'); 
SELECT NIM, NAMA_BELAKANG, KOTA_TINGGAL FROM MAHASISWA WHERE KOTA_TINGGAL =  (SELECT KOTA_TINGGAL FROM MAHASISWA WHERE NAMA_DEPAN = 'Bambang');
February 4, 2013 [STRUCTURE QUERY LANGUAGE  MODULE] 
Example For Multiple-Row Subquery: 1. Menampilkan nim, nama lengkap, kode mk, nama mk, dan nilai uas yang dari mahasiswa yang mengambil mata kuliah yang diadakan pada semester 4. 
2. Menampilkan semua nim, nama belakang, dan tanggal lahir mahasiswa yang bulan lahirnya tidak sama dengan bulan lahir mahasiswa prodi SI Desain Komunikasi dan Visual 
 
SELECT NIM, NAMA_BELAKANG, TGL_LAHIR FROM MAHASISWA  WHERE TO_CHAR(TGL_LAHIR, 'MM') <> ALL (SELECT TO_CHAR(M.TGL_LAHIR, 'MM')  FROM MAHASISWA M JOIN PROGRAM_STUDI P ON M.KODE_PRODI = P.KODE_PRODI WHERE P.NAMA_PRODI = 'SI Desain Komunikasi dan Visual');
SELECT MHS.NIM, MHS.NAMA_DEPAN ||' '|| MHS.NAMA_BELAKANG "NAMA LENGKAP", N.KODE_MK, MK.NAMA_MK, N.UAS FROM MAHASISWA MHS JOIN NILAI N ON MHS.NIM = N.NIM JOIN MATAKULIAH MK ON MK.KODE_MK = N.KODE_MK WHERE N.KODE_MK IN (SELECT KODE_MK FROM MATAKULIAH WHERE SEMESTER = 4);

3. Menampilkan semua nim, nama belakang, dan nilai uas tertinggi dari matakuliah yang dosennya mengajar pada hari rabu.  
Example For a subquery on FROM clause: Menampilkan kode mk dan nama mk yang memiliki rata-rata nilai akhir paling tinggi dari semua matakuliah.  
2. Set Operator Set operator menggabungkan 2 (dua) atau lebih query menjadi 1 (satu) hasil. Semua set operator memiliki tingkatan yang sama, jika sebuah query memiliki banyak set operator, maka Oracle Server akan membaca query dari kiri (atau atas) ke kanan (bawah), jika tidak ada tanda kurung ( ) yang digunakan untuk mengurutkan.
SELECT KODE_MK, NAMA_MK, MAX(RATA2_NILAI) FROM (SELECT MK.KODE_MK, MK.NAMA_MK, AVG(((N.TUGAS*0.4)+(N.UAS*0.3)+(N.UTS*0 .3))) AS RATA2_NILAI FROM NILAI N JOIN MATAKULIAH MK ON N.KODE_MK = MK.KODE_MK GROUP BY MK.KODE_MK, MK.NAMA_MK) GROUP BY KODE_MK, NAMA_MK;
SELECT M.NIM, M.NAMA_BELAKANG, max(N.UAS) FROM MAHASISWA M, NILAI N WHERE M.NIM = N.NIM AND N.NID = ANY (SELECT NID FROM PLOTTING_AJAR WHERE HARI = 'Rabu') GROUP BY M.NIM, M.NAMA_BELAKANG;
February 4, 2013 [STRUCTURE QUERY LANGUAGE  MODULE] 
LabKom STIKOM Surabaya | Joining Multiple Query 
58   
Khusus untuk operator INTERSECT, anda harus menggunakan tanda kurung ( ) untuk mengurutkan urutan membaca query Jika operator INTERSECT digunakan bersamaan dengan set operator lain. 
2.1 UNION Operator Operator UNION mengembalikan semua baris data yang di-SELECT oleh kedua query dan menghilangkan semua baris data kembar. Example: Menampilkan nim dari semua mahasiswa yang digabungkan dengan nim yang sudah masuk nilainya. 

UNION ALL Operator Operator UNION ALL mengembalikan semua baris data yang di- SELECT oleh kedua query termasuk semua baris data kembar. Sebagai catatan, keyword DISTINCT tidak dapat digunakan dengan operator UNION ALL..  Example: Menampilkan semua nim, nama mahasiswa, nid, dan nama dosen   
2.3 INTERSECT Operator Operator INTERSECT hanya mengembalikan semua baris data yang kembar saja dari kedua query.  Example: Menampilkan nama dosen yang sudah melakukan plotting ajar 
 
SELECT D.NID, D. NAMA_DOSEN FROM DOSEN D WHERE D.NID IN (SELECT DS.NID FROM DOSEN DS INTERSECT SELECT NID FROM PLOTTING_AJAR);
SELECT NIM, NAMA_DEPAN || ' ' || NAMA_BELAKANG AS NAMA FROM MAHASISWA UNION ALL SELECT NID, NAMA_DOSEN FROM DOSEN;
February 4, 2013 [STRUCTURE QUERY LANGUAGE  MODULE] 
2.4 MINUS Operator Operator MINUS mengembalikan baris data dari query pertama, yang tidak ada di query kedua. (hasil query pertama – hasil query kedua). Jika anda menggunakan klausa WHERE pada Operasi MINUS, maka semua kolom yang ada di klausa WHERE harus dimasukkan ke Klausa SELECT. Example Menampilkan nid dan nama_dosen yang belum pernah melakukan plotting ajar 
  select nid, nama_dosen from dosen where nid in  (select nid from dosen minus select nid from plotting_ajar);

Tidak ada komentar:

Posting Komentar