A. Pengertian
Join Pada MYSQL
JOIN dalam mysql adalah Salah satu fitur SQL
yang paling berguna untuk menggabungkan table dengan query – query yang
mendapatkan kembali data. Join adalah salah satu dari beberapa operasi paling
penting yang dapat anda lakukan dengan menggunakan statement SELECT.
INNER JOIN adalah Join yang menciptakan table
hasil baru dengan menggabungkan nilai nilai kolom dari dua table ( A dan B )
didasarkan pada join predikat SELF JOIN adalah Join yang bergabung dengan
sebuah table ke dirinya sendiri .
NATURAL JOIN adalah Join yang dimana dilakukan
dengan menggunakan wildcard ( SELECT * ) untuk suatu table dan sub-kumpulan
eksplit dan field untuk semua table lainya.
OUTER JOIN adalah sebuah join yang tidak
memerlukan setiap record dalam dua table bergabung untuk memiliki catatan cocok
. table bergabung dengan mempertahankan setiap catatan – bahkan jika tidak ada
catatan yang cocok lainya ada.
Luar bergabung membagi lebih lanjut lebih ke kiri
luar bergabung , kanan luar bergabung , dan penuh luar bergabung , tergantung
pada table (s) mempertahankan satu baris dari ( kiri, kanan atau keduanya )
a. INNER
JOIN
SELECT supplier.Nama, Barang.Nama, Barang.Harga FROM
supplier INNER JOIN Barang ON supplier.KodeSup = Barang.KodeSup
b. SELF
JOIN
CONTOH : SELECT c1.KodeCus, c1.Nama, c1.Kontak FROM
Customer c1, Customer c2 WHERE c1.Nama = c2.Nama AND c2.Kontak='Jim Jones'
c. NATURAL
JOIN
CONTOH : SELECT Customer.KodeCus, Penjualan.NoFaktur
FROM Customer INNER JOIN Penjualan ON Customer.KodeCus = Penjualan.KodeCus
B. Listing
dan Logika Program
Pada kali ini saya akan menjelaskan laporan yang
saya buat. Karena sedang belajar pengenalan basis data maka dari itu kita akan
membuat database dengan menggunakan xampp. Program xampp ini digunakan untuk
membuat database. Pada gambar disamping ini, pertama – pertama kita
mengaktifkan MySql. Setelah sudah aktif akan menampilkan layar seperti yang ada
gambar diatas. Setelah MySql sudah aktif, kita buka CMD atau Command
Prompt.
Pada Command
Prompt kita mula – mula menulis perintah sebagai gambar yang diatas. Pada
perintah ini, menunjukkan kalau kita akan membuat direktori di xampp
menggunakan MySql. Setelah itu kita akan mengetikkan perintah “ MySql –u root
“. Pada langkah – langkah berikutnya kita akan membuat suatu database.
Disini saya menamakan databasenya adalah “ sbd3 “. Gambar dapat dilihat di
samping ini. Perintah untuk membuat database adalah “ create ”.
Setelah itu, kita akan membuat dua buah.
Tabel pertama diberi nama mhs dan table kedua diberi
nama mhsbio. Pada tabel pertama kita membuat field atau atribut npm yang
sebagai primary key, nama dan kelas. Setelah itu table pertama akan kita input
data – data yang ingin dimasukkan dengan perintah insert. Data – data tersebut
dapa dilihat pada gambar diatas.
Setelah table
mhs sudah dilanjutkan dengan membuat table mhsbio2. Pada table mhs2 ini kita
membuat field atau atribut npm yang sama seperti table mhsbio yang sebagai
primary key, alamat dan telp. Data tersebut juga kita input yang kita inginkan.
Hanya saja pada table mhsbio2 ini kita menginput npm alamat dari mahasiswa
tersebut dan telp – nya. Data – data yang diinput dapat dilihat dari gambar
disamping ini. Setelah itu hasil dari kedua inputan akan ditampilkan digambar
output dari program tersebut.
C. Output
dari Program
Pada output yang ditampilkan ini masih terdapat dua
kolom npm. Perintah untuk menampilkan ini dengan select yaitu memilih table
mhsbio untuk digabung dengan mhsbio2 disebelah kiri.
Pada output kedua ini, menampilkan output sebagai
gambar disamping ini. Pada perintah tersebut hanya diperintahkan satu kolom npm
dan hanya satu nomor telp setiap satu mahasiswa. Maka dari itu, output tersebut
seperti gambar disamping ini.
Pada output yang
terakhir ini menggunakan sub query. Pada subquery ini sama saja dengan
menggunakan join. Akan tetapi pada subquery ini kita dapat mengganti nama kolom
yang terdapat pada table. Akan tetapi pada output ini, saya tidak mengganti
nama – nama yang ada dikolom tersebut. Gambar dapat dilihat disamping
ini.
MySQL mempunyai kemampuan untuk menggabungkan dua
tabel atau lebih guna mendapatkan informasi yang diinginkan. Proses yang
dilakukan dengan nama JOIN. Dalam penggabungan dari beberapa tabel (join)
ada beberapa hal yang perlu diperhatian, antara lain :
Setiap kolom disebutkan dengan bentuk,
Tabel-tabel yang dilibatkan dalam queri perlu
disebutkan dalam Klausa FORM dengan antar tabel dipisah oleh koma.
Kondisi dalam WHERE menetukan macam join yang
terbentuk
Join dipakai untuk mencari data dari beberapa tabel
berdasarkan hubungan yang logis dari tabel-tabel tersebut. Join menyatakan cara
SQL Server memakai data dari sebuah tabel untuk memilih data dari tabel lain.
SQL Server dapat menggabungkan tabel-tabel sampai 256 tabel.
Sintax :
Select nama_kolom,nama_kolom,[nama_kolom]
From nama_tabel, [ Cross / Inner / [ Left
/ Right ] Outer ]
Join nama_tabel On nama_tabel.Ref_nama_kolom
OperatorJoin Nama_tabel.Ref_nama_kolom.
Keterangan :
Nama Kolom : menspesidikasikan nama kolom dari
satu atau beberapa table yang ditampilkan.
Nama_tabel : adalah nama tabel dari tabel yang
diambil
Ref.nama_kolom : adalah nama_kolom yang
digunakan menggabungkan dua table dengan menggunakan kunci yang umum. Operator
Join menspesifikasikan operator yang digunakan untuk menggabungkan tabel.
Contoh:
mysql> select siswa.nim,nama,nilai from
nilai,siswa where nilai.nim=siswa.nim;
Bentuk umum Join
Select table1.column, table2.column
from table1.table2
where table1.column= table2.column;
Macam-macam bentuk Penggabungan (Join)
Cross Join, Cross Join merupakan bentuk penggabungan
yang paling sederhana, tanpa ada kondisi.
Bentuk Umum : SELECT field1,field2 FROM Tabel1 CROSS
JOIN tabel2;
Inner Join, hampir sama dengan cross join tetapi
diikuti dengan kondisi
Bentuk umum : SELECT Field FROM tabel1 INNER JOIN
tabel 2 ON kondisi
mysql> select * from siswa inner join nilai on siswa.nim=nilai.nim;
Straight Join, Straight Join identik dengan inner
join tetapi tidak mengenal klausa where
Bentuk umum : SELECT field FROM Tabel1 SATRIGHT JOIN
tabel2
Left (Outer Join), Akan menampilkan tabel
disebelah kanannya (dalam hal ini tabel nilai) dengan NULL jika tidak terdapat
hubungan antara tabel disebelah kiri (dalam hal ini tabel siswa)
Kalo outer join data di suatu tabel akan ditampilkan
walaupun tidak ada data yang sama di tabel satunya. Untuk outer join digunakan
tanda plus (+)
Bentuk umum : SELECT field FROM tabel1 LEFT JOIN
tabel2 ON kondisi
Contoh
mysql> select siswa.nim,nama,nilai from
siswa left join nilai on siswa.nim=nilai.nim;
Right/outer join, Kebalikan dari left join,
jika idak menemukan hubungan dengan tabel disebelah kiri maka akan ditampilkan
NULL
Bentuk umum : SELECT field FROM tabel1 RIGHT JOIN
tabel2 ON kondisi
Contoh
mysql> select siswa.nim,nama,nilai from
siswa right join nilai on siswa.nim=nilai.nim;
Full Join, Jenis join terakhir adalah FULL JOIN
yang menampilkan semua data dari dua tabel yang dihubungkan meskipun terdapat
data yang tidak memiliki pasangan di tabel lainnya.
Ada 2 (dua) tipe utama join, yakni :
EquiJoin
Misal table EMPLOYEES memiliki primary key employee_id,
dan memiliki foreign keydepartment_id dimana departement_id ini
merupakan primary key dari table yang lain yaitu table DEPARTMENTS. Relasi
antara EMPLOYEES dengan DEPARTEMENTS disebut equi-join. Relasi antara dua tabel
ditulis dalam klausa WHERE.
2. Non_Equijoin
Relasi antara dua table disebut non-equijoin jika
kolom pada table pertama berkorespondensi langsung dengan kolom pada table
kedua.
Relasi Join
-
Operasi join melibatkan dua buah relasi dan mengembalikan satu relasi baru
sebagai hasil.
-
Biasanya digunakan sebagai ekspresi subquery pada klausa from
-
Kondisi Join – mendefinisikan tuple mana dari dua relasi yang sesuai dan atribut
apa yang ditampilkan pada hasil join.
-
Tipe Join – mendefinisikan bagaimana tuple dari tiap relasi yang tidak memenuhi
kondisi diperlakukan.
Inner Join
Inner Join adalah sebuah Join yang menghasilkan
baris-baris, minimal ada sebuah baris di kedua tabel yang sesuai dengan kondisi
Join. Baris-baris yang tidak sesuai dengan sebuah baris dari tabel lain tidak
ditampilkan.
Outer Join
Outer Join akan menghasilkan semua data dari sebuah
tabel dan membatasi data dari tabel lain . SQL Server mempunyai tiga buah tipe
Outer Join yaitu Left, Right dan Full. Semua baris dari tabel sebelah kiri
diacu oleh sebuah left outer join, dan sebuah baris dari tabel kanan diacu dengan
Right outer join. Kegunaan dari outer join adalah mencari record-record piatu,
artinya record yang ada disebuah tabel tetapi tidak ada pasangannya pada pada
tabel lain.
-
Left Outer Join, memberikan semua baris table kiri walaupun harga kolom yang
terhubung dengan kolom table dikanannya tidak cocok.
-
Right Outer Join, memberikan semua baris table kanan walaupun harga kolom yang
terhubung dengan kolom di table kirinya tidak cocok.
-
Full Outer Join, memberikan semua baris table kiri dan kanan walaupun harga
kolom yang terhubung tidak cocok satu sama lain.
Revoke dan Grant pada MySQL
1. REVOKE
Revoke merupakan kebalikan dari perintah grant yaitu
menghapus atau mencabut kembali izin akses user MySQL yang sebelumnya telah diberikan.
Tingkat pilihan yang dapat digunakan juga sama dengan perintah grant sehingga
semua izin akses dengan grant dapat dicabut kembali.
Menghapus Akses Penuh
mysql> revoke all on *.* from nm_user@localhost
identified by ‘nm_passwd’;
Perintah diatas membuat salah satu user tidak
mempunyai izin akses lagi. Meski sudah dicabut aksesnya user tersebut masih
dapat login ke database MySQL tapi tidak perlu khawatir karena user tersebut
tidak bisa berbuat apa-apa lagi.
Menghapus Akses Database
mysql> revoke all on nm_db.nm_tbl from
nm_user@localhost identified by ‘nm_passwd’;
Perintah diatas izin akses user pada tabel tertentu telah dicabut sehingga
tidak bisa mengakses kembali.
Menghapus Akses Kolom
mysql> revoke update(nama) on nm_db.nm_tbl from
nm_user@localhost identified by ‘nm_passwd’;
Peintah diatas akan mencabut akses untuk kolom yang telah ditentukan
sebelumnya.
2. GRANT
Grant merupakan perintah untuk memberikan hak izin
akses bagi user di MySQL agar dapat mengakses database, tabel dan kolom. Selain
itu juga dapat menambahkan user baru dengan perintah Grant ini. Ada hal yang
harus diperhatikan jika melakukan perubahan izin akses pada user MySQL yang
masih aktif bekerja tidak langsung bisa menerapkan perubahan meski sudah
melakukan flush privileges. Konfigurasi ini berlaku ketika user sudah menutup
koneksi kemudian melakukan koneksi kembali.
Izin akses penuh ini digunakan untuk mengakses
seluruh database dalam server. Untuk memberikan izin Anda harus terlebih dahulu
memilih database mysql dengan perintah use. Selanjutanya lakukan perintah
berikut :
mysql> use mysql;
mysql> grant all privileges on * to nm_user@localhost identified by
‘nm_passwd’ with grand option;
Perintah diatas akan memeberikan izin akses penuh
setara dengan root. Sebaiknya hal ini tidak boleh dilakukan.Option Identified
By nama password akan menerapkan user tersebut agar tetap memasukkan password
saat mengakses database. Jika anda tidak memberikan option password maka user
tersebut dapat mengakses database tanpa password.
Penyertaan With Grand Option akan memberikan hak
penuh pada user sehingga user tersebut juga mampu melakukan perintah Grant
tertentu pada user lainnya. Namun terdapat kekurangan ketika kita sebelumnya
tidak memilih database MySQL maka server akan mengabaikan akses Reload,
Shutdown, Process, File dan Grant. Berikut ini contoh jika kita tidak
menyertakan option password.
mysql> grant all on *.* to
nm_user_baru@localhost;
Perintah diatas akan memasukan user dengan
menggunakan perintah Grant ini karena sebelumnya user tersebut belum ada. Serta
memperbolehkan user tersebut untuk mengakses database tanpa password. Agar
tidak terjadi sesuatu sebaiknya jangan melakukan hal ini.