Pengertian Query
Query
adalah semacam kemampuan
untuk menampilkan suatu data dari database dimanamengambil dari table-tabel
yang ada di database, namun tabel tersebut tidak semuaditampilkan sesuai dengan
yang kita inginkan. data apa yang ingin kita tampilkan.misal : data peminjam
dengan buku yang dipinjam, maka nanti akan mengambil data daritable peminjam
dan tabel buku.
Query
adalah suatu extracting
data dari suatu database dan menampilkannya untuk 
“pengolahan” lebih
lanjut.
Query
adalah pertanyaan atau
permintaan informasi tertentu dari sebuah basisdata yangditulis dalam format
tertentu.
Query
adalah perintah-perintah
untuk mengakses data pada sistem basis data
Query
adalah merupakan bahasa
untuk melakukan manipulasi terhadap database, yang telahdistandarkan dan lebih
dikenal dengan nama Structured Query Language (SQL)
Bahasa query
(query language) adalah
bahasa khusus yang digunakan untuk melakukanquery pada basis data. Contoh penggunaan
bahasa query adalah: SELECT ALL WHERE
kota=”Yogyakarta” AND
umur<40. Query ters
ebut meminta semua
record dari basis datayang sedang digunakan (misalkan basisdata konsumen) yang
bertempat tinggal di Yogyakartadan berumur lebih dari 40 tahun (kota dan umur
adalah nama field yang telah didefinisikan).Standar bahasa query yang banyak
digunakan adalah SQL (structured query language).Metode ini paling rumit tetapi
paling fleksibel dibandingkan metode query yang lain, querydengan parameter
yang telah tersedia dan query by example.
Query dibedakan menjadi
2
, yaitu1. Untuk
membuat/mendefinisikan obyek-obyek database seperti membuat tabel, relasi
dansebagainya. Biasanya disebut dengan Data Definition Language (DDL)2. Untuk
memanipulasi data, yang biasanya dikenal dengan Data Manipulation
Language(DML). Manipulasi data bisa berupa:a. Menambah, mengubah atau menghapus
data.b. Pengambilan informasi yang diperlukan dari database, yang mana datanya
diambil daritabel maupun dari query sebelumnya
Sabtu,
11 April 2009
Sebuah basis data biasanya dapat dipilih ke dalam 2 bentuk yaitu:
1. Data Definition Language(DDL)
2. Data Manipulation Languange(DML)
1. Data Definition Language(DDL)
2. Data Manipulation Languange(DML)
1. DDL
Struktur/skema basis data yang menggambarkan/mewakili desain basis data secara keseluruhan didefinisikan dengan bahasa khusus yang disebut DDL. Dengan bahasa inilah kita dapat membuat tabel baru, membuat indeks, mengubah tabel, menentukan struktur penyimpanan tabel dan sebagainya. Hasil dari kompilasi perintah DDL adalah kumpulan tabel yang disimpan dalam file khusus yang disebut Kamus Data
Contohnya :
a. Create database : adalah perintah yang di gunakan untuk memulai membuat database.
b. Modify database : adalah perintah yang digunakan untuk memodifikasi database.
c. Create table : adalah perintah yang digunakan untuk membuat tabel.
d. Modify table : adalah perintah yang digunakan untuk memodifikasi table.
2. DML
Merupakan bentuk bahasa basis data yang berguna untuk melakukan
manipulasi dan pengambilan data pada suatu basis data. Manipulasi data dapat
berupa:a. Penyisipan/Penambahan data baru ke suatu basis data
b. Penghapusan data dari suatu basis data
c. Pengubahan data dari satu basis data
Contoh-contoh query SQL
Pada kesempatan kali ini saya akan menjelaskan contoh-contoh query dalam
 MySQL. Tabel-tabel yang akan kita gunakan adalah sebagai berikut:
