Praktikum Basis Data 6

 

Pertemuan 6


    Halo teman2 di postingan kali ini kita lanjut untuk praktikum pertemuan 6. Pada praktikum ke 6 saya masih lanjut dengan materi tentang DML atau Data Manipulation Language. Buat temen2 yang belum tahu apa itu DML, Jadi DML merupakan metode query dasar yang dapat digunakan apabila DDL telah terjadi sehingga fungsi dari query DML ini untuk melakukan pemanipulasian database yang telah dibuat. Untuk temen2 yang lupa apa itu DDL dapat membaca postingan saya pada Pertemuan sebelumnya yaitu pada pertemuan 3 (https://sonefanwar.blogspot.com/2020/10/praktikum-basis-data-3.html). Melanjutkan pertemuan 5.5 sebelumnya, kali ini kita akan membahas tentang DML - JOIN yang diantaranya yaitu :

• INNER - JOIN
• LEFT OUTER - JOIN
• RIGHT OUTER - JOIN
• FULL OUTER - JOIN
• Penggabungan 3 Tabel atau lebih



A. Materi


Berikut beberapa materi penting yang bisa temen2 ingat untuk praktikum nanti :




1. INNER - JOIN

 • Inner join yaitu mengembalikan baris-baris dari dua tabel atau lebih yang memenuhi syarat.
 • Syntax Inner Join yaitu :

SELECT tabel1.*, tabel2.* FROM tabel1.PK=tabel2.FK;

 
2. LEFT OUTER - JOIN

• Left outer join yaitu mengembalikan seluruh baris dari tabel disebelah kiri yang dikenai kondisi ON dan hanya baris dari tabel disebelah kanan yang memenuhi kondisi join.

• Syntax left outer join yaitu :
 
SELECT tabel1.*, tabel2.* FROM tabel1 LEFT JOIN tabel2 ON tabel1.PK=tabel2.FK;


3. RIGHT OUTER - JOIN

• Right outer join yaitu mengembalikan seluruh baris dari tabel disebelah kanan yang dikenai kondisi ON dan hanya baris dari tabel disebelah kiri yang memenuhi kondisi join.

• Syntax right outer join yaitu :
 
SELECT tabel1.*, tabel2.* FROM tabel1 RIGHT JOIN tabel2 ON tabel1.PK=tabel2.FK;


4. FULL OUTER - JOIN

• FUll outer join yaitu mengembalikan seluruh baris dari kekdua tabel yang dikenai ON termasuk data-data yang bernilai NULL.

• Syntax full outer join yaitu :

SELECT columns FROM TableA FULL JOIN TableB ON A.columnName=B.columnName;


5. Menggabungkan 3 Tabel

• Syntax penggabungan 2 tabel :

SELECT tabel1.*, tabel2.* FROM tabel1, tabel2 WHERE tabel1.PK=tabel2.FK;

• Syntax penggabungan 3 tabel yaitu :

SELECT tabel1.*, tabel2.*, tabel3.* FROM tabel1, tabel2, tabel 3 WHERE tabel1.PK=tabel2.FK AND tabel2.PK=tabel3.FK;



B. Praktikum


1. SOAL

Pada praktikum kali ini saya diberikan tugas yang rinciannya dapat temen2 lihat di bawah ini : 

a. Masukkan data/record berikut ke database Sistem_Pemesanan sesuaikan tabelnya! 












b. Praktekkan syntaks berikut dan perhatikan perbedaannya, jangan lupa cek dan teliti, di beberapa tempat saya berikan syntaks yang salah :D kalau ada, selamat mengerjakan!

    1. JOIN

• Menggunakan where ( SELECT pelanggan.id_pelanggan, pelanggan.nm_pelanggan,     pesan.id_pesan, pesan.tgl_pesan FROM pelanggan, pesan WHERE pelanggan.id_pelanggan=pesan.id_pelanggan; )

 • Menggunakan inner join ( SELECT pelanggan.id_pelanggan, pelanggan.nm_pelanggan, pesan.id_pesan, pesan.tgl_pesan FROM pelanggan INNER JOIN pesan ON pelanggan.id_pelanggan=pesan.id_pelanggan; )

 • Gabungkan tabel pesan dan faktur menggunakan where dan inner join

    3. OUTER JOIN

 • Menggunakan left ( SELECT pelanggan.id_pelanggan, pelanggan.nm_pelanggan, pesan.id_pesan, pesan.tgl_pesan
FROM pelanggan LEFT JOIN pesan ON pelanggan.id_pelanggan=pesan.id_pelanggan; )

 • Ubahlah left di atas menjadi right, apa perbedannya?

    4. MENGGABUNGKAN 3 TABEL

 • Gabungkan antara tabel pelanggan, pesan dan faktur.


2. IMPLEMENTASI


        Seperti biasa kita buka MySQL yang tutorial download dan installnya dapat temen2 baca di Praktikum Pertemuan 1 (https://sonefanwar.blogspot.com/2020/09/praktikum-basis-data-1.html). Sebelum kita mulai mengerjakan tugas di atas kita perlu untuk mengetikkan perintah yaitu 
mysql -u root " dan tekan Enter. Berikutnya kita gunakan database Sistem_Pemesanan, Jika temen2 belum membuatnya temen2 bisa melihat langkah2nya pada Praktikum Basis Data 5.5 pada link berikut : (https://sonefanwar.blogspot.com/2020/10/praktikum-basis-data-55.html).

Sampai disini saya anggap temen2 sudah menyelesaikan langkah2 di atas, Selanjutnya kita lakukan langkah2 berikut :

1. " USE Sistem_Pemesanan; "
2. " SHOW DATABASES; "
3. " SHOW TABLES; "

Hasilnya akan tampak seperti ini :




a. Masukkan data/record berikut ke database Sistem_Pemesanan sesuaikan tabelnya! 



 • Syntax yang saya gunakan :

- INSERT INTO Pelanggan VALUES ( 'UAA001', 'Abiyasa', 'Ngastino', 08111222333, 'abiyasa@almaata.ac.id' );
- INSERT INTO Pelanggan VALUES ( 'UAA002', 'Baladewa', 'Madura', 08222333444, 'baladewa@almaata.ac.id' ); 
- INSERT INTO Pelanggan VALUES ( 'UAA003', 'Cakil', 'Goa', 08333444555, 'cakil@almaata.ac.id' );
- INSERT INTO Pelanggan VALUES ( 'UAA004', 'Dasamuka', 'Ngalengka', 08444555666, 'dasamuka@almaata.ac.id' ); 
- INSERT INTO Pelanggan VALUES ( 'UAA005', 'Ekalawya', 'Nishada', 08555666777, 'ekalawya@almaata.ac.id' );

 • Hasilnya akan tampak seperti ini :


 • Error ? yap benar, jika temen2 mengikuti praktikum pertemuan 5.5 sebelumnya maka hasilnya akan sama persis dengan gambar di atas. Cara mengatasinya cukup dengan menggunakan ALTER OPTIONS pada pertemuan 3 : https://sonefanwar.blogspot.com/2020/10/praktikum-basis-data-3.html  . Jika sudah, temen2 bisa kembali menggunakan syntax di atas.

 • Hasil setelah masalah error teratasi :














 • Syntax yang saya gunakan :

- INSERT INTO Pesan VALUES ( 1, 'UAA001', '2020-10-28' );
- INSERT INTO Pesan VALUES ( 2, 'UAA002', '2020-10-29' );
- INSERT INTO Pesan VALUES ( 3, 'UAA002', '2020-10-30' );
- INSERT INTO Pesan VALUES ( 4, 'UAA003', '2020-10-31' );
- INSERT INTO Pesan VALUES ( 5, 'UAA004', '2020-10-31' );

 • Hasilnya akan tampak seperti ini :






 * Maaf disini ada kesalahan pada blog sehingga jaraknya atas bawah terlalu besar dan sulit untuk memperbaikinya.


 • Sama dengan kasus sebelumnya cara mengatasinya cukup dengan menggunakan ALTER OPTIONS pada pertemuan 3 : https://sonefanwar.blogspot.com/2020/10/praktikum-basis-data-3.html  . Jika sudah, temen2 bisa kembali menggunakan syntax di atas.

 • Hasil setelah masalah error teratasi :


 • Syntax yang saya gunakan :

- INSERT INTO Produk VALUES ( 'MIE001', 'Indomie Goreng', 'PCS', 2000, 100 );
- INSERT INTO Produk VALUES ( 'MIE002', 'Sarimi Goreng', 'PCS', 1900, 200 );
- INSERT INTO Produk VALUES ( 'ATK001', 'Pensil 2B', 'PCS', 5000, 50 );
- INSERT INTO Produk VALUES ( 'ATK002', 'Bolpoint Standart', 'PCS', 7500, 100 );

 • Hasilnya akan tampak seperti ini :


 • Sama dengan kasus sebelumnya cara mengatasinya cukup dengan menggunakan ALTER OPTIONS pada pertemuan 3 : https://sonefanwar.blogspot.com/2020/10/praktikum-basis-data-3.html  . Jika sudah, temen2 bisa kembali menggunakan syntax di atas.

 • Hasil setelah masalah error teratasi :



 • Syntax yang saya gunakan :

- INSERT INTO Faktur VALUES ( 'INV001', 1, '2020-10-28' );
- INSERT INTO Faktur VALUES ( 'INV002', 2, '2020-10-29' );
- INSERT INTO Faktur VALUES ( 'INV003', 3, '2020-10-30' );
- INSERT INTO Faktur VALUES ( 'INV004', 4, '2020-10-31' );

 • Hasilnya akan tampak seperti ini :


 • Berbeda dengan error sebelumnya, kita tidak bisa langsung menggunakan ALTER OPTIONS untuk mengatasi error kali ini, Karena pada field Id_Faktur terhubung dengan tabel Kuitansi. Maka cara yang saya pikirkan untuk mengatasi hal ini adalah dengan menghapus tabel Kuitansi dan tabel faktur. Kemudian membuat ulang tabel Kuitansi dan faktur dengan syntax yang sudah diperbaiki. Jika temen2 menemukan solusi lain bisa share melalui kolom komentar :D .

 • Error ini menjadi peringatan bagi saya untuk lebih teliti dalam membuat tabel agar menyesuaikan tipe data pada tabel dengan record yang akan diinputkan nantinya agar tidak terjadi kendala ketika proses input record seperti pada error di atas.

 • Hasil setelah masalah error teratasi :





b. Praktekkan syntaks berikut dan perhatikan perbedaannya, jangan lupa cek dan teliti, di beberapa tempat saya berikan syntaks yang salah :D kalau ada, selamat mengerjakan!


    1. JOIN

• Menggunakan where ( SELECT pelanggan.id_pelanggan, pelanggan.nm_pelanggan,     pesan.id_pesan, pesan.tgl_pesan FROM pelanggan, pesan WHERE pelanggan.id_pelanggan=pesan.id_pelanggan; )

Hasilnya adalah sebagai berikut :


 • Menggunakan inner join ( SELECT pelanggan.id_pelanggan, pelanggan.nm_pelanggan, pesan.id_pesan, pesan.tgl_pesan FROM pelanggan INNER JOIN pesan ON pelanggan.id_pelanggan=pesan.id_pelanggan; )

Hasilnya adalah sebagai berikut :


 • Gabungkan tabel pesan dan faktur menggunakan where dan inner join

Hasil untuk penggunaan WHERE :


Hasil untuk penggunaan Inner Join :




    2. OUTER JOIN

 • Menggunakan left ( SELECT pelanggan.id_pelanggan, pelanggan.nm_pelanggan, pesan.id_pesan, pesan.tgl_pesan
FROM pelanggan LEFT JOIN pesan ON pelanggan.id_pelanggan=pesan.id_pelanggan; )

Hasilnya adalah sebagai berikut :


 • Ubahlah left di atas menjadi right, apa perbedannya?

Hasilnya adalah sebagai berikut :


 • Menurut saya perbedaannya adalah ada pada record ke 5 yaitu  "Ekalwya". Jika sebelumnya pada LEFT JOIN kita menggunakan tabel pelanggan yang mana berada pada posisi LEFT sebagai acuan maka otomatis record ke 5 Ekalwya akan ikut ditampilkan. 

• Namun pada RIGHT JOIN yang mana tabel Pesan sebagai acuan maka record ke 5 Ekalwya tidak dapat  ditampilkan. Alasannya sederhana, karena Ekalwya meskipun ada pada daftar pelanggan namun Ekalwya tidak melakukan pemesanan produk / tidak ada catatan Ekalwya melakukan pemesanan produk sehingga catatan Ekalwya tidak dapat ditemukan pada record Pesan.



    3. MENGGABUNGKAN 3 TABEL

 • Gabungkan antara tabel pelanggan, pesan dan faktur.






*Catatan (Mohon koreksi apabila salah) 
Beberapa kesimpulan yang saya dapat ketika mengerjakan tugas ini : 

1. Tetap gunakan tanda petik ( ' ' ) jika karakter yang akan diinputkan adalah kombinasi huruf dan angka.
2. Tetap gunakan tanda petik ( ' ' ) jika karakter yang akan diinputkan adalah tanggal.
3. Not null tidak boleh kosong, default 0 secara otomatis nilai/record bawaan adalah 0, bisa dicoba dengan tanpa memasukkan record pada field yang ada default, maka akan otomatis terisi dengan nilai 0
4. Innodb dan Myisam adalah storage engine, kapan menggunakannya atau kelebihan/kekurangannya bisa dilihat pada artikel berikut https://www.natanetwork.com/portal/knowledgebase/123/Mysql-dengan-storage-engine-MyISAM-atau-InnoDB.html
5. Charset mengkonfigurasi char/karakter
6. Jika akan menyusun field pada tabel pastikan data yang akan diinputkan sudah siap supaya tidak kesulitan nantinya. Misal : kita terlanjur menyusun suatu field dengan tipe data int sedangkan data yang akan kita inputkan haruslkah kombinasi huruf angka maka kita terpaksa harus menghapus tabel tersebut dan menyusunnya ulang atau jika dimungkinkan bisa menggunakan cara yang lebih mudah yaitu dengan ALTER OPTIONS namun opsi ini tidak selalu berhasil. 



    Baik mungkin cukup sekian praktikum basis data pada pertemuan ke enam kali ini. Terima kasih kepada teman2 yang telah meluangkan waktu untuk membaca postingan ini sampai selesai. Sampai jumpa pada pertemuan berikutnya.






0 Response to "Praktikum Basis Data 6"

Posting Komentar

Iklan Atas Artikel

Iklan Tengah Artikel 1

Iklan Tengah Artikel 2

Iklan Bawah Artikel