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