- matakuliah(kodemk, namamk, sks), berisi daftar matakuliah yang ditawarkan
- dosen(nip, nama), berisi daftar dosen pengampu kuliah
- mahasiswa(nim, nama, dosenpembimbing), berisi daftar mahasiswa
- kuliah(kodekuliah, kodemk, nip, thnakademik, semester), berisi daftar matakuliah dan dosen pengampu
- peserta(nim, kodekuliah, nilai), berisi kuliah yang diikuti mahasiswa beserta nilainya dalam huruf
Dalam pembahasan kali ini diasumsikan:
- matakuliah hanya ditawarkan sekali dalam setahun, yaitu pada semester 1 (ganjil) saja atau semester 2 (genap) saja dan tidak kedua-duanya.
- bila pernah mengulang matakuliah, nilai yang diikutkan untuk perhitungan IP adalah nilai terakhir
- matakuliah dikatakan lulus bila nilai yang diperoleh minimal ‘D’
Berikut ini adalah contoh-contoh query dalam MySQL:
1.      Menampilkan banyaknya SKS yang telah diselesaikan oleh masing-masing mahasiswa
a.       Bila matakuliah yang diulang semua masuk dalam perhitungan
SELECT nim, SUM( sks ) jumlahsks
FROM peserta, (
SELECT kodekuliah, kuliah.kodemk, sks
FROM kuliah, matakuliah
WHERE kuliah.kodemk = matakuliah.kodemk
) A
WHERE peserta.kodekuliah = A.kodekuliah
GROUP BY nim
Penjelasan:
Pada query ini kita menampilkan jumlah SKS yang telah diselesaikan oleh 
masing-masing mahasiswa bila matakuliah yang diulang semua masuk dalam 
perhitungan. Pertama-tama, kita melakukan join tabel kuliah dengan 
tabel matakuliah pada kondisi kodemk pada tabel kuliah sama 
dengan kodemk pada tabel matakuliah untuk 
mendapatkankodekuliah, kodemk dan sks.
…(
SELECT kodekuliah, kuliah.kodemk, sks
FROM kuliah, matakuliah
WHERE kuliah.kodemk = matakuliah.kodemk
) A
…
Lalu hasil join tersebut diberi alias A. Selanjutnya, tabel A tadi kita 
join-kan dengan tabel peserta pada kondisi kodekuliah pada 
tabel peserta sama dengan kodekuliah pada tabelA untuk 
mendapatkan nim dan sks yang selanjutnya kita 
menjumlahkan sks dengan SUM(sks) yang dikelompokkan 
berdasarkan nim menggunakan GROUP BY nim.
b.      Bila matakuliah yang diulang hanya yang sesuai dengan asumsi yang masuk dalam perhitungan
SELECT nim, SUM( sks ) totalsks
FROM (
SELECT DISTINCT nim, kodemk
FROM peserta, kuliah
WHERE peserta.kodekuliah = kuliah.kodekuliah
)P, matakuliah
WHERE P.kodemk = matakuliah.kodemk
GROUP BY nim
Penjelasan:
Pada query ini kita menampilkan jumlah SKS yang telah diselesaikan oleh 
masing-masing mahasiswa bila matakuliah yang diulang hanya dihitung 
sekali. Pertama-tama kita melakukan join tabel peserta dengan 
tabel kuliah pada kondisi kodekuliah pada tabel peserta sama 
dengan kodekuliah pada tabel kuliah untuk mendapatkan nim dan kodemk.
… (
SELECT DISTINCT nim, kodemk
FROM peserta, kuliah
WHERE peserta.kodekuliah = kuliah.kodekuliah
)P …
Kata DISTINCT setelah SELECT digunakan untuk menghilangkan pengulangan 
record yang mempunyai nim dan kodemk yang sama agar matakuliah yang 
diulang oleh seorang mahasiswa hanya muncul sekali. Hasil join tersebut 
diberi alias P. Lalu tabel P kita join-kan dengan tabel matakuliah pada 
kondisi kodemk pada tabel P sama dengan kodemk pada 
tabel matakuliah untuk mendapatkan nim dan sks yang dijumlahkan 
dengan SUM(sks) setelah dikelompokkan berdasarkan GROUP BY nim.
2.      Menampilkan data-data yang bisa untuk melakukan perhitungan IPK (berdasar asumsi di atas)
SELECT nim, kuliah.kodemk, nilai, sks
FROM peserta, matakuliah, kuliah
WHERE kuliah.kodekuliah = peserta.kodekuliah
AND kuliah.kodemk = matakuliah.kodemk
AND (
nim, kuliah.kodemk, thnakademik
)
IN (
SELECT nim, kodemk, MA thnakademik ) thnterakhir
 thnakademik ) thnterakhir
