Tugas 6 (921411236)
Relasi Tabel Dalam Mysql
Relasi table pada database sangat diperlukan untuk menyederhanakan data-data kita,dan supaya mudah untuk diatur.Ada beberapa cara yang digunakan untuk merelasikan table.Pada pelajaran kali ini saya akan mengajarkan cara relasi database dengan menggunakan keluarga JOIN.Relasi table dengan Join ada 6 macam.
ï‚· CROSS JOIN
ï‚· STRAIGHT JOIN
ï‚· INNER JOIN
ï‚· RIGHT JOIN
ï‚· LEFT JOIN
ï‚· NATURAL JOIN
Contoh:
Anda membuat table namanya nilai dengan huruf kecil semua.untuk menampilkan isi dari table
gunakan query berikut
select * from nilai //work
select * from Nilai //don’t work
select * from NILAI //don’t work
SeLeCt * FroM nilai //work
Sekarang masuk ke mysql server anda jika memakai console ketik mysql –u root –p [enter] masukkan password. Setelah itu masuk ke database produk mysql> use produk Lalu untuk melihat table yang sudah dibuat ketik perintah berikut
mysql> show tables;
+------------------+
| Tables_in_produk |
+------------------+
| jenis |
| produk |
+------------------+
2 rows in set (0.00 sec)
Disitu terdapat dua table yang ingin kita relasikan yaitu table jenis dan produk.Untuk meliat deskripsi dari kedua table tersebut gunakan query berikut
mysql> desc produk;
+-----------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------+-------------+------+-----+---------+----------------+
| id_produk | int(11) | NO | PRI | NULL | auto_increment |
| nm_produk | varchar(40) | YES | | NULL | |
| no_jenis | int(3) | YES | | NULL | |
+-----------+-------------+------+-----+---------+----------------+
3 rows in set (0.01 sec)
mysql> desc jenis
-> ;
+----------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+----------------+
| no_jenis | int(11) | NO | PRI | NULL | auto_increment |
| nm_jenis | varchar(20) | YES | | NULL | |
+----------+-------------+------+-----+---------+----------------+
2 rows in set (0.01 sec)
Perhatikan pada table jenis dan produk terdapat field yang sama yaitu no_jenis.yang akan kita gunakan untuk merelasikan kedua table berikut.
Pada table produk primary key nya adalah id_produk sedangkan pada table jenis primary key nya adalah no_jenis.Nah,pada table jenis no_jenis adalah kunci primer(primary key),sedangkan pada table produk no_jenis adalah kunci tamu(foreign key).
Sekarang kita lihat isi dari masing-masing table berikut
mysql> select * from jenis;
+----------+------------+
| no_jenis | nm_jenis |
+----------+------------+
| 1 | Furniture |
| 2 | Elektronik |
| 3 | FOOD |
+----------+------------+
3 rows in set (0.00 sec)
mysql> select * from produk;
+-----------+-----------+----------+
| id_produk | nm_produk | no_jenis |
+-----------+-----------+----------+
| 1 | Lemari | 1 |
| 2 | Kulkas | 2 |
| 3 | Meja | 1 |
| 4 | Bangku | 1 |
| 5 | Televisi | 2 |
| 6 | Komputer | 2 |
+-----------+-----------+----------+
6 rows in set (0.00 sec)
Nah pada field/kolom no_jenis pada table jenis dan produk ,kita bermaksud menghubungkan.
JOIN TABLE
1.INNER JOIN
Inner Join konseprnya sama seperti Cross Join Tidak ada perbedaan apapun mysql> select id_produk,nm_produk,nm_jenis from produk inner join jenis on produk.no_jenis=jenis.no_jenis;
+-----------+-----------+------------+
| id_produk | nm_produk | nm_jenis |
+-----------+-----------+------------+
| 1 | Lemari | Furniture |
| 2 | Kulkas | Elektronik |
| 3 | Meja | Furniture |
| 4 | Bangku | Furniture |
| 5 | Televisi | Elektronik |
| 6 | Komputer | Elektronik |
+-----------+-----------+------------+
6 rows in set (0.00 sec)
mysql> select id_produk,nm_produk,nm_jenis from produk inner join jenis where produk.no_jenis=jenis.no_jenis;
+-----------+-----------+------------+
| id_produk | nm_produk | nm_jenis |
+-----------+-----------+------------+
| 1 | Lemari | Furniture |
| 2 | Kulkas | Elektronik |
| 3 | Meja | Furniture |
| 4 | Bangku | Furniture |
| 5 | Televisi | Elektronik |
| 6 | Komputer | Elektronik |
+-----------+-----------+------------+
6 rows in set (0.00 sec)
2.LEFT JOIN
Left Join digunakan untuk menampilkan semua record pada table di sebelah kiri .
mysql> select id_produk,nm_produk,nm_jenis from produk left join jenis on produk.no_jenis=jenis.no_jenis;
+-----------+-----------+------------+
| id_produk | nm_produk | nm_jenis |
+-----------+-----------+------------+
| 1 | Lemari | Furniture |
| 2 | Kulkas | Elektronik |
| 3 | Meja | Furniture |
| 4 | Bangku | Furniture |
| 5 | Televisi | Elektronik |
| 6 | Komputer | Elektronik |
+-----------+-----------+------------+
6 rows in set (0.00 sec)
Kita Lihat, Pada contoh diatas left join akan menampilkan semua record pada table di sebelah kiri yaitu table produk sedangkan table jenis berada disebelah kanan sehingga table jenis akan menyesuaikan .
3.RIGHT JOIN
Kebalikan dari left join ,right join digunakan untuk menampilkan semua record pada table di sebelah kanan.
mysql> select id_produk,nm_produk,nm_jenis from produk right join jenis on produk.no_jenis=jenis.no_jenis;
+-----------+-----------+------------+
| id_produk | nm_produk | nm_jenis |
+-----------+-----------+------------+
| 1 | Lemari | Furniture |
| 2 | Kulkas | Elektronik |
| 3 | Meja | Furniture |
| 4 | Bangku | Furniture |
| 5 | Televisi | Elektronik |
| 6 | Komputer | Elektronik |
| NULL | NULL | FOOD |
+-----------+-----------+------------+
7 rows in set (0.00 sec)
Dapat kita lihat Table jenis akan ditampilkan semua sehingga untuk field/kolom nm_jenis FOOD karena tidak ada pasangan di table produk maka table produk akan otomatis mengisinya dengan NULL.
Warning!!
Right Join dan Left Join tidak bias menggunakan klausa where sehingga apabila kita gunakan klausa where maka akan muncul pesan error.
<!--[if gte mso 9]> <w:LsdException Locked="false" Priority="33" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Book T