Anda di halaman 1dari 24

BASIS DATA

Strctured Query Language


Klausa , Operasi, Join dan Fungsi
Agregat
Klausa WHERE
• Klausa ini biasanya digunakan untuk:
1. Filter (penyaringan) data.
2. Merelasikan/menghubungkan query yang
disusun lebih dari satu tabel.
 Penerapannya adalah dengan memasukkan
suatu ekspresi kondisi setelah klausa WHERE:
WHERE <kondisi>
 Jika <kondisi> lebih dari satu, maka bisa
ditambahkan dengan AND atau OR (sesuai
dengan kebutuhan).
WHERE <kondisi> UNTUK
FILTER
Where untuk filter atau pencarian data di dalam SQL
Server bisa dalam beberapa bentuk ekspresi, yakni:
• operasi pembandingan
• operasi pendekatan pola
• operasi pembandingan dengan sekumpulan nilai
Operasi Pembandingan

Operasi:
= < <= >= > <> is
 Khusus untuk pembanding IS, nilai yang diisikan
adalah null, yakni sebuah nilai yang belum
berisi nilai.
 nilai null tidak sama dengan nilai 0 pada tipe
numerik ataupun string kosong pada tipe string
Operasi Pembandingan
Contoh
 menampilkan anggota yang berjenis kelamin laki-laki:
SELECT * FROM Anggota WHERE JK="L"
 menampilkan Anggota yang tahun kelahirannya lebih dari
1985
SELECT * FROM Anggota
WHERE year(TglLahir) > 1985
 menampilkan Anggota wanita yang lahir di bulan Juli:
SELECT * FROM anggota
WHERE JK="P" AND month(TglLahir)=6
 menampilkan idKoleksi yang belum dikembalikan
(TglKembali belum terisi)
SELECT * FROM Peminjaman WHERE TglKembali IS NULL
Operasi LIKE (pendekatan
pola)
• Operasi ini, hanya untuk pembandingan nilai bertipe
string
• Digunakan untuk mengenali string-string yang
memiliki pola tertentu.
• Di dalam operasi ini, digunakan simbol-simbol
berikut:
 simbol % artinya mewakili 0 s/d tak terhingga
dari sembarang karakter
 simbol _ artinya mewakili 1 sembarang karakter
Operasi LIKE (pendekatan
pola)
Contoh
 menampilkan anggota yang nama depannya "Budi":
"Budi"
SELECT * FROM anggota WHERE Nama LIKE "Budi%"
 menampilkan Anggota yang huruf ketiga namanya
adalah “d”:
SELECT * FROM anggota WHERE Nama LIKE "__d%"
 menampilkan koleksi yang judulnya terdapat kata
“pemrograman”:
SELECT * FROM koleksi WHERE Judul LIKE
"%pemrograman%"
operasi IN atau NOT IN
• Ekspresi ini digunakan untuk membandingkan
dengan sebuah kumpulan nilai
• Kumpulan nilai bisa berupa:

 nilai-nilai yang diisikan


 query tunggal
query yg hasilnya hanya terdapat sebuah kolom
saja
operasi IN atau NOT IN

 Nilai-nilai yang diisikan, maksudnya kita sendiri yang


mengisikan nilai-nilai tersebut di dalam query kita.
Contoh
 menampilkan koleksi yang jenisnya buku dan majalah
(idTipeKoleksi=1 atau 2):
SELECT * FROM koleksi
WHERE idTipeKoleksi IN (1, 2)
 menampilkan anggota yang selain mahasiswa atau
dosen (idJenisAnggota selain 2 dan 3)
SELECT * FROM anggota WHERE
IDJenisAnggota NOT IN (1, 3)
operasi IN atau NOT IN
• Query tunggal, yakni nilai-nilai yang digunakan sebagai
pembanding diambil dari sebuah query tunggal yang hasilnya
hanya satu kolom saja
Contoh
 menampilkan anggota yang belum pernah meminjam buku
sama sekali:
SELECT * FROM anggota
WHERE id NOT IN (SELECT DISTINCT idAnggota FROM
Peminjaman)
 menampilkan koleksi yang sedang dipinjam:
SELECT * FROM koleksi WHERE idKoleksi IN (SELECT
idKoleksi
FROM Peminjaman WHERE TglKembali is NULL)
WHERE <KONDISI> UNTUK
RELASI

• Jika kita mengambil informasi dari lebih dari sebuah


tabel, maka kita perlu menambahkan kondisi untuk
relasi antara kedua tabel tersebut.
• Pada dasarnya mirip dengan filter, tapi fungsinya
digunakan untuk merelasikan antara tabel-tabel
yang diambil informasinya
WHERE <KONDISI> UNTUK
RELASI
Contoh
 menampilkan idKoleksi, judul dan nama pengarang
