Anda di halaman 1dari 36

Pertemuan ke-15

Sub Materi:
• VIEWS DAN CONTROL FLOW FUNCTION
• RELATIONSHIP
• JOIN
VIEWS &
CONTROL FLOW FUNCTION
Views
• View dapat diartikan sebagai tabel virtual
• View merupakan tabel logis yang dibangun dari operasi SELECT dan
JOIN dari database yang sebenarnya. Dengan kata lain, database view
merupakan ilusi (kembar tapi beda) dari tabel sebenarnya.
Tujuan
• untuk mempermudah penulisan query,
• untuk keamanan yang dapat menyembunyikan beberapa kolom yang
bersifat rahasia,
• digunakan untuk mempercepat proses menampilkan data terutama
jika pernyataan query yang dijalankan tersebut secara berulang.
Kelebihan View
• View mempermudah query yang kompleks
Bila ingin query data dari 2 atau lebih tabel, kita membutuhkan JOIN. Setiap operasi query
yang dibuat ke database mengharuskan kita menulis JOIN lagi dan lagi. Oleh karena itu,
View pertama kali dibuat dengan menggunakan JOIN, setelah itu hanya perlu dilakukan
operasi yang diinginkan saja kepada View tersebut, tidak perlu ke database langsung.
• View digunakan untuk mekanisme keamanan
View dibangun dengan memilih beberapa kolom dari beberapa tabel yang diinginkan,
tanpa perlu diberikan akses penuh ke database. Hal ini dapat mencegah user untuk
mengambil informasi penting dari database sebenarnya.
• View digunakan untuk menampilkan komputasi data
Bayangkan kita memiliki tabel dengan nama orderDetails dengan tiga kolom yaitu id,
kuantitas order, dan harga per order. Perhitungan harga total order tidak baik bila disimpan
di dalam database langsung walaupun data tersebut dibutuhkan. Daripada harga total
order dihitung terus menerus dalam setiap query, kita bisa menghitung cukup 1x saja dan
menyimpan hasilnya dalam database View.
Kekurangan View
• Performa
Pada dasarnya, view dibuat dengan menjalankan tambahan query dari
database yang ada, apalagi bila view dibentuk dari view yang lainnya.
• Pembatasan pengubahan data
Semakin banyaknya tabel yang berkolaborasi untuk membentuk view,
semakin ketat peraturan untuk mengupdate data dari suatu view.
Syntax

CREATE VIEW <nama_view> AS <operasi_query>


Contoh

CREATE VIEW BigSalesOrder AS


SELECT orderNumber, ROUND(total,2) as total
FROM saleperorder
WHERE total > 60000;
Contoh

CREATE VIEW sup_orders AS


SELECT suppliers.supplier_id, orders.quantity, orders.price
FROM suppliers
INNER JOIN orders ON suppliers.supplier_id = orders.supplier_id
WHERE suppliers.supplier_name = 'IBM';
Contoh
CREATE VIEW customerOrders AS
SELECT d.orderNumber, customerName, SUM(quantityOrdered *
priceEach) total
FROM orderDetails d
INNER JOIN orders o ON o.orderNumber = d.orderNumber I
NNER JOIN customers c ON c.customerNumber =
c.customerNumber GROUP BY d.orderNumber
ORDER BY total DESC;
Control Flow Function
• MySQL memungkinkan untuk melakukan proses logika sederhana
terkait flow statement SQL
• Jika terdapat studi kasus yang komplek fungsi built in tidak dapat
menanganinya, disarankan berada di logika aplikasi.
• Control flow yang tersedia di MySQL antara lain: CASE, IF, IFNULL, dan
NULLIF.
IF
• Fungsi If hampir sama dengan Case, namun If hanya dengan kondisi
true dan false (Boolean) saja
Bentuk umum fungsi if ini adalah.
Contoh

SELECT id_camaba, nama, email, jenis_kelamin,


IF (jenis_kelamin = 'Laki-laki', 'Pria', 'Wanita') AS casting_gender
FROM camaba
LIMIT 15;
Case
• Case berfungsi untuk memilih kondisi seperti pada logika aplikasi.
Case harus diikuti dengan When.
• Bentuk umum Case sebagai berikut.
Contoh
• Misalkan ingin mengambil data calon mahasiswa, namun Ketika
jenis_kelamin ‘Laki-laki’ akan ditampilkan mendi ‘Pria’ dan
jenis_kelamin ‘Perempuan’ akan ditampilkan menjadi ‘Wanita’
IFNULL
• Digunakan untuk mengembalikan nilai berdasarkan spesifik ekspresi
yang bernilai NULL.
• Bentuk perintah dasar secara umum yaitu
Contoh
• penggunaan dengan studi kasus jika id_prodi_pilihan2 sama dengan
kosong akan ditampilkan menjadi “Prodi Dua Kosong” sebagai
berikut:

SELECT id_camaba, nama, email,


IFNULL(id_prodi_pilihan2, 'Prodi Dua Kosong') AS id_prodi_pilihan2
FROM camaba
LIMIT 10;
NULLIF
• Digunakan untuk mengembalikan nilai NULL jika
dengan<expression2>, dengan kata lain akan menghasilkan
<expression1>.
• Dan syntaxnya secara umum yaitu.
Contoh

• Contoh penggunaan, dengan kondisi jika 35 sama dengan kode_provinsi


sebagai berikut:

SELECT id_camaba, nama, kode_provinsi,


NULLIF(35, kode_provinsi) AS pengecekan
FROM camaba
LIMIT 15;
RELATIONSHIP
RELASI
• Relasi menunjukkan adanya hubungan data dari satu tabel dengan tabel
yang lain
• Hal ini digunakan untuk membuat struktur database menjadi lebih baik dan
mudah untuk melakukan manajemen data.
• Mendefinisikan relasi menggunakan FOREIGN KEY
• Hubungan / relasi ini dilihat berdasarkan jumlah baris yang saling
terhubung antar tabel dalam suatu database
• Relasi yang terdapat dalam database yaitu
• one to one relationship,
• one to many relationship, dan
• many to many relationship.
One to One
• Relasi one to one adalah relasi yang mana setiap satu baris data pada
tabel pertama hanya berhubungan dengan satu baris pada tabel
kedua.
• Satu record dalam tabel A hanya dapat terhubung dengan satu record
dalam tabel B dan begitu juga sebaliknya, satu record dalam tabel B
hanya dapat terhubung dengan satu record dalam tabel A.
• Pada praktiknya, tabel dengan hubungan seperti ini jarang ditemukan
kecuali dalam beberapa kasus seperti: pemisahan readable dan
writeable tables, pemisahan berdasarkan frequently dan infrequently
baris dalam tabel, dan lain sebagainya.
• Bila tidak terdapat _constraint _tertentu dalam database, tabel
diatas tersebut pada umumnya akan digabungkan sebagai berikut.
One to Many
• Satu baris dalam tabel A dapat berhubungan dengan banyak baris
dalam tabel B, tapi tidak sebaliknya.

Dimana sebaiknya foreign key dipasang? Di kolom pada tabel yang "many".
Many to Many
• Satu record dalam tabel A dapat terhubung dengan banyak record
dalam tabel B dan satu record dalam tabel B dapat terhubung dengan
banyak record dalam tabel A.
• Lalu, di tabel mana dapat kita pasang Foreign Key?
• Pada akhirnya, many-to-many relationship table akan diubah
menjadi dua buah one-to-many relationship table.
JOIN
Pengertian JOIN
• Join merupakan operasi sederhana untuk menggabungkan 2 atau
lebih tabel menjadi 1 temporary tabel yang selanjutnya dapat
dijalankan berbagai macam operasi querying.
Macam JOIN
• Inner Join = hanya mengembalikan data yang ada di kedua table

