SQL LANJUT BASIS DATA. Rajif Agung Yunmar, S.Kom., M.Cs.

52 

Loading....

Loading....

Loading....

Loading....

Loading....

Teks penuh

(1)

SQL LANJUT

BASIS DATA

(2)

PRE TEST

Sebutkan 4 jenis perintah pengolahan data dengan SQL.

Jelaskan!

Jelaskan apa yang disebut dengan operator

perbandingan. Berikan contohnya.

Jelaskan apa yang dimaksud dengan perintah IN dan

NOT IN. Berikan contohnya.

Jelaskan apa yang dimaksud dengan perintah IS NULL.

Berikan contohnya.

(3)

TUJUAN PERKULIAHAN

Mahasiswa dapat melakukan operasi pengolahan data

dengan JOIN.

Mahasiswa dapat melakukan operasi pengolahan data

dengan fungsi-fungsi agregasi.

Mahasiswa dapat mengimplementasikan operasi JOIN

dan fungsi agregasi pada kasus-kasus yang diberikan.

(4)

BAHAN KASUS

Semua materi pada materi ini akan menggunakan basis

data toko makanan.

Terdiri dari 3 buah tabel, yaitu:

Pemasok

Kategori

(5)

BAHAN KASUS

SKEMA ERD

Pemasok Barang

Menyediakan

kd_barang nama_barang harga_jual

kd_pemasok nama_pemasok alamat

Kategori

Memiliki

kd_kategori nama_kategori

tgl_kadaluarsa stok

(6)

BAHAN KASUS

FORMAT DATA

Kolom Tipe Data Kunci

kd_barang CHAR(3) Kunci Primer nama_barang VARCHAR(25)

stok INT

harga_jual FLOAT tgl_kadaluarsa DATE

kd_pemasok CHAR(3) Kunci Tamu kd_kategori CHAR(3) Kunci Tamu

Tabel Barang

Kolom Tipe Data Kunci

kd_pemasok CHAR(3) Kunci Primer nama_pemasok VARCHAR(25)

kota VARCHAR(25)

Tabel Pemasok

Kolom Tipe Data Kunci

kd_kategori CHAR(3) Kunci Primer nama_kategori VARCHAR(25)

(7)

BAHAN KASUS

DATA

kd_pemasok nama_pemasok kota

P22 PT Citra Jaya Bogor P33 PT Kartika Yogya P11 PT Amerta Bandung P44 PT Nidya Tangerang

Tabel Pemasok

kd_kategori nama_kategori K01 Kue Basah K02 Kue Kering K03 Minuman K04 Snack K05 Permen

Tabel Kategori

(8)

BAHAN KASUS

DATA

kd_barang nama_barang stok harga_jual tgl_kadaluarsa kd_pemasok kd_kategori

B001 Kacang Garuda 250 mg 75 18.000 22 Nov 2017 P22 K04

B002 Aqua 1500 ml 50 5.000 14 Sep 2017 P33 K03

B003 Sari Roti Coklat 14 12.500 05 Apr 2017 P11 K01

B004 Biskuat 100 mg 32 2.000 23 Jan 2018 P33 K02

B005 Fanta 600 ml 27 6.000 28 Ags 2017 P44 K03

B006 Mizone 600 ml 16 6.500 12 Ags 2017 P33 K03

B007 Tao Kae Noi 5 15.000 02 Feb 2018 P11 K04

(9)

POKOK BAHASAN

1.

JOIN

– CROSS JOIN – INNER JOIN – NATURAL JOIN – OUTER JOIN

2.

Fungsi Agregasi

– MAX – MIN – COUNT – SUM – AVG

3.

Studi Kasus

(10)

JOIN

Operasi penggabungan dari beberapa tabel untuk

mendapatkan informasi tertentu.

Operasi JOIN merupakan cara yang digunakan sebagai

akibat dari adanya tahapan dekomposisi tabel

(11)

JOIN

CROSS JOIN

INNER JOIN

NATURAL JOIN

OUTER JOIN

LEFT OUTER JOIN

(12)

CROSS JOIN

Operasi JOIN yang paling dasar. Menghasilkan kombinasi

semua baris yang terdapat pada tabel-tabel yang

digabungkan, baik yang memiliki pasangan maupun yang

tidak.

Join jenis ini juga disebut dengan istilah

cartesian product

.

Format umum:

SELECT

kolom

FROM

tabel_1

,

tabel_2

;

(13)