idKoleksi dan judul bisa diambil dari tabel koleksi. Tetapi, di tabel
koleksi tidak terdapat field nama pengarang. Yang ada hanya
idPengarang. Oleh sebab itu, supaya bisa menampilkan informasi yang
akurat, perlu direlasikan antara tabel Koleksi dg tabel Pengarang.
SELECT idKoleksi, Judul, Nama FROM Koleksi,
Pengarang
WHERE idPengarang=id
idPengarang=id adalah untuk relasi antara tabel Koleksi dan
tabel Pengarang. Tanpa relasi ini, hasil query akan menampilkan seluruh
pasangan baris data Koleksi di tiap baris Pengarang, yg tentu saja bukan
informasi yang benar.
WHERE <KONDISI> UNTUK
RELASI
• Jika ada nama field yang sama dari tabel yang disertakan,
maka sebelum nama field, berikan nama tabel diikuti
sebuah titik (.)
• Misal untuk query sebelumnya bisa juga ditulis sbb:

SELECT Koleksi.idKoleksi, Koleksi.Judul,


Pengarang.Nama
FROM Koleksi, Pengarang
WHERE Koleksi.idPengarang=Pengarang.id
WHERE <KONDISI> UNTUK
RELASI
Contoh
 menampilkan daftar idKoleksi, judul koleksi dan harganya
yang dipinjam dg nomor anggota: 551, diurutkan
berdasarkan judul koleksi:

SELECT kl.idKoleksi, kl.judul, kl.harga


FROM koleksi kl, peminjaman pj, anggota ag
WHERE pj.idkoleksi=kl.idkoleksi
AND pj.idAnggota=ag.id
AND ag.idAnggota = 551
ORDER BY kl.judul
FUNGSI-FUNGSI
AGREGATE
• Yaitu fungsi-fungsi yang hasilnya diambil dari proses tiap baris
pada tabel.
• Proses tersebut akan mengolah nilai sebuah field atau lebih
mulai baris pertama sampai seluruh baris
• Fungsi-fungsi tersebut yakni:
- COUNT(*)  mendapatkan jumlah baris
- SUM(kolom)  mendapatkan hasil penjumlahan kolom
- MAX(kolom)  mendapatkan nilai tertinggi
- MIN(kolom)  mendapatkan nilai terendah
- AVG(kolom)  mendapatkan nilai rata-rata
FUNGSI-FUNGSI
AGREGATE
Contoh
 untuk menampilkan jumlah seluruh anggota:
SELECT COUNT(*) FROM Anggota
 untuk menampilkan tahun kelahiran anggota tertua:
SELECT MIN(year(TglLahir))
FROM anggota
GROUP BY <kolom1>
[,<kolom2>]
• Digunakan untuk pengelompokan dari fungsi-fungsi
aggregate
• Yang penting untuk diperhatikan, kolom-kolom yang
disertakan setelah GROUP BY harus sama dengan
kolom-kolom yang dipilih pada setelah klausa SELECT
yg selain fungsi AGGREGATE
GROUP BY <kolom1>
[,<kolom2>]
Contoh
 untuk menampilkan jumlah anggota perjenis kelamin:
SELECT JK, COUNT(*) FROM anggota
GROUP BY JK
 untuk menampilkan rata-rata harga koleksi per kode
penerbit
SELECT idPenerbit, AVG(harga)
FROM koleksi
GROUP BY idPenerbit
HAVING <kondisiAgregate>
• Jika untuk filter query biasa kita menggunakan klause
where, maka klausa having digunakan untuk filter
fungsi-fungsi aggregate.

Contoh
 untuk menampilkan jumlah buku per kode penerbit,
tetapi hanya yang jumlahnya >10 saja yang
ditampilkan.
SELECT idPenerbit, COUNT(*) FROM
koleksi
GROUP BY idPenerbit HAVING COUNT(*)>10
SQL JOIN

Contoh Data:
Tabel Mahasiswa Tabel Dosen:
CROSS JOIN
• Hasil query dengan cross join merupakan hasil gabungan
tiap baris pada masing-masing tabel.

SELECT * FROM Mhs CROSS JOIN Dosen


INNER JOIN
• Hasil query dengan inner join hanya menampilkan baris-baris
yang terdapat relasi antara dua buah tabel.
SELECT * FROM Mhs
LEFT OUTER JOIN Dosen on NIPWali=NIP

hasilnya sama halnya jika tanpa menyertakan klausa OUTER:


SELECT * FROM Mhs
LEFT JOIN Dosen on NIPWali=NIP
RIGHT JOIN
• Menampilkan seluruh baris pada tabel yang disebut pada
bagian kanan, tetapi menampilkan nilai null untuk setiap
kolom yang tidak terdapat relasinya pada tabel sisi kiri
SELECT * FROM Mhs
RIGHT OUTER JOIN Dosen on NIPWali=NIP
RIGHT JOIN
• hasilnya sama halnya jika tanpa menyertakan klausa
OUTER:

SELECT * FROM Mhs


RIGHT JOIN Dosen on NIPWali=NIP

Anda mungkin juga menyukai