SELECT <column> FROM <table1> INNER JOIN <table2> ON <equality criteria> WHERE <search
criteria> ...

• Outer Join = mengembalikan berbagai macam data yang ada di kedua table

SELECT <column> FROM <table1> LEFT OUTER JOIN <table2> ON <equality criteria> WHERE <search
criteria> ...

Selain itu, juga ada cara dasar untuk join tabel seperti berikut:

SELECT albums.name, albums.year, artists.name FROM albums, artists;


Inner Join
SELECT * FROM albums AS al JOIN artists AS ar ON al.artist_id = ar.artists_id;
Outer Join
Terdapat 3 macam Outer Join:
• Left Outer Join
• Right Outer Join
• Full Outer Join
Left Outer Join / Left Join
• Operasi Join tipe ini akan menampilkan semua isi tabel sisi kiri, walaupun
data di pasangan joinnya yg disisi kanan nilainya tidak sama ataupun
bernilai null.
Contoh script left join(left outer join)
select d.Area_id, d.nama_area, d.luas_area, p.penduduk_id,
p.nama_penduduk from cpenduduk p left outer join carea d on
d.area_id=p.area_id
Penjelasan :
• Operasi left join akan menampilkan semua isi tabel sisi kiri, walaupun data
di pasangan joinnya yang disisi kanan nilainya tidak sama ataupun berisi
null.
Right Outer Join / Right Join
• Operasi Join tipe ini akan menampilkan semua isi tabel sisi Kanan,
walaupun data di pasangan joinnya yg disisi kiri nilainya tidak sama
ataupun bernilai null.
Contoh script right join(right outer join)
select d.Area_id, d.nama_area, d.luas_area, p.penduduk_id,
p.nama_penduduk from cpenduduk p right outer join carea d on
d.area_id=p.area_id
Penjelasan :
• Operasi right join akan menampilkan semua isi tabel sisi kanan, walaupun
data di pasangan joinnya yang di sisi kiri nilainya tidak sama ataupun berisi
null.
Full Outer Join / Full Join
• Operasi Join tipe ini akan menampilkan semua isi tabel sisi kiri,
walaupun data di pasangan joinnya yg disisi kanan nilainya null.dan
sebaliknya.
Contohnya script Full join
select d.area_id, d.nama_area, d.luas_area, p.penduduk_id,
p.nama_penduduk from cpenduduk p full join carea d on p.area_id =
d.area_id
Penjelasan :
Operasi full join akan menampilkan semua isi tabel sisi kiri, walaupun
data di pasangan joinnya yang disisi kanan nilainya null dan sebaliknya.
Cross Join
• Operasi Join tipe ini akan menampilkan semua isi tabel sisi Kiri akan
memiliki pasangan semua data disisi kanan. Banyaknya Record Cross Join =
jumlah record tabel pertama x jumlah record tabel kedua
Contohnya script cross join
select d.area_id, d.nama_area, d.luas_area, p.penduduk_id,
p.nama_penduduk from cpenduduk p cross join carea d
Penjelasan :
Operasi cross join akan menampilkan semua isi tabel sisi sebelah kiri akan
memiliki pasangan semua data sisi sebelah kanan. Banyaknya record cross
join = jumlah record tabel pertama X jumlah record tabel kedua.
TUGAS
1. Tambahkan relasi antar table ke semua tabel pada tugas latihan
sebelumnya
2. Jelaskan mengenai relas antar tabel yang diberikan
3. Buat tabel view untuk menampilkan data product berikut nama kategori
4. Buat table view dari nomor 3 untuk data dengan status selain yang
disetujui
5. Buat table view untuk menampilkan jumlah barang untuk setiap kategori
6. Kumpulkan query dan screenshot kedalam PDF dan kumpulkan ke aplikasi
sinauo

Anda mungkin juga menyukai