• Tidak ada hasil yang ditemukan

LAPORAN PRAKTIKUM 5 BASIS DATA RELASI DA

N/A
N/A
Protected

Academic year: 2018

Membagikan "LAPORAN PRAKTIKUM 5 BASIS DATA RELASI DA"

Copied!
39
0
0

Teks penuh

(1)

LAPORAN MODUL V

PRAKTIKUM BASIS DATA

Disusun untuk Memenuhi Matakuliah Praktikum Basis Data Dibimbing oleh Triyanna Widyaningtyas, S.T., M.T.

Oleh:

Dwitha Fajri Ramadhani

160533611410

Ika Damayanti

160533611505

S1 PTI’16 OFF B

UNIVERSITAS NEGERI MALANG FAKULTAS TEKNIK

JURUSAN TEKNIK ELEKTRO

(2)

1. Judul

RELASI & JOIN

2. Dasar Teori

2.1Relationship

Relationship adalah suatu hubungan antara beberapa entitas. Konsep ini sangat penting

sekali di dalam basis data, dimana memungkinkan entitas – entitas untuk saling berhubungan satu sama lain.

Di dalam sebuah relationship, primary key memilik peran penting dalm mengaitkan entitas. Saelain itu, primary key juga digunakan untuk mendefinisikan batasan keterhubungan.

Jenis-jenis relasi entitas :

2.1.1 Satu ke satu (one to one)

Setiap data pada entitas A berhubungan dengan maksimal satu data pada entitas B, begitu pula sebaliknya.

2.1.2 Satu ke banyak (one to many) atau banyak ke satu (many to one)

Setiap data pada entitas A bisa berhubungan dengan banyak data pada entitas B, tetapi data pada entitas B berhubungan maksimal hanya dengan sebuah data di A.

2.1.3 Banyak ke banyak (many to many)

Setiap data pada entitas A bisa berhubungan dengan banyak data pada entitas B, demikian pula sebaliknya.

2.2Operator dasar pada MySQL

2.2.1 OPERATOR AS

AS biasa digunakan untuk menampilkan label kolom dengan nama lain sehingga yang akan muncul dalam hasil query bukan nama asli kolom, tetapi nama yang mungkin lebih sesuai dan mudah dimengerti. AS digunakan setelah nama kolom yang akan diganti yang kemudian diikuti dengan nama penggantinya. Sintaks: SELECT [NAMA KOLOM] AS [NAMA KOLOM PENGGANTI] FROM [NAMA TABEL];

2.2.2 OPERATOR AND

(3)

TABEL] WHERE [NAMA KOLOM] = ‘[PENCARIAN 1]’ AND [NAMA KOLOM] = ‘[PENCARIAN 2]’;

2.2.3 OPERATOR OR

Fungsi operator OR mirip dengan operator AND, namun jika operator AND menampilkan data yang harus memenuhi kedua syarat yang dibutuhkan, operator OR akan menampilkan data yang hanya memenuhi salah satu dari kedua syarat yang ditentukan. Sintaks : SELECT * FROM [NAMA TABEL] WHERE [NAMA KOLOM] = ‘[PENCARIAN 1]’ OR [NAMA KOLOM] =

‘[PENCARIAN 2]’;

2.2.4 OPERATOR BETWEEN

BETWEEN digunakan untuk menentukan lebar nilai dari nilai terendah dan nilai tertinggi. Sintaks : SELECT * FROM [NAMA TABEL] WHERE [NAMA

KOLOM] BETWEEN ‘[NILAI AWAL]’ AND ‘[NILAI AKHIR]’;

2.2.5 OPERATOR LIKE

LIKE digunakan ketika kita ingin mencari sebuah data yang hanya diwakili oleh salah satu atau lebih hurufnya saja. Misalkan kita ingin mencari nama yang huruf awalnya R, maka kita harus menggunakan LIKE. Sintaks : SELECT * FROM

[NAMA TABEL] WHERE [NAMA KOLOM] LIKE ‘[OPERATOR]’;

2.2.6 OPERATOR DISTINCT

Digunakan untuk memilih data-data yang berbeda (menghilangkan duplikasi) dari sebuah tabel database. Sintaks : SELECT DISTINCT [NAMA KOLOM] FROM [NAMA TABEL];

2.2.7 OPERATOR LIMIT

Kegunaan operator LIMIT terletak pada pembatasan atas jumlah data yang boleh ditampilkan, Sintaks : SELECT * FROM [NAMA TABEL] ORDER BY [NAMA KOLOM] LIMIT [JUMLAH DATA YANG INGIN DITAMPILKAN];

(4)

Menghilangkan jumlah data yang akan ditampilkan, Sintaks : SELECT * FROM [NAMA TABEL] ORDER BY [NAMA KOLOM] OFFSET [JUMLAH DATA YANG INGIN DIHILANGKAN];

2.2.9 UNION, EXCEPT dan INTERSECT

Perintah UNION dalam MySQL di gunakan untuk menggabungkan atau mengkombinasikan isi dari dua tabel menjadi satu. Sama seperti artinya INTERSECT ini di gunakan untuk mencari irisan pada dua atau lebih tabel. Sintaks : SELECT * FROM [NAMA TABEL1] INTERSECT SELECT * FROM [NAMA TABEL2]

Kemudian perintah yang terakhir yaitu EXCEPT, EXCEPT ini digunakan untuk memunculkan isi tabel yang berada di luar irisan tabel. Sintaks : SELECT * FROM [NAMA TABEL1] EXCEPT SELECT * FROM [NAMA TABEL2]

2.3Join

Join merupakan salah satu konstruksi dasar dari SQL dan basis data. Join dapat didefinisikan sebagai kombinasi record dari dua atau lebih tabel di dalam basis sebagai joined table.

Join dapat diklasifikasikan ke dalam dua jenis, yaitu inner join dan outer join.

2.3.1 Inner Join

Inner join pada dasarnya adalah menentukan persimpangan (intersection) antara dua buah tabel.

Sintaks inner join diperlihatkan sebagai berikut :

(5)

2.3.2 Outer Join

Outer join dibagi ke dalam tiga jenis, yaitu left outer join, right outer join, dan

full outer join.

2.3.2.1.1 Left Outer Join

Left outer join (atau left join) mengembaliakan semua nilai dari tabel kiri tditambah dengan nilai dari tabel kanan yang sesuai (atau NULL jika tidak ada nilai yang sesuai).

Sintaks Left ourer join diperlihatkan sebagai berikut :

Left

outer join antara tabel A dan B dapat diilustrasikan dalam diagram Venn seperti

Gambar 2.

2.3.2.1.2 Right Outer Join

Right outer join (atau right join) pada dasarnya sama seperti left join, namun

dalam bentuk terbalik kanan dan kiri.

Sintaks Right outer join diperguakan sebagai berikut:

Right outer join antara tabel A dan B dapat diilustrasikan dalam diagram Venn

(6)

2.3.2.1.3 Full Outer Join

Full outer join (atau full join) pada hakekatnya merupakan kombinasi dari left dan right join.

Sintaks full outer join dipelihatkan sebagai berikut :

Bentuk visual dari full outer join dapat diperlihatkan menggunakan diagram Venn seperti Gambar 4.

2.3.3 Cross Join

Menggabungkan/output isi kedua table secara permutasi (Cartesian Products) Dengan kata lain, cross join akan menghubungkan tiap-tiap kolom table A dengan masing-masing kolom di table B tanpa memperhatikan PK.

2.3.4 Natural Join

Menggabungkan/output isi kedua table berdasarkan nama kolom yang sama tanpa suatu kondisi(qualifier). Menurut para pengamat, natural join sangat disarankan tidak digunakan.

Perlu juga diperhatikan, join diimplimentasikan dalam bentuk bersarang (nested join). Jadi, di dalam sebuah operasi join bisa terdapat operasi join lainnya.

2.4Union

MySQL Union adalah statemen yang mengkombinasikan dua buah atau lebih resulset dari beberapa table dengan statemen SELECT sehingga menjadi satu buah result.

Union statemen memilki beberapa ketentuan sehingga berikut : a. Jumlah kolom / field dari setiap statemen SELECT harus sama.

(7)

Secara default Statemen UNION akan menghapus semua record duplikasi dari resultset. Apabila anda ingin record duplikasi tetap di tampilkan maka pada resultset tuliskan secara explisit UNION ALL. Perbedaan Union dan Union All dapat dijelaskan dalam diagram Venn 5 dan 6.

(8)

3. Latihan

Sebelum melakukan tugas latihan, praktikan membuka XAMPP CONTROL PANEL dan memilih Start pada Module MySQL dan Apache kemudian klik Admin atau mengakses

localhost/phpmyadmin pada browser.

Gambar 1. Start MySQL dan Apache

Maka akan tampil seperti pada gambar dibawah ini :

Gambar 2. Tampilan phpmyadmin

3.1Relationship

(9)

Gambar 3. CREATE DATABASE MODUL5_005; pada SQL

Untuk mengeksekusi pernyataan SQL tersebut dengan klik tombol Go. Setelah itu database MODUL5_005 akan berhasil dibuat.

Gambar 4. Database modul5_005 berhasil dibuat

Setelah menciptakan sebuah database, praktikkan menciptakan dua buah tabel secara bergantian dengan klik SQL pada awal tampilan phpMyAdmin, kemudian mengetikkan pernyataan-pernyataan yang dibutuhkan pada praktikum kali ini. Struktur untuk pernyataan pembuatan tabel adalah sebagai berikut :

CREATE TABLE ‘nama_tabel’ (

‘nama_field1’ TIPEDATA(length),

‘nama_field2’ TIPEDATA(length), PRIMARY KEY(nama_field) );

Dalam praktikum kali ini praktikkan membuat tabel yang bernama karyawan, dengan memiliki 2 field yaitu Nama yang bertipe data VARCHAR dengan length 30 dan di set NOT NULL. Field kedua yaitu id_dep yang bertipe data INT yang memilik length 5 dan di set NOT NULL, praktikkan memilih tipe data VARCHAR dan INT karena tipe data tersebut lebih general sebenarnya penggunaan tipe data TEXT dan NUMBER juga diterima, namun kurang standar. Primary key tidak di set karena sesuai dengan pernyataan pada modul. ENGINE = MyISAM merupakan storage atau penyimpanan yang menangani tabel yang non-transactional. Tipe tabel ini menyediakan penyimpanan dan retrieval berkecepatan

(10)

Gambar 5. CREATE TABLE karyawan; pada SQL

Gambar 6. Tabel karyawan telah berhasil dibuat

Untuk mengecek struktur dari tabel karyawan dengan klik karyawan pada modul5_005 kemudan pilih Structure.

Gambar 7. Struktur tabel karyawan pada database modul5_005

Tabel yang kedua bernama departemen, dengan memiliki 2 field yaitu id_dep yang bertipe data INT dengan length 5 dan di set NOT NULL. Field kedua yaitu nama_dep yang bertipe data VARCHAR yang memilik length 30 dan di set NOT NULL. Field id_dep di set sebagai primary key karena sesuai dengan pernyataan pada modul dan id_dep memiliki nilai yang

bersifat unik atau antara data satu dengan data yang lainnya berbeda. Sama seperti tabel karyawan Engine Storage atau penyimpanan dari tabel departemen di set MyISAM yang Kemudian eksekusi pernyataan penciptaan tabel dengan klik Go.

Gambar 8. CREATE TABLE departemenn; pada SQL

Gambar 9. Tabel departemen telah berhasil dibuat

Untuk mengecek struktur dari tabel departemen dengan klik departemen pada modul5_005 kemudan pilih Structure.

Gambar 10. Struktur tabel karyawan pada database modul5_005

Setelah kedua tabel berhasil dibuat kemudian praktikkan menambahkan data pada kedua tabel tersebut melalui pernyataan SQL. Struktur untuk pernyataan menambahkan data pada tabel adalah sebagai berikut :

INSERT INTO ‘nama_tabel’

VALUES (‘data_field1, ‘data_field2’, ‘data_fiedlke-n’),

(11)

Praktikkan menambahkan data pada tabel karyawan sesuai dengan yang diperintahkan pada modul, dengan data seperti pada gambar dibawah ini.

Gambar 11. INSERT INTO karyawan;

Gambar 12. Data telah ditambahkan pada tabel karyawan;

Untuk melihat data yang telah ditambahkan pada tabel karyawan dengan pernyataan sebagai berikut :

Gambar 13. Melihat data pada tabel karyawan;

Kemudian akan menampilkan data dari tabel karyawan

Gambar 14. Data pada tabel karyawan;

Praktikkan menambahkan data pada tabel departemen sesuai dengan yang diperintahkan pada modul, dengan data seperti pada gambar dibawah ini.

Gambar 15. INSERT INTO departemen;

Gambar 16. Data telah ditambahkan pada tabel departemen;

Untuk melihat data yang telah ditambahkan pada tabel karyawan dengan pernyataan sebagai berikut :

Gambar 17. Melihat data pada tabel departemen;

Kemudian akan menampilkan data dari tabel departemen

(12)

3.2Inner Join

Pernyataan inner join akan mengembalikan data di tabel A dan B yang sesuai. Sebagai contoh, untuk mendapatkan data karyawan yang memiliki departemen dengan mengeksekusi pernyataan atau perintah SQL berikut :

Gambar 19. SELECT * FROM karyawan INNER JOIN departemen;

Maka data yang diperoleh dari eksekusi pernyataan SQL diatas adalah sebagai berikut :

Gambar 20. Hasil dari SELECT * FROM karyawan INNER JOIN departemen;

Selain menggunakan pernyataan SQL diatas, data juga dapat diperoleh dengan menggunakan inner join bentuk implisitnya, seperti pada gambar dibawah ini.

Gambar 21. Inner join bentuk implisit;

Gambar 22. Hasil dari inner join bentuk implisit;

Pada gambar 19 dan 21 pernyataan SQL diatas memiliki hasil yang sama. Karena yang diseleksi adalah data karyawan yang memiliki departemen maka pernyataan keduanya menghasilkan nama AGUS dengan id_dep 10 nama_dep PENELITIAN dan CITRA dengan id_dep 12 nama_dep SDM. Perbedaan antara perintah diatas hanya pada penulisan sintaks saja yaitu yang kedua berbentuk implisit.

Untuk pengambilan data juga bisa menspesifikasikan field terkait. Sebagai contoh, untuk mengambil nama karyawan dan nama departemen yang ditempatinya saja, eksekusi SQL :

Gambar 23. Pengambilan data dengan spesifikasi field terkait;

(13)

Jika pengguna ingin menampilkan field tertentu saja, maka nama field tersebut harus disebutkan secara eksplisit beserta nama tabel tempat field.

