sql -- dml

20
SQL -- DML Pertemuan 7

Upload: amable

Post on 22-Jan-2016

108 views

Category:

Documents


2 download

DESCRIPTION

SQL -- DML. Pertemuan 7. WHERE. Klausa ini biasanya digunakan untuk:. Filter ( penyaringan ) data. Merelasikan/menghubungkan query yang disusun lebih dari satu tabel. Penerapannya adalah dengan memasukkan suatu ekspresi kondisi setelah klausa WHERE: WHERE - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: SQL -- DML

SQL -- DMLPertemuan 7

Page 2: SQL -- DML

WHERE Klausa ini biasanya digunakan untuk:

1.1. Filter (penyaringan) data. Filter (penyaringan) data.

2.2. Merelasikan/menghubungkan query Merelasikan/menghubungkan query yang disusun lebih dari satu tabel.yang disusun lebih dari satu tabel.

Penerapannya adalah dengan Penerapannya adalah dengan memasukkan suatu ekspresi kondisi memasukkan suatu ekspresi kondisi setelah klausa WHERE:setelah klausa WHERE:

WHERE <kondisi>WHERE <kondisi> Jika Jika <kondisi><kondisi> lebih dari satu, maka bisa lebih dari satu, maka bisa

ditambahkan dengan ditambahkan dengan ANDAND atau atau OROR (sesuai dengan kebutuhan).(sesuai dengan kebutuhan).

Page 3: SQL -- DML

WHERE <KONDISI> UNTUK FILTER

Where untuk filter atau pencarian data di dalam SQL bisa dalam beberapa bentuk ekspresi, yakni:

operasi pembandingan operasi pendekatan pola operasi pembandingan dengan sekumpulan nilai

Page 4: SQL -- DML

OPERASI PEMBANDINGAN

Operasi:= < <= >= > <> is= < <= >= > <> is

Khusus untuk pembanding Khusus untuk pembanding ISIS, nilai yang , nilai yang diisikan adalah diisikan adalah null, null, yakni sebuah nilai yakni sebuah nilai yang belum berisi nilai. yang belum berisi nilai.

nilai nilai null null tidak sama tidak sama dengan nilai 0 pada dengan nilai 0 pada tipe numerik ataupun string kosong pada tipe numerik ataupun string kosong pada tipe string tipe string

Page 5: SQL -- DML

OPERASI PEMBANDINGANContoh menampilkan anggota yang berjenis kelamin laki-menampilkan anggota yang berjenis kelamin laki-

laki:laki: SELECT * FROM Anggota WHERE JK="L"

menampilkan Anggota yang tahun kelahirannya menampilkan Anggota yang tahun kelahirannya lebih dari 1985lebih dari 1985 SELECT * FROM Anggota WHERE year(TglLahir) > 1985

menampilkan Anggota wanita yang lahir di bulan Juli: menampilkan Anggota wanita yang lahir di bulan Juli:

SELECT * FROM anggota WHERE JK="P" AND month(TglLahir)=6

menampilkan idKoleksi yang belum dikembalikan menampilkan idKoleksi yang belum dikembalikan (TglKembali belum terisi)(TglKembali belum terisi)

SELECT * FROM Peminjaman WHERE TglKembali IS NULL

Page 6: SQL -- DML

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 simbol % artinya mewakili 0 s/d tak terhingga dari sembarang karakter terhingga dari sembarang karakter

simbol _ artinya mewakili 1 sembarang simbol _ artinya mewakili 1 sembarang karakterkarakter

Page 7: SQL -- DML

OPERASI LIKE (PENDEKATAN POLA)

Contoh menampilkan anggota yang nama depannya menampilkan anggota yang nama depannya

"Budi""Budi":SELECT * FROM anggota WHERE Nama LIKE "Budi%"

menampilkan Anggota yang huruf ketiga menampilkan Anggota yang huruf ketiga namanya adalah “d”:namanya adalah “d”:

SELECT * FROM anggota WHERE Nama LIKE "__d%"

menampilkan koleksi yang judulnya terdapat menampilkan koleksi yang judulnya terdapat kata “pemrograman”:kata “pemrograman”:

SELECT * FROM koleksi WHERE Judul LIKE "%pemrograman%"

Page 8: SQL -- DML

OPERASI IN ATAU NOT IN

Ekspresi ini digunakan untuk membandingkan dengan sebuah kumpulan nilai

Kumpulan nilai bisa berupa:

nilai-nilai yang diisikannilai-nilai yang diisikan query tunggal query tunggal

query yg hasilnya hanya terdapat sebuah query yg hasilnya hanya terdapat sebuah kolom sajakolom saja

Page 9: SQL -- DML

OPERASI IN ATAU NOT IN

Contoh

Nilai-nilai yang diisikan, Nilai-nilai yang diisikan, maksudnya kita maksudnya kita sendiri yang mengisikan nilai-nilai tersebut di sendiri yang mengisikan nilai-nilai tersebut di dalam query kita.dalam query kita.

menampilkan koleksi yang jenisnya buku dan menampilkan koleksi yang jenisnya buku dan majalah (idTipeKoleksi=1 atau 2):majalah (idTipeKoleksi=1 atau 2):

SELECT * FROM koleksi WHERE idTipeKoleksi IN (1, 2)

menampilkan anggota yang selain mahasiswa menampilkan anggota yang selain mahasiswa atau dosen (idJenisAnggota selain 2 dan 3)atau dosen (idJenisAnggota selain 2 dan 3)