FROM peserta, kuliah
WHERE kuliah.kodekuliah = peserta.kodekuliah
GROUP BY nim, kodemk
)
Penjelasan:
Pada query ini kita melakukan join pada tiga tabel, 
yaitu peserta, matakuliah dan kuliah dengan kondisi kodekuliah pada 
tabel kuliah sama dengan kodekuliah pada tabelpeserta dan kodemk pada 
tabel kuliah sama dengan kodemk pada tabel matakuliah. Setelah itu kita 
lakukan operasi intersection dengan query yang menampilkan tahun 
terakhir menyelesaikan suatu matakuliah.
…
AND (
nim, kuliah.kodemk, thnakademik
)
IN (
SELECT nim, kodemk, MA thnakademik ) thnterakhir
 thnakademik ) thnterakhir
FROM peserta, kuliah
WHERE kuliah.kodekuliah = peserta.kodekuliah
GROUP BY nim, kodemk
)
Pada query untuk menampilkan tahun terakhir menyelesaikan suatu 
matakuliah, kita melakukan join pada tabel peserta dan 
tabel kuliah dengan kondisi kodekuliah pada tabel kuliahsama 
dengan kodekuliah pada tabel peserta. Lalu untuk mencari tahun terakhir 
digunakan fungsi MA thnakademik) setelah
 dikelompokkan berdasarkan nim dan kodemk denganGROUP BY nim, kodemk. 
Lalu operasi intersection dilakukan dengan memeriksa apakah record nim, 
kodemk, thnakademik dari hasil join tiga tabel ada pada hasil query 
untuk menampilkan tahun terakhir menyelesaikan suatu matakuliah.
thnakademik) setelah
 dikelompokkan berdasarkan nim dan kodemk denganGROUP BY nim, kodemk. 
Lalu operasi intersection dilakukan dengan memeriksa apakah record nim, 
kodemk, thnakademik dari hasil join tiga tabel ada pada hasil query 
untuk menampilkan tahun terakhir menyelesaikan suatu matakuliah.
3.      Menampilkan dosen yang pernah mengampu kelas matakuliah yang pesertanya tidak lebih dari 15 mahasiswa
SELECT DISTINCT nip
FROM kuliah, (
SELECT kodekuliah, COUNT( * ) jumlahpeserta
FROM peserta
GROUP
BY kodekuliah
) banyakpeserta
WHERE kuliah.kodekuliah = banyakpeserta.kodekuliah
AND jumlahpeserta <=15
Penjelasan:
Pada query ini kita akan menampilkan dosen yang pernah mengampu 
matakuliah yang pesertanya <= 15 mahasiswa. Awalnya menggunakan 
tabel peserta, kita hitung dahulu jumlah peserta dari setiap kuliah 
dengan menggunakan COUNT setelah dikelompokkan berdasarkan kodekuliah dengan GROUP BY kodekuliah.
 setelah dikelompokkan berdasarkan kodekuliah dengan GROUP BY kodekuliah.
…(
SELECT kodekuliah, COUNT( * ) jumlahpeserta
FROM peserta
GROUP
BY kodekuliah
) banyakpeserta
…
Setelah itu query tersebut diberi alias banyakpeserta. Lalu pada query 
utama kita melakukan join pada tabel banyakpeserta dengan 
tabel kuliah pada kondisi kodekuliah pada tabelkuliah sama 
dengan kodekuliah pada tabel banyakpeserta serta menambahkan kondisi 
jumlahpeserta <= 15. Pada query utama kita menampilkan nip yang di 
dahului dengan kataDISTINCT agar nip yang ditampilkan tidak ada 
perulangan.
4.      Menampilkan nama mahasiswa yang telah lulus lebih dari 100 SKS
SELECT nama
FROM (
SELECT nim, SUM( sks ) jumlahsks
FROM peserta, kuliah, matakuliah
WHERE nilai <  
'E'
AND kuliah.kodekuliah = peserta.kodekuliah
AND kuliah.kodemk = matakuliah.kodemk
GROUP
BY nim
) yanglulus, mahasiswa
WHERE jumlahsks >100
AND yanglulus.nim = mahasiswa.nim
Penjelasan:
Pada query ini kita akan menampilkan nama mahasiswa yang telah lulus 
> 100 SKS. Mula-mula kita menghitung jumlah SKS dari matakuliah yang 
lulus untuk masing-masing mahasiswa. Kita melakukan join pada tiga 
tabel peserta, kuliah dan matakuliah dengan kondisi kodekuliah pada 
tabel kuliah sama dengan kodekuliah pada tabel peserta dan kodemk pada 
tabel kuliah sama dengan kodemk pada tabel matakuliah disertai dengan 
kondisi nilai < ‘E’ yang berarti nilai >= ‘E’ tidak diikutkan. 
Lalu sks yang memenuhi kondisi dijumlahkan dengan SUM(sks) yang diberi 
alias jumlahsks setelah dikelompokkan berdasarkan nim dengan GROUP BY 
nim. Query tersebut diberi alias jumlahlulus.
…(
SELECT nim, SUM( sks ) jumlahsks
FROM peserta, kuliah, matakuliah
WHERE nilai <  
'E'
AND kuliah.kodekuliah = peserta.kodekuliah
AND kuliah.kodemk = matakuliah.kodemk
GROUP
BY nim
) yanglulus …
Pada query utama kita melakukan join pada 
tabel yanglulus dengan mahasiswa dengan kondisi nim pada 
tabel yanglulus sama dengan nim pada tabel mahasiswa disertai 
kondisijumlahsks > 100 untuk menampilkan nama mahasiswa yang telah 
lulus > 100 SKS.
5.      Menampilkan banyaknya siswa yang telah lulus tugas akhir bila kode matakuliah untuk tugas akhir adalah ‘M0012’
SELECT COUNT( * ) lulusTA
FROM peserta, kuliah
WHERE nilai <  
'E'
AND kuliah.kodekuliah = peserta.kodekuliah
AND kodemk =  
'M0012'
Penjelasan:
Pada query kali ini kita akan menampilkan jumlah mahasiswa yang telah 
lulus tugas akhir bila kode matakuliah tugas akhir = ‘M0012’. 
Pertama-tama kita melakukan join pada tabel peserta dankuliah dengan 
kondisi kodekuliah pada tabel kuliah sama dengan kodekuliah pada 
tabel peserta untuk mendapatkan nilai dan kodemk. Lalu hasil join 
tersebut kita saring dengan kondisi nilai < ‘E’ dan kodemk = 
‘M0012’ yang selanjutnya setelah disaring kita hitung dengan COUNT dan diberi alias lulusTA untuk menghitung jumlah mahasiswa yang telah lulus tugas akhir.
 dan diberi alias lulusTA untuk menghitung jumlah mahasiswa yang telah lulus tugas akhir.
6.      Menampilkan daftar nomor dan nama mahasiswa beserta IP  berdasar dua asumsi di atas
SELECT buatip.nim, nama, (
SUM( nilaisks ) / SUM( sks )
) ip
FROM mahasiswa, (
SELECT nim, kuliah.kodemk, (
( 69 – ASCII( UPPER( nilai ) ) ) * sks
) nilaisks, sks
FROM peserta, matakuliah, kuliah
WHERE kuliah.kodekuliah = peserta.kodekuliah
AND kuliah.kodemk = matakuliah.kodemk
AND (
nim, kuliah.kodemk, thnakademik
)
IN (
SELECT nim, kodemk, MA thnakademik ) thnterakhir
 thnakademik ) thnterakhir
FROM peserta, kuliah
WHERE kuliah.kodekuliah = peserta.kodekuliah
GROUP BY nim, kodemk
)
)buatip
WHERE mahasiswa.nim = buatip.nim
GROUP BY nim
Penjelasan:
Pada query yang cukup panjang ini. kita akan menampilkan nomor dan nama 
mahasiswa beserta IP berdasar dua asumsi di atas. Pada awalnya kita 
membuat query untuk menampilkan nim,kodemk dan nilai yang sudah 
dikali sks. Query ini mirip seperti query yang dijelaskan pada nomor 2 
dengan sedikit perubahan.
…(
SELECT nim, kuliah.kodemk, (
( 69 – ASCII( UPPER( nilai ) ) ) * sks
) nilaisks, sks
FROM peserta, matakuliah, kuliah
WHERE kuliah.kodekuliah = peserta.kodekuliah
AND kuliah.kodemk = matakuliah.kodemk
AND (
nim, kuliah.kodemk, thnakademik
)
IN (
SELECT nim, kodemk, MA thnakademik ) thnterakhir
 thnakademik ) thnterakhir
FROM peserta, kuliah
WHERE kuliah.kodekuliah = peserta.kodekuliah
GROUP BY nim, kodemk
)
) buatip
Bagian yang ditebalkan merupakan perubahan yang dilakukan untuk query 
kali ini. Hasil query tersebut diberi alias buatip. Lalu kita melakukan 
join pada tabel buatip dan tabel nama dengan kondisi nim pada 
tabel mahasiswa sama dengan nim pada tabel buatip untuk 
mendapatkan nama. Selanjutnya untuk menghitung IP, kita menjumlahkan 
semua nilaisks dan membaginya dengan jumlah sks dengan SUM(nilaisks) / 
SUM(sks) setelah dikelompokkan menurut nim-nya dengan menggunakan GROUP 
BY nim.
7.      Menghitung IP bila asumsi kedua di atas diganti bahwa nilai yang
 dipakai untuk penentuan IP adalah nilai yang terbaik (dari serangkaian 
mengulang matakuliah)
SELECT nim, (
SUM( nilaimaxsks ) / SUM( sks )
)ip
FROM (
SELECT nim, (
( 69 – ASCII( UPPER( nilaimax ) ) ) * sks
)nilaimaxsks, sks
FROM matakuliah, (
SELECT nim, kodemk, MIN( nilai ) nilaimax
FROM peserta, kuliah
WHERE kuliah.kodekuliah = peserta.kodekuliah
GROUP BY nim, kodemk
) nilaiterbaik
WHERE nilaiterbaik.kodemk = matakuliah.kodemk
)buatip
GROUP BY nim
Penjelasan:
Pada query ini kita akan menampilkan IP dengan asumsi kedua diganti 
menjadi nilai yang dipakai untuk menghitung IP adalah nilai yang 
terbaik. Mula-mula kita mencari nilai terbaik pada setiap matakuliah 
untuk masing-masing mahasiswa. Kita melakukan join pada 
tabel peserta dengan tabel kuliah pada kondisi kodekuliah pada 
tabel kuliah sama dengan kodekuliah pada tabel peserta untuk 
mendapatkan kodemk dan nilai. Lalu kita mencari nilai terbaik dari 
setiap matakuliah untuk masing-masing mahasiswa 
dengan MIN(nilai) setelah dikelompokkan 
berdasarkan nim dan kodemk dengan menggunakan GROUP BY nim, 
kodemk karena nilai ascii ‘A’ < ‘B’ < ‘C’ < ‘D’ < ‘E’.
…(
SELECT nim, kodemk, MIN( nilai ) nilaimax
FROM peserta, kuliah
WHERE kuliah.kodekuliah = peserta.kodekuliah
GROUP BY nim, kodemk
) nilaiterbaik
…
Hasil query tersebut diberi alias nilaiterbaik. Setelah itu kita 
melakukan join tabel nilaiterbaik dengan tabel matakuliah pada 
kondisi kodemk pada tabel nilaiterbaik sama dengan kodemk pada 
tabel kuliah untuk mendapatkan sks.
Selanjutnya ditampilkan nim, nilaimaxsks yang merupakan nilaimax dikali sks serta sks.
…(
SELECT nim, (
( 69 – ASCII( UPPER( nilaimax ) ) ) * sks
)nilaimaxsks, sks
FROM matakuliah, (
SELECT nim, kodemk, MIN( nilai ) nilaimax
FROM peserta, kuliah
WHERE kuliah.kodekuliah = peserta.kodekuliah
GROUP BY nim, kodemk
) nilaiterbaik
WHERE nilaiterbaik.kodemk = matakuliah.kodemk
)buatip
…
Hasil query tersebut diberi alias buatip. Kemudian kita menghitung IP 
seperti query pada nomor 6 yaitu SUM(nilaimaxsks) / SUM(sks)  setelah 
dikelompokkan berdasarkan nimdengan menggunakan GROUP.
 
0 komentar:
Post a Comment