Untuk efisiensi penulisan pernyataan SQL, praktikkan memanfaatkan fitur derived table, penggunaan derived table akan semakin efisien apabila pengguna berurusan dengan banyak field dan banyak tabel, selain itu juga menjadikan pernyataan SQL mudah dipahami. Pernyataan SQL dengan fitur derived table seperti pernyataan dibawah ini :

Gambar 25. Efisiensi pernyataan SQL dengan memanfaatkan derived table;

Pada pernyataan SQL di atas, tabel karyawan dinotasikan dengan huruf k dan tabel departemen menggunakan huruf d. Hasil eksekusi perintah SQL tersebut sama dengan hasil eksekusi perintah SQL sebelumya.

Gambar 26. Hasil dari efisiensi pernyataan SQL dengan memanfaatkan derived table;

Pada gambar 23 dan 25 pernyataan SQL diatas memiliki hasil yang sama. Karena yang diseleksi adalah nama karyawan dan nama departemen maka pernyataan keduanya menghasilkan nama AGUS dengan nama_dep PENELITIAN dan CITRA dengan nama_dep SDM. Pada pernyataan pertama sintaks dengan menambahkan keterangan

“karyawan.nama” dan “departemen.nama_dep”, sedangkan pernyataan kedua

menggunakan fitur derived table yang menuliskan pernyataan secara efisien, karyawan dinotasikan dengan huruf k dan departemen dengan huruf d.

3.3Outer Join

3.3.1 Left Outer Join

Left outer join mengembalikan semua nilai dari tabel kiri ditambah dengan nilai dari

tabel kanan yang sesuai atau NULL jika tidak ada nilai yang sesuai. Contoh pernyataan left outer join dalam tabel karyawan dengan departemen adalah sebagai berikut :

(14)

Gambar 28. Hasil dari tabel karyawan left outer join tabel departemen;

Pada pernyataan di atas yang yang dijadikan patokan yaitu tabel karyawan, karena tabel karyawan di left outer join dengan tabel departemen sehingga menghasilkan ada data yang NULL yang ditampilkan pada gambar diatas. Alasannya karena data BUDI dengan id_dep 16 dan DANI dengan id_dep 17 pada tabel karyawan, sedangkan data pada tabel departemen hanya terdapat data id_dep 10, 11, 12, dan 13. Sehingga pada saat tabel karyawan di left outer join dengan tabel departemen data BUDI dengan id_dep 16 dan DANI dengan id_dep 17 memiliki NULL value pada field id_dep dan nama_dep pada tabel departemen.

Left outer join dengan menggunakan klausa WHERE, seperti pada pernyataan SQL

dibawah ini :

Gambar 29. Tabel karyawan left outer join tabel departemen dengan klausa WHERE;

Gambar 30. Hasil dari tabel karyawan left outer join tabel departemen dengan klausa WHERE;

Pada pernyataan di atas yang yang dijadikan patokan yaitu tabel karyawan, karena tabel karyawan di left outer join dengan tabel departemen, kemudian terdapat penambahan query WHERE d.id_dep IS NULL mengakibatkan data yang tampil adalah Nama dan id_dep pada tabel karyawan yang id_dep dan nama_dep pada tabel departemen berisi NULL. Maka dari itu yang tampil adalah BUDI dengan id_dep 16 dan DANI dengan id_dep 17 karena BUDI dan DANI tidak memiliki departemen (nama departemennya tidak tercatat dalam tabel departemen).

3.3.2 Right Outer Join

Right outer join mengembalikan semua nilai dari tabel kanan ditambah dengan nilai dari

(15)

Gambar 31. Tabel karyawan right outer join tabel departemen;

Gambar 32. Hasil dari tabel karyawan right outer join tabel departemen;

Pada pernyataan di atas yang yang dijadikan patokan yaitu tabel departemen, karena tabel departemen berada disebelah kanan tabel karyawan, sehingga menghasilkan ada data yang NULL yang ditampilkan pada gambar diatas. Alasannya karena data id_dep 11 dengan nama_dep PEMASARAN dan id_dep 13 dengan nama_dep KEUANGAN pada tabel departemen, sedangkan data pada tabel karyawan hanya terdapat data id_dep 10 dengan nama AGUS dan id_dep 12 dengan nama CITRA. Sehingga pada saat kedua tabel di right outer join data id_dep 11 dengan nama_dep PEMASARAN dan id_dep 13 dengan nama_dep KEUANGAN memiliki NULL value pada field Nama dan id_dep pada tabel karyawan.

3.3.3 Full Outer Join

Full outer join pada hakikatnya merupakan kombinasi dari left outer join dan right outer

join. Karena pada beberapa DBMS tidak mendukung fungsionalitas full outer join maka

disimulasikan dengan memanfaatkan UNION. Dengan menggabungkan left outer join dan right outer join seperti pernyataan SQL dibawah ini :

Gambar 33. Tabel karyawan full outer join tabel departemen;

(16)

Penjelasan dari pernyataan SQL full outer join adalah kombinasi penjelasan dari tugas latihan 3.3.1 dan 3.3.2, pada keluaran diatas yaitu menampilkan semua data pada tabel karyawan dan departemen meskipun ada data relasi yang dimana tabel karyawan dan tabel departemen datanya NULL.

3.3.4 Cross Join

Cross join pada hakikatnya merupakan inner join dimana kondisi join selalu dievaluasi

true. Secara matematis, jika A dan B merupakan dua himpunan, maka cross join-nya

sama dengan X. Contoh pernyataan SQL dari cross join adalah sebagai berikut :

Gambar 35. Tabel karyawan cross join tabel departemen;

atau juga dapat menggunakan pernyataan SQL dalam bentuk implisitnya seperti ini :

Gambar 35. Tabel karyawan cross join tabel departemen secara implisit;

Gambar 36. Hasil dari tabel karyawan cross join tabel departemen (kiri); secara implisit (kanan);

(17)

3.4Union

Dalam latihan ini praktikkan membuat tabel baru dengan nama tabel karyawan2, yang memiliki 2 field yaitu Nama yang bertipe data VARCHAR dengan length 30 dan di set NOT NULL. Field kedua yaitu id_dep yang bertipe data INT yang memilik length 5 dan di set NOT NULL, praktikkan memilih tipe data VARCHAR dan INT karena tipe data tersebut lebih general sebenarnya penggunaan tipe data TEXT dan NUMBER juga diterima, namun kurang standar. Primary key tidak di set karena sesuai dengan pernyataan pada modul. ENGINE = MyISAM merupakan storage atau penyimpanan yang menangani tabel yang non-transactional. Tipe tabel ini menyediakan penyimpanan dan retrieval berkecepatan

tinggi, dan juga kemampuan pencarian fulltext. MyISAM didukung di semua konfigurasi MySQL dan merupakan engine penyimpanan default kecuali apabila pengguna telah melakukan konfigurasi MySQL untuk menggunakan tipe lain sebagai defaultnya. Kemudian eksekusi pernyataan penciptaan tabel dengan klik Go.

Gambar 37. CREATE TABLE karyawan2;

Gambar 38. Tabel karyawan2 telah berhasil dibuat

Untuk mengecek struktur dari tabel karyawan2 dengan klik karyawan pada modul5_005 kemudan pilih Structure.

Gambar 39. Struktur tabel karyawan2 pada database modul5_005

Praktikkan menambahkan data pada tabel karyawan2 sesuai dengan yang diperintahkan pada modul, dengan data seperti pada gambar dibawah ini.

