SQL memiliki jenis gabungan berikut, yang semuanya berasal langsung dari teori himpunan:
-
Gabungan batin.
From A inner join Badalah ekuivalen dengan A B, menyediakan himpunan elemen yang sama untuk kedua himpunan. -
Gabung luar kiri.
From A left outer join Badalah 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 Badalah 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 Badalah 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 Bmenghasilkan 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
fromklausa untuk mengungguli kumpulan hasil kandidat. -
Terapkan kriteria bergabung di
fromklausa dan kurangi kumpulan hasil kandidat. -
Terapkan kriteria dalam
where clauseuntuk lebih mengurangi kumpulan hasil kandidat. -
partisi hasil kandidat yang ditetapkan ke dalam grup berdasarkan kriteria dalam
group byklausa. -
Hapus dari hasil kandidat, atur kolom apa pun selain yang terlibat dalam
group byklausa 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 bykolom atau nilai komputasi dari fungsi agregat untuk grup dihilangkan. -
Terapkan kriteria di
havingklausa untuk mengurangi kumpulan hasil kandidat dan menghasilkan kumpulan hasil akhir. -
Urutkan hasil akhir sesuai kriteria di
order byklausa 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.