SELECT * FROM anggota WHEREIDJenisAnggota NOT IN (1, 3)

Page 10: SQL -- DML

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

ContoContohh menampilkan anggota yang belum pernah menampilkan anggota yang belum pernah meminjam buku sama sekali:meminjam buku sama sekali:

SELECT * FROM anggotaWHERE id NOT IN (SELECT DISTINCT idAnggota FROM Peminjaman)

menampilkan koleksi yang sedang dipinjam: menampilkan koleksi yang sedang dipinjam:

SELECT * FROM koleksi WHERE idKoleksi IN (SELECT idKoleksi FROM Peminjaman WHERE TglKembali is NULL)

Page 11: SQL -- DML

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

Page 12: SQL -- DML

WHERE <KONDISI> UNTUK RELASI

Contoh menampilkan idKoleksi, judul dan nama pengarangmenampilkan idKoleksi, judul dan nama pengarang

idKoleksi idKoleksi dan dan judul judul bisa diambil dari bisa diambil dari tabel koleksitabel koleksi. Tetapi, di . Tetapi, di tabel koleksi tabel koleksi tidak terdapat tidak terdapat field field nama pengarangnama pengarang. Yang ada . Yang ada hanya hanya idPengarangidPengarang. Oleh sebab itu, supaya bisa menampilkan . Oleh sebab itu, supaya bisa menampilkan informasi yang akurat, informasi yang akurat, perlu direlasikan perlu direlasikan antara tabel antara tabel Koleksi Koleksi dg tabel Pengarangdg tabel Pengarang..SELECT idKoleksi, Judul, Nama FROM Koleksi,

Pengarang WHERE idPengarang=id

idPengarang=ididPengarang=id adalah untuk adalah untuk relasi relasi antara antara tabel Koleksi tabel Koleksi dan dan tabel Pengarang. tabel Pengarang. Tanpa relasi ini, hasil query akan Tanpa relasi ini, hasil query akan menampilkan seluruh pasangan baris data Koleksi di tiap baris menampilkan seluruh pasangan baris data Koleksi di tiap baris Pengarang, yg tentu saja bukan informasi yang benar.Pengarang, yg tentu saja bukan informasi yang benar.

Page 13: SQL -- DML

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

Page 14: SQL -- DML

WHERE <KONDISI> UNTUK RELASI

Contoh menampilkan daftar idKoleksi, judul koleksi dan menampilkan daftar idKoleksi, judul koleksi dan

harganya yang dipinjam dg nomor anggota: 551, harganya yang dipinjam dg nomor anggota: 551, diurutkan berdasarkan judul koleksi:diurutkan berdasarkan judul koleksi:

SELECT kl.idKoleksi, kl.judul, kl.harga FROM koleksi kl, peminjaman pj, anggota agWHERE pj.idkoleksi=kl.idkoleksi AND pj.idAnggota=ag.id AND ag.idAnggota = 551 ORDER BY kl.judul

Page 15: SQL -- DML

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(*) - COUNT(*) mendapatkan jumlah baris mendapatkan jumlah baris- SUM(kolom) - SUM(kolom) mendapatkan hasil penjumlahan mendapatkan hasil penjumlahan kolomkolom- MAX(kolom) - MAX(kolom) mendapatkan nilai tertinggi mendapatkan nilai tertinggi- MIN(kolom) - MIN(kolom) mendapatkan nilai terendah mendapatkan nilai terendah- AVG(kolom) - AVG(kolom) mendapatkan nilai rata-rata mendapatkan nilai rata-rata

Page 16: SQL -- DML

FUNGSI-FUNGSI AGREGATE

Contoh untuk menampilkan jumlah seluruh anggota: untuk menampilkan jumlah seluruh anggota:

SELECT COUNT(*) FROM Anggota untuk menampilkan tahun kelahiran anggota untuk menampilkan tahun kelahiran anggota

tertua: tertua: SELECT MIN(year(TglLahir)) FROM anggota

Page 17: SQL -- DML

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

Page 18: SQL -- DML

GROUP BY <KOLOM1> [,<KOLOM2>]

Contoh untuk menampilkan jumlah anggota perjenis untuk menampilkan jumlah anggota perjenis

kelamin:kelamin: SELECT JK, COUNT(*) FROM anggota GROUP BY JK

untuk menampilkan rata-rata harga koleksi per untuk menampilkan rata-rata harga koleksi per kode penerbitkode penerbit

SELECT idPenerbit, AVG(harga) FROM koleksi GROUP BY idPenerbit

Page 19: SQL -- DML

HAVING <KONDISIAGREGATE>

Jika untuk filter query biasa kita menggunakan klause where, maka klausa having digunakan untuk filter fungsi-fungsi aggregate.

ContoContohh untuk menampilkan jumlah buku per kode untuk menampilkan jumlah buku per kode penerbit, tetapi hanya yang jumlahnya >10 saja penerbit, tetapi hanya yang jumlahnya >10 saja yang ditampilkan.yang ditampilkan.

SELECT idPenerbit, COUNT(*) FROM koleksi

GROUP BY idPenerbit HAVING COUNT(*)>10

Page 20: SQL -- DML

BETWEEN Operator BETWEEN … AND memilih data antara

dua nilai. Nilai dapat berupa angka, teks, atau tanggal.

SINTAKSSELECT nama_kolom FROM nama_tabelWHERE nama_kolomBETWEEN nilai1 AND nilai2

Contoh :Select kode_pas, kode_dokFrom berobatWhere tgl_berobatBetween ‘2011-04-01’ AND ‘2011-04-03’;