Gambar 39. INSERT INTO karyawan2;

Gambar 40. Data telah ditambahkan pada tabel karyawan2;

Untuk melihat data yang telah ditambahkan pada tabel karyawan2 dengan pernyataan sebagai berikut :

(18)

Kemudian akan menampilkan data dari tabel karyawan2

Gambar 42. Data pada tabel karyawan2;

Setelah tabel telah dibuat maka praktikkan melakukan penggabungan dengan perintah sebagai berikut :

Gambar 43. Contoh pernyataan UNION;

Gambar 44. Hasil dari pernyataan UNION;

Dari eksekusi pernyataan karyawan UNION karyawan2 memperoleh 6 data record dari field nama dan field id_dep antara lain “AGUS, 10”, “BUDI, 16”, “CITRA, 12”, “DANI,

17”, “ANISA, 18”, “BAGUS, 12”. Hasil relasi tabel karyawan dengan tabel karyawan2 tersebut menjadi satu tabel, namun data nama DANI dengan id_dep 17, hanya tampil satu saja, padahal data nama DANI dengan id_dep 17 terdapat pada tabel karyawan maupun tabel karyawan2. Hal tersebut dapat terjadi, karena default statement UNION adalah menghilangkan duplikat. Sehingga diperoleh data tanpa duplikasi.

Latihan selanjutnya adalah mengganti pernyataan SQL “UNION” diatasmenjadi “UNION ALL”, dapat diperhatikan pada pernyataan dibawah ini :

(a) (b)

Gambar 45. Contoh pernyataan UNION ALL;

(19)

(a) (b)

Gambar 46. Contoh pernyataan UNION ALL;

(a) karyawan UNION ALL karyawan2, (b) karyawan2 UNION ALL karyawan

Dalam kedua pernyataan tersebut menghasilkan data yang berbeda, karena pada pernyataan (a) adalah karyawan UNION ALL karyawan2, sedangkan pada pernyataan (b) adalah karyawan2 UNION ALL karyawan. Namun tetap saja kedua pernyataan nya tidak

menghasilkan data yang benar.Karena UNION ALL adalah statemen yang

mengkombinasikan dua buah atau lebih resulset dari beberapa tabel dengan statemen

SELECT sehingga menjadi satu buah result, dengan record duplikasi tetap di tampilkan.”. Pada XAMPP v3.2.2 tidak support eksekusi UNION ALL, Sehingga untuk percobaan latihan UNION ALL praktikkan mengeksekusi pernyataan tersebut menggunakan command prompt.

Gambar 47. Contoh pernyataan UNION ALL beserta hasil menggunakan CMD; karyawan → karyawan2

Gambar 48. Contoh pernyataan UNION ALL beserta hasil menggunakan CMD; karyawan2 → karyawan

Hasil relasi tabel karyawan dengan tabel karyawan2 maupun relasi tabel karyawan2 dengan tabel karyawan tersebut menjadi satu tabel. Dari eksekusi pernyataan karyawan UNION ALL karyawan2 maupun karyawan2 UNION ALL karyawan memperoleh 7 data record dari field nama dan field id_dep antara lain “AGUS, 10”, “BUDI, 16”, “CITRA, 12”,

(20)

Perbedaan antara UNION dan UNION ALL adalah data nama DANI dengan id_dep 17 pada pernyataan UNION hanya tampil satu saja, padahal data nama DANI dengan id_dep 17 terdapat pada tabel karyawan maupun tabel karyawan2. Hal tersebut dapat terjadi, karena default statement UNION adalah menghilangkan duplikat. Sehingga diperoleh data tanpa duplikasi. Sedangkan pada UNION ALL data nama DANI dengan id_dep 17 ditampilkan semua atau terdapat dua data. Karena pada tabel karyawan dan tabel karyawan2 sama-sama menyimpan data nama DANI dengan id_dep 17.

4. Tugas Praktikum

Pada praktikum kali ini praktikkan mengekspor data pada tugas praktikum minggu-minggu sebelumnya, kemudian mengimpor pada database baru yang dengan nama tugas_praktikum_modul5.

Dalam database tugas_praktikum_modul5 terdapat 3 tabel yaitu tabel tb_mahasiswa, tb_mata_kuliah, dan tb_ambil_mk2, kemudian menghapus praktikkan menghapus isi yang ada pada ketiga tabel tersebut, kemudian praktikkan menambahkan data pada tabel-tabel tersebut sesuai dengan perintah pada modul.

Pada tabel tb_mahasiswa praktikkan menambahkan 7 record seperti pada gambar dibawah ini :

Gambar 49. INSERT INTO tb_mahasiswa;

Gambar 50. Data berhasil ditambahkan pada tb_mahasiswa;

Untuk melihat data yang telah ditambahkan pada tabel tb_mahasiswa dengan pernyataan sebagai berikut :

Gambar 51. Melihat data pada tabel tb_mahasiswa;

(21)

Gambar 52. Data pada tabel tb_mahasiswa;

Pada tabel kedua yaitu tabel tb_mata_kuliah praktikkan menambahkan 7 record seperti pada gambar dibawah ini :

Gambar 53. INSERT INTO tb_mata_kuliah;

Gambar 54. Data berhasil ditambahkan pada tb_mata_kuliah;

Untuk melihat data yang telah ditambahkan pada tabel tb_mahasiswa dengan pernyataan sebagai berikut :

Gambar 55. Melihat data pada tabel tb_mata_kuliah;

Kemudian akan menampilkan data dari tabel tb_mata_kuliah

(22)

Pada tabel ketiga yaitu tabel tb_ambil_mk2 praktikkan menambahkan 6 record seperti pada gambar dibawah ini :

Gambar 57. INSERT INTO tb_ambil_mk2;

Gambar 58. Data berhasil ditambahkan pada tb_ambil_mk2;

Untuk melihat data yang telah ditambahkan pada tabel tb_mahasiswa dengan pernyataan sebagai berikut :

Gambar 59. Melihat data pada tabel tb_ambil_mk2;

Kemudian akan menampilkan data dari tabel tb_ambil_mk2

Gambar 60. Data pada tabel tb_mata_kuliah;

Setelah data-data yang terdapat pada modul telah ditambahkan pada masing-masing tabel maka praktikkan akan mencoba mengeksekusi perintah-perintah pada modul.

4.1Dapatkan banyak mahasiswa yang mengambil matakuliah. Selesaikan dengan

pendekatan join eksplisit dan implisit.

EKSPLISIT atau “eksplisit join notation” menggunakan join keyword untuk menentukan

tabel untuk bergabung, dan ON keyword untuk menentukan predikat untuk bergabung, seperti dalam contoh pernyataan berikut :

Gambar 61. Seleksi INNER JOIN dengan pendekatan Join Eksplisit dengan AS;

(23)

Dalam pernyataan dihalaman sebelumnya menggunakan COUNT(DISTINCT tb_mahasiswa.NIM) untuk menghitung jumlah data NIM mahasiswa tanpa duplikat (data yang sama dihitung hanya 1), AS Mahasiswa_yang_mengambil_matkul merupakan perintah yang digunakan untuk menyimpan field sementara seleksi dari data yang dicari. Jadi field Mahasiswa_yang_mengambil_matkul tersebut tidak tersimpan pada struktur tabel yang sebenarnya. Kemudian relasi tabel tb_mahasiswa INNER JOIN tb_ambil_mk2 ON tb.mahasiswa.NIM = tb_ambil_mk2.NIM; mengakibatkan hanya NIM yang sama antara NIM pada tabel tb_mahasiswa dan NIM pada tabel tb_ambil_mk2. Dari pernyataan tersebut menampilkan hasil adalah 3.

