Setiap hasil dari operasi SQL secara fungsional adalah tabel baru, baik disimpan dalam disk atau dalam memori
Fungsi gabungan adalah untuk "Bergabung" dua tabel bersama menjadi tabel ketiga sintetis yang (biasanya) hanya ada dalam memori selama waktu itu adalah output ke aplikasi.
Alasan untuk menggunakan gabungan adalah untuk mengurangi Anomali Data , dengan memastikan bahwa data muncul di satu dan hanya satu tempat dalam database.
Pertimbangkan yang berikut ini:
Person ( ID Integer Primary Key, FName String, LName String, Address String, City String, ZipCode String)
Di sini, setiap kali pemerintah mengubah kode pos (yang terjadi terlalu sering untuk selera pengembang basis data * tabel orang perlu diperbarui sehingga semua kode pos lama dengan benar milik kota yang benar dan kode pos baru.
Dalam hal ini, kode pos yang sama ada dalam beberapa tupel tabel, dan jika tabel tersebut dapat diedit secara manual, akan mengalami anomali pembaruan yang parah karena kombinasi kode kota / kota baru dimasukkan tanpa basis data secara keseluruhan diperbarui.
Dengan memiliki tiga tabel sebagai gantinya, kami mendapatkan data yang sama, tetapi dengan peningkatan fleksibilitas dan keandalan (dengan mengorbankan beberapa kinerja, meskipun pertanyaan "denasionalisasi yang tepat" adalah topik untuk serangkaian jawaban lain.)
Person ( PersonID Integer Primary Key, FName String, LName String)
City ( CityID Integer Primary Key, City String, State String, ZipCode String )
Address ( AddressID Integer Primary Key, AddressLine1 String, CityID Integer References City, PersonID Integer References Person)`
Dan kita bisa mendapatkan satu "tabel" dari yang di atas melalui kueri berikut:
SELECT Fname, Lname, AddressLine1, City, State, ZipCode
FROM Person
INNER JOIN Address USING (PersonID)
INNER JOIN City USING (CityID)
Ini memungkinkan kami untuk memperbarui tabel individu setiap kali sesuatu yang spesifik tentang mereka berubah, tanpa merusak sisa data terkait.
An INNER JOIN
adalah tipe default dari join. Secara kasar itu mencatat: "gabungkan tupel di mana catatan ini dari tabel a cocok dengan catatan ini dari tabel b" Jenis gabungan lainnya adalah OUTER JOINS
dan apa yang dikenal sebagai a CARTESIAN PRODUCT
. Gabungan luar adalah "Ambil semuanya dari tabel kiri atau kanan (sebagaimana ditentukan) dan di mana tabel lainnya cocok, bergabunglah. Di mana tidak cocok, isi dengan nol" Dan produk kartesius (tanpa masuk ke aljabar relasional adalah: Ambil setiap kemungkinan kombinasi tupel di kedua tabel dan hasilkan dalam satu tabel, tanpa mencocokkan apa pun.
* Lebih dari tidak pernah, terutama dalam kasus memindahkan batas kode pos karena persekongkolan