CROSS JOIN

Contoh:

SELECT

*

FROM

pemasok

,

barang

;

(14)

CROSS JOIN

A B α 1 α 2 β 1 A B α 2 β 3 R.A R.B S.A S.B α 1 α 2 α 1 β 3 α 2 α 2 α 2 β 3 β 1 α 2 β 1 β 3

(15)

CROSS JOIN

Agar setiap data pada tabel pemasok hanya berelasi

terhadap data yang sesuai pada tabel barang, maka

kedua tabel dihubungkan melalui kunci tamu-nya.

Contoh:

SELECT

*

FROM

pemasok

,

barang

WHERE

pemasok

.

kd_pemasok

=

barang

.

kd_pemasok

;

Atau

SELECT

*

FROM

pemasok

(16)

CROSS JOIN

Latihan!

Dengan CROSS JOIN, tampilkan data barang dan

kategori yang sesuai.

Dengan CROSS JOIN, tampilkan data barang, kategori,

dan pemasok.

Dengan CROSS JOIN, tampilkan data barang, kategori,

dan pemasok yang harga barang > 5000 dan asal

(17)

INNER JOIN

INNER JOIN adalah tipe penggabungan tabel yang dihubungkan

dengan kriteria tertentu berupa persamaan nilai-nilai atribut.

Umumnya, penggabungan tabel didasarkan pada kunci tamu.

Format umum:

SELECT

kolom

FROM

tabel_1

INNER JOIN

tabel_2

ON

tabel_1.kolom_kunci=tabel_2.kolom_kunci

;

SELECT

kolom

FROM

tabel_1

INNER JOIN

tabel_2

WHERE

tabel_1.kolom_kunci=tabel_2.kolom_kunci

;

(18)

INNER JOIN

A B α 1 α 2 β 1 A B α 2 β 3 R.A R.B S.A S.B α 1 α 2 α 2 α 2 β 1 β 3

(19)

INNER JOIN

Contoh:

SELECT

*

FROM

pemasok

INNER JOIN

barang

ON

pemasok

.

kd_pemasok

=

barang

.

kd_pemasok

;

Atau

SELECT

*

FROM

pemasok

INNER JOIN

barang

(20)

CROSS JOIN VS. INNER JOIN

Jika syntax SQLnya hampir sama, apa perbedaan mendasar

antara operasi CROSS JOIN dan INNER JOIN?

(21)

INNER JOIN

Latihan!

Dengan INNER JOIN, tampilkan data barang dan kategori

yang sesuai.

Dengan INNER JOIN, tampilkan data barang, kategori, dan

pemasok.

Dengan INNER JOIN, tampilkan data barang, dan pemasok

yang stok barang > 10 dan tanggal kadaluarsa barang

diantara April dan September 2017.

(22)

NATURAL JOIN

NATURAL JOIN adalah operasi INNER JOIN yang dilakukan pada

semua atribut yang sama dari kedua tabel (nama dan domainnya).

Pada tabel hasil, atribut-atribut yang sama hanya akan muncul sekali.

Dalam menggabungkan tabel, operasi NATURAL JOIN tidak

memerlukan penyebutan atribut penghubung. Penggabungan tabel

dilakukan otomatis pada atribut yang sama (nama dan domainnya).

NATURAL JOIN dapat digunakan sebagai alat untuk melihat apakah

tabel hasil normalisasi dan pemetaan tabel ERD yang anda lakukan

benar-benar berkualitas.

(23)

NATURAL JOIN

Format umum:

SELECT

kolom

FROM

tabel_1

NATURAL JOIN

tabel_2

;

Contoh:

SELECT

*

FROM

pemasok

(24)

NATURAL JOIN

A B α 1 α 2 β 1 A B α 2 β 3

Tabel R

Tabel S

Tabel R NATURAL JOIN S

R.A R.B S.A S.B

α 1 α 2

α 2 α 2

(25)

NATURAL JOIN

Latihan!

Dengan NATURAL JOIN, tampilkan data barang dan

kategori yang sesuai.

Dengan NATURAL JOIN, tampilkan data barang,

kategori, dan pemasok.

(26)

OUTER JOIN

OUTER JOIN adalah tipe penggabungan tabel yang dihubungkan

dengan kriteria tertentu berupa persamaan nilai-nilai atribut.

Umumnya, penggabungan tabel didasarkan pada kunci tamu.

Operasi OUTER JOIN memperbolehkan salah anggota tabel untuk

tidak memiliki pasangan pada tabel yang digabungkan.

OUTER JOIN:

LEFT OUTER JOIN

RIGHT OUTER JOIN

(27)

LEFT OUTER JOIN

Menampilkan semua data pada tabel 1 (kiri) meskipun

data tersebut tidak memiliki pasangan pada tabel 2

(kanan).

Format umum:

SELECT

kolom

FROM

tabel_1

(28)

LEFT OUTER JOIN

+---+---+---+---+---+---+---+---+ | kd_kategori | nama_kategori | kd_barang | nama_barang | harga_jual | tgl_kadaluarsa | kd_pemasok | kd_kategori | +---+---+---+---+---+---+---+---+ | K01 | Kue Basah | B003 | Sari Roti Coklat | 12500 | 2017-04-05 | P11 | K01 | | K02 | Kue Kering | B004 | Biskuat 100 mg | 2000 | 2018-01-23 | P33 | K02 | | K03 | Minuman | B002 | Aqua 1500 ml | 5000 | 2017-09-14 | P33 | K03 | | K03 | Minuman | B005 | Fanta 600 ml | 6000 | 2017-08-28 | P44 | K03 | | K03 | Minuman | B006 | Mizone 600 ml | 6500 | 2017-08-12 | P33 | K03 | | K04 | Snack | B001 | Kacang Garuda 250 mg | 18000 | 2017-11-22 | P22 | K04 | | K04 | Snack | B007 | Tao Kae Noi | 15000 | 2018-02-02 | P11 | K04 | | K05 | Permen | NULL | NULL | NULL | NULL | NULL | NULL | +---+---+---+---+---+---+---+---+

Contoh:

SELECT

*

FROM

kategori

LEFT OUTER JOIN

barang

(29)

RIGHT OUTER JOIN

Menampilkan semua data pada tabel 2 (kanan)

meskipun data tersebut tidak memiliki pasangan pada

tabel 1 (kiri).

Format umum:

SELECT kolom FROM tabel_1

(30)

FUNGSI AGREGASI

Fungsi agregasi adalah sebuah teknik dalam SQL yang

digunakan untuk mendapatkan nilai tertentu dari data

yang telah dikelompokkan.

Pengelompokan data dapat didasarkan pada satu

(31)

FUNGSI AGREGASI

Jenis-jenis fungsi agregasi.

MAX, mencari data terbesar dari sekelompok data.

MIN, mencari data terkecil dari sekelompok data.

COUNT, mencari cacah data dari sekelompok data.

SUM, mencari jumlah dari sekumpulan data numerik.

(32)

FUNGSI AGREGASI

Format umum:

SELECT Fungsi_Agregasi

(<

kolom

>)

FROM

<tabel>

GROUP BY

<

kolom

>;

SELECT

Fungsi_Agregasi(<

kolom

>) AS

'Alias',kolom_n

FROM

<tabel>

GROUP BY

<

kolom

>;

(33)

FUNGSI AGREGASI TANPA PENGELOMPOKAN

Penggunaan fungsi agregasi tanpa pengelompokan

(GROUP BY) dapat diartikan sebagai pengelompokan

terhadap seluruh data pada tabel.

Contoh:

SELECT MAX

(

thnakademik

)

FROM

kuliah

;

+---+

| MAX(thnakademik) |

+---+

| 2014/2015 |

+---+

hasil agregasi

(34)

FUNGSI AGREGASI PENGELOMPOKAN 1 KOLOM

Penggunaan klausa GROUP BY pada kolom tertentu

akan mengelompokkan record yang memiliki nilai sama

menjadi satu kelompok.

Setelah itu, barulah fungsi agregasi akan dilakukan

untuk masing-masing kelompok data.

Contoh:

SELECT MAX

(

thnakademik

),

nilai

FROM

kuliah

(35)

FUNGSI AGREGASI PENGELOMPOKAN 1 KOLOM

+---+---+---+---+ | nim | kodemk | thnakademik | nilai | +---+---+---+---+ | 123 | IF2240R | 2013/2014 | C | | 123 | IF2240R | 2014/2015 | A | | 123 | IF3110R | 2014/2015 | A | | 123 | IF4150R | 2014/2015 | B | | 456 | IF3110R | 2011/2012 | C | | 456 | IF3110R | 2012/2013 | C | | 456 | IF3110R | 2014/2015 | A | | 456 | IF4150R | 2014/2015 | A | | 789 | IF2240R | 2011/2012 | D | | 789 | IF2240R | 2012/2013 | C | | 789 | IF2240R | 2013/2014 | C | | 789 | IF2240R | 2014/2015 | A | +---+---+---+---+

(36)

FUNGSI AGREGASI PENGELOMPOKAN 1 KOLOM

+---+---+ | MAX(thnakademik) | nilai | +---+---+ | 2014/2015 | A | | 2014/2015 | B | | 2013/2014 | C | | 2011/2012 | D | +---+---+ +---+---+---+---+

| nim | kodemk | thnakademik | nilai | +---+---+---+---+ | 789 | IF2240R | 2014/2015 | A | | 456 | IF4150R | 2014/2015 | A | | 456 | IF3110R | 2014/2015 | A | | 123 | IF3110R | 2014/2015 | A | | 123 | IF2240R | 2014/2015 | A | | 123 | IF4150R | 2014/2015 | B | | 456 | IF3110R | 2011/2012 | C | | 456 | IF3110R | 2012/2013 | C | | 789 | IF2240R | 2012/2013 | C | | 789 | IF2240R | 2013/2014 | C | | 123 | IF2240R | 2013/2014 | C | | 789 | IF2240R | 2011/2012 | D | +---+---+---+---+

hasil agregasi

(37)

FUNGSI AGREGASI PENGELOMPOKAN 2 KOLOM

Contoh:

SELECT MIN

(

thnakademik

),

nim

,

kodemk

FROM

kuliah

(38)

FUNGSI AGREGASI PENGELOMPOKAN 2 KOLOM

+---+---+---+---+ | nim | kodemk | thnakademik | nilai | +---+---+---+---+ | 123 | IF2240R | 2013/2014 | C | | 123 | IF2240R | 2014/2015 | A | | 123 | IF3110R | 2014/2015 | A | | 123 | IF4150R | 2014/2015 | B | | 456 | IF3110R | 2011/2012 | C | | 456 | IF3110R | 2012/2013 | C | | 456 | IF3110R | 2014/2015 | A | | 456 | IF4150R | 2014/2015 | A | | 789 | IF2240R | 2011/2012 | D | | 789 | IF2240R | 2012/2013 | C | | 789 | IF2240R | 2013/2014 | C | | 789 | IF2240R | 2014/2015 | A | +---+---+---+---+

(39)

FUNGSI AGREGASI PENGELOMPOKAN 2 KOLOM

+---+---+---+ | MIN(thnakademik) | nim | kodemk | +---+---+---+ | 2013/2014 | 123 | IF2240R | | 2014/2015 | 123 | IF3110R | | 2014/2015 | 123 | IF4150R | | 2011/2012 | 456 | IF3110R | | 2014/2015 | 456 | IF4150R | | 2011/2012 | 789 | IF2240R | +---+---+---+ +---+---+---+---+ | nim | kodemk | thnakademik | nilai | +---+---+---+---+ | 123 | IF2240R | 2013/2014 | C | | 123 | IF2240R | 2014/2015 | A | | 123 | IF3110R | 2014/2015 | A | | 123 | IF4150R | 2014/2015 | B | | 456 | IF3110R | 2011/2012 | C | | 456 | IF3110R | 2012/2013 | C | | 456 | IF3110R | 2014/2015 | A | | 456 | IF4150R | 2014/2015 | A | | 789 | IF2240R | 2011/2012 | D | | 789 | IF2240R | 2012/2013 | C | | 789 | IF2240R | 2013/2014 | C | | 789 | IF2240R | 2014/2015 | A | +---+---+---+---+

hasil agregasi

(40)

FUNGSI AGREGASI PENGELOMPOKAN N-KOLOM

Bagaimana dengan fungsi agregasi dengan

pengelompokan pada N buah kolom?

(41)

LATIHAN

+---+---+---+---+ | nim | kodemk | thnakademik | nilai | +---+---+---+---+ | 123 | IF2240R | 2013/2014 | C | | 123 | IF2240R | 2014/2015 | A | | 123 | IF3110R | 2014/2015 | A | | 123 | IF4150R | 2014/2015 | B | | 456 | IF3110R | 2011/2012 | C | | 456 | IF3110R | 2012/2013 | C | | 456 | IF3110R | 2014/2015 | A | | 456 | IF4150R | 2014/2015 | A | | 789 | IF2240R | 2011/2012 | D | | 789 | IF2240R | 2012/2013 | C | | 789 | IF2240R | 2013/2014 | C | | 789 | IF2240R | 2014/2015 | A | +---+---+---+---+

Tabel SIAKAD

Pertanyaan

1.

Tampilkan nilai terbaik yang didapatkan

oleh seorang mahasiswa untuk mata kuliah

tertentu.

2.

Tampilkan matakuliah dengan nilai-nilai

terburuk yang pernah ditempuh oleh

mahasiswa dengan nim 123.

3.

Tampilkan jumlah cacah nilai yang pernah

diberikan untuk matakuliah tertentu

(42)

KLAUSA HAVING

Melakukan filter terhadap hasil daripada fungsi

agregasi.

Format umum:

SELECT Fungsi_Agregasi

(<

kolom

>)

FROM

tabel

GROUP BY

<

kolom

>

(43)

KLAUSA HAVING

Contoh : tampilkan data mahasiswa yang pernah

mengulang sebuah matakuliah.

SELECT COUNT

(

kodemk

)

AS

jml_mengulang

,

nim

,

kodemk

FROM

kuliah

GROUP BY

nim

,

kodemk

(44)

KLAUSA HAVING

Tampilkan data mahasiswa yang pernah mengulang

sebuah matakuliah. Urutkan datanya dari yang paling

banyak mengulang.

SELECT

*

FROM

(

SELECT COUNT

(

kodemk

)

AS

jml_mengulang

,

nim

,

kodemk

FROM

kuliah

GROUP BY

nim

,

kodemk

HAVING COUNT

(

kodemk

) >=

2

)

x

(45)

KLAUSA HAVING

Tampilkan data mahasiswa yang pernah mengulang

sebuah matakuliah. Urutkan datanya dari yang paling

banyak mengulang.

+---+---+---+ | jml_mengulang | nim | kodemk | +---+---+---+ | 4 | 789 | IF2240R | | 3 | 456 | IF3110R | | 2 | 123 | IF2240R | +---+---+---+

(46)

KLAUSA HAVING VS. WHERE

Klausa HAVING digunakan sebagai kondisi filter dalam

fungsi agregasi.

Klausa WHERE digunakan sebagai kriteria penentu

dalam filter pada perintah SELECT.

(47)

STUDI KASUS

Perhatikan skema ERD berikut ini.

Pemasok Barang

Menyediakan

kd_barang nama_barang harga_jual

kd_pemasok nama_pemasok alamat

Kategori

Memiliki

kd_kategori nama_kategori

tgl_kadaluarsa stok

(48)

STUDI KASUS

Jawablah pertanyaan-pertanyaan berikut dengan SQL.

1.

Tampilkan informasi barang dan kategori dari barang yang memiliki

harga barang dibawah Rp.

10.000,-2.

Tampilkan informasi barang dan pemasok pada barang dengan

kategori “Minuman”.

3.

Tampilkan informasi rata-rata jumlah stok barang pada tiap kategori.

4.

Tampilkan informasi barang yang masa kadaluarsanya akan jatuh

diantara bulan Mei s.d September 2017.

(49)

STUDI KASUS

Jawablah pertanyaan-pertanyaan berikut dengan SQL.

5.

Tampilkan informasi barang dari masing-masing kategori yang memiliki

stok paling banyak.

6.

Tampilkan informasi barang dari kategori mana yang memiliki rata-rata

stok paling banyak.

7.

Tampilkan informasi pemasok pada tiap kategori yang harga

barangnya paling mahal.

8.

Tampilkan informasi pemasok pada tiap kategori yang masa

kadaluarsa barangnya jatuh pada bulan Agustus 2017.

(50)

STUDI KASUS

Berikan 5 contoh masalah lain. Selesaikan dengan SQL.

Buat PPT dan presentasikan secara bergiliran!

Kelompok lain boleh bertanya mengenai permasalahan

lain yang mungkin terjadi, kelompok presenter

(51)
(52)

PR

Masukkan semua data riil pada tugas anda ke dalam basis

data.

Carilah minimal 10 buah persoalan atau pertanyaan yang

mungkin muncul dalam kasus tugas anda. Semakin kompleks dan

tepat jawaban anda, maka nilai tugas akan makin tinggi.

Buatlah solusinya menggunakan SQL.

Susun dalam sebuah laporan beserta screenshotnya, dan

presentasikan!

Figur

Memperbarui...

Referensi

Memperbarui...

Related subjects :