Menurut Ramakrishnan dan Gehrke (2005, p107), ada beberapa bentuk join dari SQL, yaitu:

1. Condition Joins
Penggunaan join yang paling umum adalah bentuk condition join, yang melakukan kondisi seleksi pada cross-product antara 2 relasi (R dan S).
c adalah kondisi berdasarkan hasil relasi R dan S dalam mencari data pada kolom yang berkaitan.
2. Equijoin
Operasi equijoin sama halnya ketika melakukan query dengan penggabungan relasi dengan mencari nilai data yang sama pada kolom yang berkaitan antara kedua relasi tersebut. Diilustrasikan dengan query : R.name1 = S.name2, dimana R dan S masing- masing adalah tabel untuk mencari nilai data yang sama pada kolom name1 pada tabel R dan kolom name2 pada tabel S.
3. Natural Join
Operasi natural join adalah operasi equijoin yang memiliki kesamaan pada semua field yang memiliki nama sama dalam tabel R dan tabel S.
Dalam hal ini, memungkinkan kita untuk menghilangkan kondisi dalam operasi join, karena akan menghasilkan dua field dengan nama yang sama.
Dalam Oracle, perintah SQL akan dianalisis oleh Optimizer, yang akan menentukan langkah apa yang paling optimal dalam menjalankan perintah SQL. Berikut ini cara JOIN yang ada di database ORACLE:
4. Nested Loop
Nested Loop adalah sebuah JOIN yang efektif jika subset yang digabungkan berjumlah sedikit dan jika kondisi dalam perintah JOIN efisien untuk menggabungkan 2 tabel tersebut. Cara kerja Nested Loop adalah:
- Optimizer menentukan sebuah tabel untuk dijadikan Outer Table.
- Tabel yang tersisa dijadikan Inner Table.
- Pada setiap baris yang terdapat pada Outer Table, Optimizer akan mengakses semua baris yang terdapat pada Inner Table dengan kondisi yang di spesifikasikan di dalam JOIN.
Nested Loop akan dipilih Optimizer jika memenuhi 2 kondisi, yaitu:
- Jumlah baris pada tabel sedikit.
- Terdapat kondisi yang optimal untuk mengakses baris pada Inner Table.
5. Hash Joins
Hash Joins biasanya digunakan untuk menggabungkan data-data yang berjumlah besar.
Cara kerja Hash Joins adalah Optimizer membuat sebuah Hash Table berdasarkan predikat JOIN. Setiap tabel di INNER maupun di OUTER masing-masing dijadikan sebuah kode dengan Hash Function, kemudian setiap kode Hash dari INNER akan dibandingkan dengan Hash Kode dari OUTER, bila kode Hash dari INNER dan OUTER sama, maka akan dilakukan proses pengecekan nilai dari kolom, yang pada akhirnya nanti akan dimasukan ke dalam hasil, jika nilai kolomnya sama.
6. Sort Merge Joins
Sort Merge Joins biasa digunakan untuk menggabungkan baris dari dua sumber yang tidak mempunyai hubungan. Biasanya Hash Joins mempunyai performa lebih baik daripada sort Merge Joins. Namun Sort Merge Joins akan bekerja lebih baik daripada Hash Joins bila terdapat kondis berikut ini:
- Baris-baris sudah diurutkan
- Operasi Pengurutan tidak perlu untuk dilakukan.
Sort Merge Join sangat berguna apabila kondisi JOIN diantara dua tabel bukan berbentuk kondisi sama namun mempunyai bentuk kondisi seperti <, <=, >, atau >=.
7. Cartesian Joins
Sebuah Cartesian Joins digunakan ketika satu atau lebih tabel tidak mempunyai kondisi penggabungan terhadap tabel lainnya. Optimizer akan menggabungkan setiap baris di tabel pertama dengan setiap baris di tabel lainya untuk menghasilkan sebuah Cartesian Produk dari dua set tersebut.
8. Outer Joins
Outer Joins mempunyai proses dimana selain baris yang memenuhi kondisi JOIN yang dimasukkan ke dalam hasil. Outer Joins akan menambahkan baris yang tidak memenuhi kondisi JOIN namun digabung dengan nilai NULL. Terdapat 3 Jenis Outer Join yaitu:
Right Join
Perintah Right Join akan mengembalikan baris-baris yang memenuhi kondisi JOIN dan juga baris di tabel kanan yang tidak memenuhi kondisi JOIN dengan ditambahkan NULL.
Left Join
Perintah Left Join akan mengembalikan baris-baris yang memenuhi kondisi JOIN dan juga baris di tabel kiri yang tidak memenuhi kondisi JOIN dengan ditambahkan NULL.
Full Outer join
Full Outer Join adalah sebuah JOIN yang berfungsi sebagai kombinasi dari Left Join dan Right Join dimana selain hasil dari Inner Join dimasukkan ke dalam tabel hasil, baris-baris tabel yang tidak dimasukkan di dalam hasil akan di tambahkan dengan NULL dan dimasukkan ke dalam tabel hasil.
Nested Loop Outer Join
Operasi ini akan digunakan ketika sebuah Outer Join digunakan di antara 2 tabel dimana Outer Join akan mengembalikan baris di Outer Table meskipun tidak memenuhi kondisi JOIN. Hal ini menimbulkan 2 kondisi yaitu:
- Jika baris di Inner Table memenuhi kondisi maka tambahkan kolom di Inner Table ke Outer Table dan tampilkan ke dalam hasil.
- Jika baris di Inner Table tidak ada yang memenuhi kondisi dengan Outer Table maka tampilkan baris di Outer Table dengan semua kolom di Inner Table diganti dengan NULL.
9. Sort Merge Outer Join
Optimizer akan menggunakan Sort Merge untuk Outer Join apabila:
- Jika penggunaan Nested Loop Join tidaklah optimal karena jumlah data yang besar dan tidak adanya kondisi JOIN yang cukup efisien.
- Jika Optimizer menemukan bahwa penggunaan Sort Merge akan meningkatkan performa daripada Hash Join karena operasi pengurutan pada Sort Merge tidak perlu untuk dilakukan lagi.
Implementasi tentang konsep-konsep di atas bisa Anda simak selengkapnya di sini: