SQL memiliki jenis gabungan berikut, yang semuanya berasal langsung dari teori himpunan:
-
Gabungan batin.
From A inner join B
adalah ekuivalen dengan A B, menyediakan himpunan elemen yang sama untuk kedua himpunan. -
Gabung luar kiri.
From A left outer join B
adalah setara dengan (A B) (A B). Setiap A akan muncul setidaknya sekali; jika ada beberapa B yang cocok, A akan diulang satu kali per B yang cocok. -
Gabung luar kanan.
From A right outer join B
adalah setara dengan (A B) (B A). Ini identik dengan gabungan kiri dengan meja tempat perdagangan. Setiap B akan muncul setidaknya sekali; jika ada beberapa As yang cocok, setiap B akan diulang satu kali per pencocokan B. -
Gabungan luar penuh.
From A full outer join B
adalah setara dengan (A B) (A B) (B A). Setiap A dan setiap B akan muncul setidaknya sekali. Jika A cocok dengan beberapa B, itu akan diulang sekali per pertandingan; jika a B cocok dengan beberapa As, itu akan diulang sekali per pertandingan. -
Gabung Salib.
From A cross join B
menghasilkan produk kartesius A × B. Setiap A akan diulang sekali untuk setiap B. Jika A memiliki 100 baris dan B memiliki 100 baris, himpunan hasil akan terdiri dari 10.000 baris.
Perlu dicatat bahwa eksekusi teoritis dari select
kueri terdiri dari langkah-langkah berikut yang dilakukan dalam urutan ini:
-
Hitung produk kartesius lengkap dari kumpulan sumber di
from
klausa untuk mengungguli kumpulan hasil kandidat. -
Terapkan kriteria bergabung di
from
klausa dan kurangi kumpulan hasil kandidat. -
Terapkan kriteria dalam
where clause
untuk lebih mengurangi kumpulan hasil kandidat. -
partisi hasil kandidat yang ditetapkan ke dalam grup berdasarkan kriteria dalam
group by
klausa. -
Hapus dari hasil kandidat, atur kolom apa pun selain yang terlibat dalam
group by
klausa atau terlibat dalam evaluasi fungsi agregat. -
Hitung nilai fungsi agregat tersebut untuk setiap grup dalam kumpulan hasil kandidat.
-
Ciutkan setiap grup dalam kumpulan hasil kandidat menjadi satu baris yang terdiri dari kolom pengelompokan dan nilai yang dihitung untuk setiap fungsi agregat. Kumpulan hasil kandidat sekarang terdiri dari satu baris untuk setiap grup, dengan semua kolom selain
group by
kolom atau nilai komputasi dari fungsi agregat untuk grup dihilangkan. -
Terapkan kriteria di
having
klausa untuk mengurangi kumpulan hasil kandidat dan menghasilkan kumpulan hasil akhir. -
Urutkan hasil akhir sesuai kriteria di
order by
klausa dan memancarkannya.
Ada lebih banyak langkah, berkaitan dengan hal-hal seperti compute
dan compute by
klausa, tetapi ini cukup untuk mendapatkan gagasan teoretis tentang cara kerjanya.
Perlu juga dicatat bahwa tidak ada yang lain selain implementasi yang paling naif yang benar-benar mengevaluasi select
pernyataan dengan cara ini, tetapi hasil yang dihasilkan harus sama seperti jika langkah-langkah di atas dilakukan secara penuh.