Untuk melihat data nim dan nama mahasiswa yang mengambil matakuliah dapat menggunakan pernyataan eksplisit join sebagai berikut :

Gambar 63. Penjabaran data dari seleksi INNER JOIN dengan pendekatan Join Eksplisit;

Gambar 64. Hasil dari penjabaran data dari seleksi INNER JOIN dengan pendekatan Join Eksplisit;

Dari hasil pernyataan tersebut membuktikan bahwa pernyataan pada gambar 61 yang mendapatkan hasil 3 pada field Mahasiswa_yang_mengambil_matkul adalah benar karena apabila seleksi dengan penjabaran menampilkan 3 record mahasiswa yang mengambil

matakuliah yaitu “101, ARIF”, “102, WATI”, “103, IKA”.

IMPLISIT atau “implicit join notation” hanya berisi daftar tabel untuk bergabung, dalam

klausa FROM dari pernyataan SELECT, menggunakan koma untuk memisahkannya, klausa WHERE tambahan mungkin berlaku sebagai filter-predikat.

Gambar 65. Seleksi INNER JOIN dengan pendekatan Join Implisit dengan AS;

(24)

Dari pernyataan implisit join tersebut menampilkan hasil yang sama dengan pernyataan eksplisit join yaitu adalah 3. Perbedaan hanya cara penulisannya saja, apabila eksplisit menggunakan ON sedangkan implisit menggunakan klausa WHERE.

Untuk melihat data nim dan nama mahasiswa yang mengambil matakuliah juga dapat menggunakan pernyataan implisit join sebagai berikut :

Gambar 67. Penjabaran data dari seleksi INNER JOIN dengan pendekatan Join Implisit;

Gambar 68. Hasil dari penjabaran data dari seleksi INNER JOIN dengan pendekatan Join Implisit;

Hasil dari implisit join yang menyertakan kriteria NIM dan nama sama dengan hasil dari eksplisit join, perbedaan juga hanya terletak pada penulisannya saja.

4.2Kelompokkan data mahasiswa yang tidak mengambil matakuliah berdasarkan

jenis kelaminnya, kemudian hitung banyaknya.

Gambar 69. Seleksi LEFT OUTER JOIN;

Pada persoalan 4.2 menggunakan left outer join, yang diseleksi adalah field Jenis_kelamin, COUNT(*) perhitungan dari seleksi data mahasiswa kemudian disimpan pada field sementara sebagai Jumlah, sedangkan relasi tabel tb_mahasiswa LEFT OUTER JOIN tb_ambil_mk_2 ON tb.mahasiswa.NIM = tb_ambil_mk2.NIM; mengakibatkan hanya NIM yang sama antara NIM pada tabel tb_mahasiswa dan NIM pada tabel tb_ambil_mk2, kemudian klausa WHERE dengan ketentuan kode_mk is NULL karena data yang dicari adalah mahasiswa yang tidak mengambil matakuliah, GROUP BY Jenis_kelamin adalah mengelompokkan seleksi data tersebut berdasarkan jenis kelamin.

(25)

Dari hasil pernyataan pada gambar 69 menampilkan field Jenis_kelamin dan Jumlah dengan record “L, 3” dan “P, 1”, karena mahasiswa yang tidak mengambil matakuliah adalah BUDI, TONO, IWAN yang berjenis kelamin L sehingga menampilkan hasil 3, dan SARI yang berjenis kelamin P sehingga menampilkan hasil 1.

4.3Dapatkan nim dan nama mahasiswa yang mengambil matakuliah beserta

kode_mk dan nama_mk yang diambilnya. Selesaikan dengan pendekatan join

eksplisit dan implisit.

EKSPLISIT

Gambar 71. Seleksi INNER JOIN dengan pendekatan Join Eksplisit;

Pada persoalan 4.3 menggunakan inner join dan memanfaatkan fitur derived table, yang diseleksi adalah field a.NIM, m.Nama, a.kode_mk, k.nama_mk dari relasi tabel tb_mahasiswa yang dinotasikan dengan huruf m, tb_ambil_mk_2 yang dinotasikan dengan huruf a, dan tb_mata_kuliah yang dinotasikan dengan huruf k ON m.NIM = a.NIM mengakibatkan hanya NIM yang sama antara NIM pada tabel tb_mahasiswa dan NIM pada tabel tb_ambil_mk2, kemudian AND a.kode_mk = k.kode_mk mengakibatkan hanya kode_mk yang sama antara kode_mk pada tabel tb_ambil_mk2 dan kode_mk pada tabel tb_mata_kuliah karena yang diseleksi adalah mahasiswa yang mengambil matakuliah beserta beserta kode_mk dan nama_mk.

Gambar 72. Hasil dari seleksi INNER JOIN dengan pendekatan Join Eksplisit;

Dari hasil pernyataan pada gambar 71 menampilkan field NIM, Nama, kode_mk, dan nama_mk dengan 4 record yaitu “101, ARIF, PTI447, PRAKTIKUM BASIS DATA”,

“103, WATI, TIK333, SISTEM OPERASI”, “104, IKA, PTI333, BASIS DATA TERDISTRIBUSI”, dan “103, WATI, TIK333, SISTEM OPERASI”.

IMPLISIT

(26)

Gambar 74. Hasil dari seleksi INNER JOIN dengan pendekatan Join Implisit;

Dari pernyataan implisit join tersebut menampilkan hasil yang sama dengan pernyataan

eksplisit join yaitu “101, ARIF, PTI447, PRAKTIKUM BASIS DATA”, “103, WATI, TIK333, SISTEM OPERASI”, “104, IKA, PTI333, BASIS DATA TERDISTRIBUSI”, dan “103, WATI, TIK333, SISTEM OPERASI”. Perbedaan hanya cara penulisannya saja,

apabila eksplisit menggunakan ON sedangkan implisit menggunakan klausa WHERE.

4.4Dapatkan nim, nama, dan total sks yang diambil oleh mahasiswa, Dimana total

sksnya lebih dari 4 dan kurang dari 10.

Gambar 75. Seleksi INNER JOIN dengan pendekatan Join Implisit;

Pada persoalan 4.4 menggunakan inner join implisit dengan memanfaatkan fitur derived table, yang diseleksi adalah field m.NIM, m.Nama, SUM(k.sks) AS Total_sks, Total_sks sebagai field sementara dari hasil SUM sks tabel tb_mata_kuliah. Relasi inner join tb_ambil_mk_2 yang dinotasikan dengan huruf a, tabel tb_mahasiswa yang dinotasikan dengan huruf m, dan tb_mata_kuliah yang dinotasikan dengan huruf k kemudian menggunakan klausa WHERE m.NIM = a.NIM mengakibatkan hanya NIM yang sama antara NIM pada tabel tb_mahasiswa dan NIM pada tabel tb_ambil_mk2 AND a.kode_mk = k.kode_mk mengakibatkan hanya kode_mk yang sama antara kode_mk pada tabel tb_ambil_mk2 dan kode_mk pada tabel tb_mata_kuliah, lalu GROUP BY m.NIM berarti mengelompokkan berdasarkan NIM pada tabel tb_mahasiswa dan HAVING SUM(sks)>4 AND SUM(sks)<10; klausa HAVING digunakan untuk menspesifikasikan hasil yang mengandung fungsi agregat SUM. Fungsi agregat SUM adalah mengembalikan jumlah (total atau sum) nilai di suatu kolom.

(27)

Dari pernyataan implisit join tersebut menampilkan field NIM, Nama, Total_sks dengan 1 record yaitu “104, IKA, 5”. Data mahasiswa yang muncul hanya IKA karena mengambil 2 matakuliah yaitu PTI333 dan PTI777 yang memiliki apabila dijumlah hasil sks nya adalah 5. Karena yang memiliki sks lebih dari 4 dan sks kurang dari 10 hanya IKA, maka pernyataan diatas hanya menampilkan IKA.

4.5Dapatkan data matakuliah yang tidak diambil oleh mahasiswa terdaftar

(mahasiswa yang terdaftar adalah mahasiswa yang tercatat di tabel mahasiswa).

Gambar 77. Seleksi LEFT OUTER JOIN;

Pada persoalan 4.5 menggunakan left outer join dengan memanfaatkan fitur derived table, yang diseleksi adalah field k.kode_mk, nama_mk, sks, dan semester. Relasi left outer join tb_mata_kuliah yang dinotasikan dengan huruf k, tabel tb_mahasiswa yang dinotasikan dengan huruf m, dan tb_ambil_mk2 yang dinotasikan dengan huruf a. ON m.NIM = a.NIM mengakibatkan hanya NIM yang sama antara NIM pada tabel tb_mahasiswa dan NIM pada tabel tb_ambil_mk2, ON k.kode_mk = a.kode_mk mengakibatkan hanya kode_mk yang sama antara kode_mk pada tabel tb_mata_kuliah dan kode_mk pada tabel tb_ambil_mk2, lalu dengan klausa WHERE a.kode_mk is NULL karena yang diseleksi adalah data yang tidak diambil oleh mahasiswa terdaftar. Keluaran dari query diatas adalah hasil dari 2 kali merelasikan tabel. Pertama merelasikan tabel tb_mahasiswa dengan tb_ambil_mk2 menggunakan left outer join (keluarannya data yang tidak sama tabel sebelah kiri) dengan syaratnya data pada nimnya sama. Kemudian hasil dari relasi tersebut direlasikan lagi dengan tb_mata_kuliah menggunakan left outer join (keluarannya data yang tidak sama tabel sebelah kiri) dengan syaratnya memiliki data kode_mk sama. Kemudian yang diproses hanya data yang NULL value.

Gambar 78. Seleksi LEFT OUTER JOIN;

Dari pernyataan left outer join tersebut menampilkan field kode_mk, nama_mk, sks, dan semester dengan 3 record yaitu “PTI123, GRAFIKA MULTIMEDIA, 3, 5”, “TIK123,

(28)

5. Tugas Rumah

5.1Buatlah database baru dengan nama Universitas. Lalu didalamnya terdapat

tabel-tabel seperti pada modul 5.

Dalam membuat tugas rumah, praktikkan membuat database baru dengan nama universitas.

Gambar 79. CREATE DATABASE universitas;

Database universitas berhasil dibuat

Gambar 80. CREATE DATABASE universitas berhasil dibuat;

Setelah database berhasil dibuat praktikkan membuat tiga buah tabel. Tabel yang pertama dibuat dengan nama tabel_instruktur, dengan memiliki 4 field yaitu NIP yang bertipe data CHAR dengan length 2, NAMA_INS yang bertipe data VARCHAR dengan length 50, JURUSAN yang bertipe data VARCHAR dengan length 30, ASAL_KOTA yang bertipe data VARCHAR dengan length 30. Praktikkan memilih tipe data VARCHAR karena tipe data tersebut lebih general. NIP di set primary key karena NIP bersifat unik, antara instruktur satu dengan lainnya memiliki NIP yang berbeda. Kemudian eksekusi pernyataan penciptaan tabel dengan klik Go.

Gambar 81. CREATE TABLE tabel_instruktur;

Tabel tabel_instruktur telah berhasil dibuat

Gambar 82. CREATE TABLE tabel_instruktur berhasil dibuat;

Untuk mengecek struktur dari tabel tabel_instruktur dengan klik tabel_instruktur pada universitas kemudan pilih Structure.

Gambar 83. Structure tabel_instruktur;

(29)

Gambar 84. INSERT INTO tabel_instruktur;

Gambar 85. Data telah ditambahkan pada tabel tabel_instruktur;

Untuk melihat data yang telah ditambahkan pada tabel tabel_instruktur dengan pernyataan sebagai berikut :

Gambar 86. Melihat data pada tabel tabel_instruktur;

Kemudian akan menampilkan data dari tabel tabel_instruktur

Gambar 87. Data pada tabel tabel_instruktur;

Tabel yang kedua dibuat dengan nama tabel_matakuliah, dengan memiliki 3 field yaitu KD_MK yang bertipe data VARCHAR dengan length 8, NAMA_MK yang bertipe data VARCHAR dengan length 30, SKS yang bertipe data CHAR dengan length 1. Praktikkan memilih tipe data VARCHAR karena tipe data tersebut lebih general. KD_MK di set primary key karena KD_MK bersifat unik, antara KD_MK satu dengan lainnya memiliki

KD_MK yang berbeda. Kemudian eksekusi pernyataan penciptaan tabel dengan klik Go.

Gambar 88. CREATE TABLE tabel_matakuliah;

Tabel tabel_instruktur telah berhasil dibuat

Gambar 89. CREATE TABLE tabel_matakuliah berhasil dibuat;

Untuk mengecek struktur dari tabel tabel_matakuliah dengan klik tabel_matakuliah pada universitas kemudan pilih Structure.

(30)

Kemudian praktikkan menambahkan data pada tabel_matakuliah dengan pernyataan seperti dibawah ini :

Gambar 91. INSERT INTO tabel_matakuliah;

Gambar 92. Data telah ditambahkan pada tabel tabel_matakuliah;

Untuk melihat data yang telah ditambahkan pada tabel tabel_instruktur dengan pernyataan sebagai berikut :

Gambar 93. Melihat data pada tabel tabel_matakuliah;

Kemudian akan menampilkan data dari tabel tabel_instruktur

Gambar 94. Data pada tabel tabel_matakuliah;

Tabel yang ketiga dibuat dengan nama tabel_ambil_mk, dengan memiliki 4 field yaitu NIP yang bertipe data CHAR dengan length 2, KD_MK yang bertipe data VARCHAR dengan

length 8, RUANGAN yang bertipe data VARCHAR dengan length 8, JML_MHS yang

bertipe data INT tanpa menentukan length. Praktikkan memilih tipe data VARCHAR karena tipe data tersebut lebih general. Primary key tidak di set. Kemudian eksekusi pernyataan penciptaan tabel dengan klik Go.

Gambar 95. CREATE TABLE tabel_ambil_mk;

Tabel tabel_ambil_mk telah berhasil dibuat

Gambar 96. CREATE TABLE tabel_ambil_mk berhasil dibuat;

(31)

Gambar 97. Structure tabel_matakuliah;

Kemudian praktikkan menambahkan data pada tabel_ambil_mk dengan pernyataan seperti dibawah ini :

Gambar 98. INSERT INTO tabel_ambil_mk;

Gambar 99. Data telah ditambahkan pada tabel tabel_ambil_mk;

Untuk melihat data yang telah ditambahkan pada tabel tabel_ambil_mk dengan pernyataan sebagai berikut :

Gambar 100. Melihat data pada tabel tabel_ambil_mk;

Kemudian akan menampilkan data dari tabel tabel_ambil_mk

Gambar 101. Data pada tabel tabel_ambil_mk;

Setelah ketiga tabel dibuat maka praktikkan menampilkan beberapa persoalan dengan perintah sebagai berikut :

5.1.1 Tampilkan kd_mk dan mata kuliah yang jumlah mahasiswanya 40.

Gambar 102. Seleksi INNER JOIN;

(32)

tabel_ambil_mk yang dinotasikan dengan huruf a, tabel tabel_matakuliah yang dinotasikan dengan huruf m kemudian menggunakan ON a.KD_MK = m.KD_MK mengakibatkan hanya KD_MK yang sama antara KD_MK pada tabel tabel_ambil_mk dan KD_MK pada tabel tabel_matakuliah. Spesifikasi seleksi data dengan klausa WHERE JML MHS = 40, karena yang diinginkan adalah menampilkan KD_MK dan matakuliah yang jumlah mahasiswanya adalah 40.

Gambar 103. Hasil dari seleksi INNER JOIN;

Dari pernyataan inner join tersebut menampilkan field KD_MK, NAMA_MK, JML_MHS dengan 2 record yaitu “PTI101, ALGORITMA DAN PEMROGRAMAN,

40”, “PTI103, VISUAL BASIC, 40”. Kedua data muncul karena pada matakuliah tersebut memiliki jumlah mahasiswa 40.

5.1.2 Tampilkan data Instruktur yang mengajarkan ‘Basis Data’.

Gambar 104. Seleksi INNER JOIN;

Pada persoalan 5.1.2 menggunakan inner join dengan memanfaatkan fitur derived table, yang diseleksi adalah field i.NIP, i.NAMA_INS, m.NAMA_MK. Relasi inner join tabel_instruktur yang dinotasikan dengan huruf i, tabel tabel_ambil_mk yang dinotasikan dengan huruf a, dan tabel_matakuliah yang dinotasikan dengan huruf m kemudian menggunakan ON i.NIP = a.NIP mengakibatkan hanya NIP yang sama antara NIP pada tabel tabel_instruktur dan NIP pada tabel tabel_ambil_mk AND a.KD_MK = m.KD_MK mengakibatkan hanya KD_MK yang sama antara KD_MK pada tabel tabel_ambil_mk dan KD_MK pada tabel tabel_matakuliah. Spesifikasi seleksi data dengan klausa WHERE NAMA_MK = “BASIS DATA”; karena yang diinginkan adalah menampilkan data instruktur yang mengajarkan matakuliah BASIS DATA.

Gambar 105. Hasil dari seleksi INNER JOIN;

(33)

FITRIAN A. muncul karena pada instruktur tersebut yang mengajarkan matakuliah BASIS DATA.

5.1.3 Tampilkan data Instruktur yang tidak mengajar.

Gambar 106. Seleksi LEFT OUTER JOIN;

Pada persoalan 5.1.3 menggunakan left outer join dengan memanfaatkan fitur derived table, yang diseleksi adalah field i.NIP, NAMA_INS, a.KD_MK. Relasi left outer join

tabel_instruktur yang dinotasikan dengan huruf i, tabel tabel_matakuliah yang dinotasikan dengan huruf m, dan tabel_ambil_mk yang dinotasikan dengan huruf a. ON m.KD_MK = a.KD_MK mengakibatkan hanya KD_MK yang sama antara KD_MK pada tabel tabel_matakuliah dan KD_MK pada tabel tabel_ambil_mk, ON i.NIP = a.NIP mengakibatkan hanya NIP yang sama antara NIP pada tabel tabel_instruktur dan NIP pada tabel tabel_ambil_mk, lalu dengan spesifikasi data dengan klausa WHERE a.KD_MK is NULL karena yang diseleksi adalah data instruktur yang tidak mengajar. Keluaran dari query diatas adalah hasil dari 2 kali merelasikan tabel. Pertama merelasikan tabel tabel_matakuliah dengan tabel_ambil_mk menggunakan left outer join (keluarannya data yang tidak sama tabel sebelah kiri) dengan syaratnya data pada

KD_MKnya sama. Kemudian hasil dari relasi tersebut direlasikan lagi dengan tabel_instruktur menggunakan left outer join (keluarannya data yang tidak sama tabel sebelah kiri) dengan syaratnya memiliki data NIP sama. Kemudian yang diproses hanya data instruktur yang memiliki KD_MK NULL value.

Gambar 107. Hasil dari seleksi LEFT OUTER JOIN;

Dari pernyataan left outer join tersebut menampilkan field NIP, NAMA_INS, KD_MK dengan 1 record yaitu “4, BUDY PRATAMA, NULL”. Data BUDY PRATAMA muncul karena instruktur tersebut tidak mengajar matakuliah.

5.2Buat tabel seperti pada tabel modul 5.

(34)

yang bertipe data VARCHAR dengan length 30, CUSTOMER_ADDRES yang bertipe data VARCHAR dengan length 50. Praktikkan memilih tipe data VARCHAR karena tipe data tersebut lebih general. CUSTOMER_ID di set primary key karena bersifat unik, antara customer satu dengan lainnya memiliki CUSTOMER_ID yang berbeda. Kemudian eksekusi pernyataan penciptaan tabel dengan klik Go.

Gambar 108. CREATE TABLE tb_customer;

Tabel tb_customer telah berhasil dibuat

Gambar 109. CREATE TABLE tb_customer berhasil dibuat;

Untuk mengecek struktur dari tabel tb_customer dengan klik tb_customer pada universitas kemudan pilih Structure.

Gambar 110. Structure tb_customer;

Kemudian praktikkan menambahkan data pada tb_customer dengan pernyataan seperti dibawah ini :

Gambar 111. INSERT INTO tb_customer;

Gambar 112. Data telah ditambahkan pada tabel tb_customer;

Untuk melihat data yang telah ditambahkan pada tabel tb_customer dengan pernyataan sebagai berikut :

Gambar 113. Melihat data pada tabel tb_customer;

(35)

Gambar 114. Data pada tabel tb_customer;

Tabel yang kedua dibuat dengan nama tb_orders, dengan memiliki 5 field yaitu ORDER_ID yang bertipe data VARCHAR dengan length 5, ORDER_DATE yang bertipe data DATE, CUSTOMER_ID yang bertipe data VARCHAR dengan length 5, QTY yang bertipe data INT, dan AMOUNT yang bertipe data INT. Praktikkan memilih tipe data VARCHAR dan INT karena tipe data tersebut lebih general. Primary key tidak di set. Kemudian eksekusi pernyataan penciptaan tabel dengan klik Go.

Gambar 115. CREATE TABLE tb_orders;

Tabel tb_orders telah berhasil dibuat

Gambar 116. CREATE TABLE tb_orders berhasil dibuat;

Untuk mengecek struktur dari tabel tb_orders dengan klik tb_orders pada universitas kemudan pilih Structure.

Gambar 117. Structure tabel tb_orders;

(36)

Gambar 118. INSERT INTO tb_orders;

Gambar 119. Data telah ditambahkan pada tabel tb_orders;

Untuk melihat data yang telah ditambahkan pada tabel tb_orders dengan pernyataan sebagai berikut :

Gambar 120. Melihat data pada tabel tb_orders;

Kemudian akan menampilkan data dari tabel tb_orders

Gambar 121. Data pada tabel tb_orders;

Setelah kedua tabel dibuat maka praktikkan menampilkan beberapa persoalan dengan perintah sebagai berikut :

5.2.1 Gabungkan kedua tabel tersebut dengan JOIN dan UNION

5.2.1.1Inner Join, Left Outer Join, Right Outer Join

Gambar 122. Seleksi INNER JOIN;

Gambar 123. Hasil dari seleksi INNER JOIN;

Untuk menggabungkan menggunakan inner join dengan memanfaatkan fitur derived

table, yang diseleksi adalah field c.CUSTOMER_ID, CUSTOMER_NAME,

(37)

Gambar 124. Seleksi LEFT OUTER JOIN;

Gambar 125. Hasil dari seleksi LEFT OUTER JOIN;

Pada pernyataan di atas yang yang dijadikan patokan yaitu tabel tb_customer yang dinotasikan dengan c, karena tabel tb_customer di left outer join dengan tabel tb_orders yang dinotasikan dengan o, penggabungan kedua tabel berdasarkan CUSTOMER_ID pada tabel tb_customer dan CUSTOMER_ID pada tabel tb_orders, sehingga menghasilkan ada data yang NULL yang ditampilkan pada gambar 125. Alasannya karena data MIRZA dengan CUSTOMER_ID CS003 dan TANTI dengan CUSTOMER_ID CS004 pada tabel tb_customer, sedangkan data pada tabel tb_orders hanya terdapat data CUSTOMER_ID CS001, CS002, 12, dan CS005. Sehingga pada saat tabel tb_customer di left outer join dengan tabel tb_orders data MIRZA dengan CUSTOMER_ID CS003 dan TANTI dengan CUSTOMER_ID CS004 memiliki NULL value pada field ORDER_ID, ORDER_DATE, CUSTOMER_ID, QTY, dan AMOUNT pada tabel tb_orders.

Gambar 126. Seleksi RIGHT OUTER JOIN;

Gambar 127. Hasil dari seleksi RIGHT OUTER JOIN;

(38)

5.2.1.2Union (gabungkan semua data dan tampilkan)

Gambar 128. Seleksi UNION;

Gambar 129. Hasil dari seleksi UNION;

Untuk menggabungkan dengan UNION adalah kombinasi dari left outer join dan right outer join. Tabel tb_customer dinotasikan dengan c, dan tabel tb_orders dinotasikan

dengan o. Menggabungkannya dengan berdasarkan c.CUSTOMER_ID = o.CUSTOMER ID, mengakibatkan hanya CUSTOMER_ID yang sama antara CUSTOMER_ID pada tabel tb_customer dan CUSTOMER_ID pada tabel tb_orders. Penjelasan lebih lengkap pada pernyataan dibawah gambar 125 dan gambar 127.

5.2.1.3Tampilkan data customer dan ordernya pada bulan desember

Gambar 130. Seleksi INNER JOIN dengan klausa WHERE;

Pada persoalan 5.2.1.3 menggunakan inner join dengan memanfaatkan fitur derived table, yang diseleksi adalah semua field pada tabel tb_customer dan tabel tb_orders. Relasi inner join tabel tb_customer yang dinotasikan dengan huruf c, dan tabel tb_orders yang dinotasikan dengan huruf o kemudian menggunakan c.CUSTOMER_ID = o.CUSTOMER ID, mengakibatkan hanya CUSTOMER_ID yang sama antara CUSTOMER_ID pada tabel tb_customer dan CUSTOMER_ID pada tabel tb_orders. Spesifikasi seleksi data dengan klausa WHERE MONTH(ORDER_DATE) = “12”; karena yang diinginkan adalah data customer yang ordernya pada bulan Desember(12).

Gambar 131. Hasil dari seleksi INNER JOIN dengan klausa WHERE;

(39)

6. Kesimpulan

Dalam praktikum modul 5 Join dan Union dapat disimpulkan bahwa Relationship adalah suatu hubungan antara beberapa entitas. Sedangkan Join dapat didefinisikan sebagai kombinasi record dari dua atau lebih tabel di dalam basis sebagai joined table, Join terdiri dari atas Inner join yang pada dasarnya adalah menentukan persimpangan (intersection) antara dua buah tabel dan Outer join yang dibagi ke dalam tiga jenis, yaitu left outer join, right outer join, dan full outer join. Union adalah statemen yang mengkombinasikan dua

buah atau lebih resulset dari beberapa tabel dengan statemen SELECT sehingga menjadi satu buah result. Union statemen memiliki beberapa ketentuan yaitu jumlah kolom / field dari setiap statemen SELECT harus sama. Tipe data kolom/field dari setiap statemen SELECT harus kompatibel. Default Statemen UNION akan menghapus semua record duplikasi dari resultset.

7. Daftar Pustaka

Jurusan Teknik Elektro. 2017. Modul 4 : Fungsi Agregat. Malang: Universitas Negeri Malang.

Mahligai, Larensi. Relasi dan Join (Basis Data). 2013. http://siilarensi.blogspot.co.id/2013/ 04/relasi-dan-join-basis-data.html, diakses pada pada tanggal 21 Maret 2017, pukul 21:08 WIB.

Id, Raga. Operator Dasar dari MySQL. 2014. http://raggaid.blogspot.co.id/2014/10/ operator-dasar-pada-mysql.html, diakses pada pada tanggal 21 Maret 2017, pukul 21:23 WIB.

Ayie, Raden. Data Manipulation Language. 2012. http://ayie1927.blogspot.co.id/2012/06/ data-manipulation-language-dml-3.html, diakses pada pada tanggal 21 Maret 2017, pukul 21:35 WIB.

Gambar

Gambar 2.
Gambar 2. Tampilan phpmyadmin
Gambar 21. Inner join bentuk implisit;
Gambar 29. Tabel karyawan left outer join tabel departemen dengan klausa WHERE;
+7

Referensi

Dokumen terkait

dan sisa asset dalam proses likuidasi perusahaan. Pada dasarnya ada dua jenis keuntungan yang diperoleh investor dengan.. membeli saham, yaitu deviden dan Capital Gain

Konformitas teman sebaya yang berada pada tataran remaja karang taruna di Dusun Gamping Desa Jambean, Sragen Jawa Tengah memiliki hubungan yang sigknifikan dengan perilaku

Bentuk penelitian ini adalah penelitian deskripsi kualitatif.Data di penelitian ini adalah struktur generik iklan lowongan kerja.Sedangkan sumber datanya adalah teks

Dengan dibuatnya sign system yang terkonsep dimana konsep ide perancangan sign sytem diambil mengikuti dengan tema taman dan arena bermain di mikie holiday yaitu zaman

Gambar 1 menunjukkan bahwa nilai kesukaan panelis terhadap kenampakan ilabulo ikan patin fortifikan tertinggi yaitu fortifikasi perlakuan rumput laut 15% dan tulang ikan patin

Dari apa yang telah diuraikan diatas faktor kualitas kualitas produk, faktor harga, faktor promosi dan faktor pelayanan merupakan faktor-faktor yang perlu diperhatikan

Permasalahan yang saat ini terjadi pada PT Onassis Wisata Cemerlang menurut Ibu Riama Chaidir selaku manajer pada PT Onassis Wisata Cemerlang adalah ingin

Akreditasi dilakukan untuk menentukan kelayakan program dan satuan pendidikan pada jalur pendidikan formal dan nonformal pada setiap jenjang dan jenis.