การเชื่อมต่อฐานข้อมูล (DBMS Joins): ประเภทของการเชื่อมต่อแบบ THETA, Inner, Outer, Equi
⚡ สรุปอย่างชาญฉลาด
การเชื่อมต่อ (Join) ในระบบจัดการฐานข้อมูล (DBMS) เป็นการดำเนินการแบบไบนารีที่รวมแถวจากสองตารางขึ้นไปโดยใช้คีย์หลักและคีย์รอง การเชื่อมต่อแบ่งออกเป็น การเชื่อมต่อภายใน (inner join) ซึ่งจะส่งคืนเฉพาะแถวที่ตรงกัน และการเชื่อมต่อภายนอก (outer join) ซึ่งจะเก็บแถวที่ไม่ตรงกันและเติมช่องว่างด้วยค่าว่าง (null)

Join ใน DBMS คืออะไร?
เข้าร่วมใน DBMS `join` เป็นการดำเนินการแบบไบนารีที่ช่วยให้คุณสามารถรวมผลลัพธ์จากการเชื่อมตารางและการเลือกข้อมูลเข้าไว้ในคำสั่งเดียวได้ เป้าหมายของการสร้างเงื่อนไขการเชื่อมตารางคือการรวมข้อมูลจากสองตารางขึ้นไป โดยตารางเหล่านั้นจะเชื่อมโยงกันโดยใช้คีย์หลักและคีย์ย่อย กุญแจต่างประเทศ.
ประเภทของการเข้าร่วม
การรวมใน DBMS มีสองประเภทหลัก:
- รวมภายใน: Theta, Natural, EQUI
- ข้อต่อภายนอก: ซ้าย, ขวา, เต็ม
ตารางด้านล่างแสดงตัวอย่างประเภทการเชื่อมต่อทั้งหมด ก่อนที่จะอธิบายแต่ละประเภทด้วยตัวอย่าง
| ร่วมเป็นผู้ขายกับเราที่ | คืนสินค้า | แถวที่ไม่ตรงกัน |
|---|---|---|
| อินเนอร์ (Theta / EQUI / เนเชอรัล) | แถวที่ตรงตามเงื่อนไขในทั้งสองตาราง | ปรับตัวลดลง |
| ด้านนอกซ้าย | แถวซ้ายทั้งหมดรวมถึงคู่ที่ตรงกัน | เก็บจากด้านซ้าย ว่างเปล่าทางด้านขวา |
| ขวานอก | แถวขวาทั้งหมดบวกกับการจับคู่ | เก็บจากทางขวา เว้นว่างทางซ้าย |
| ด้านนอกทั้งหมด | ทุกแถวจากทั้งสองตาราง | เก็บจากทั้งสองอย่าง เว้นว่างไว้เมื่อขาดหายไป |
การเข้าร่วมภายใน
การเข้าร่วมภายใน ใช้เพื่อส่งคืนแถวจากทั้งสองตารางที่ตรงตามเงื่อนไขที่กำหนด เป็นการดำเนินการเชื่อมต่อที่ใช้กันอย่างแพร่หลายที่สุดและสามารถถือได้ว่าเป็นประเภทการเชื่อมต่อเริ่มต้น
การเชื่อมแบบ Inner Join หรือ Equijoin คือการเชื่อมข้อมูลโดยใช้ตัวเปรียบเทียบ โดยใช้การเปรียบเทียบความเท่าเทียมกันในเงื่อนไขการเชื่อม อย่างไรก็ตาม หากคุณใช้ตัวดำเนินการเปรียบเทียบอื่นๆ เช่น “>” จะไม่เรียกว่า Equijoin อีกต่อไป Inner Join ยังแบ่งออกเป็นสามประเภทย่อย:
- ธีต้าเข้าร่วม
- เข้าร่วมอย่างเป็นธรรมชาติ
- EQUI เข้าร่วม
ธีต้าเข้าร่วม
ธีต้าเข้าร่วม ช่วยให้คุณสามารถรวมสองตารางเข้าด้วยกันโดยใช้เงื่อนไขที่แสดงด้วยค่าเธต้า การรวมแบบเธต้าใช้ได้กับตัวดำเนินการเปรียบเทียบทั้งหมด โดยใช้สัญลักษณ์ แทน θกรณีทั่วไปของการดำเนินการ JOIN เรียกว่า theta join
ไวยากรณ์:
A ⋈θ B
การเชื่อมต่อแบบเธต้า (theta join) สามารถใช้เงื่อนไขใดก็ได้ในเกณฑ์การเลือก
พิจารณาตารางต่อไปนี้
| ตาราง A | ตาราง B | |||
|---|---|---|---|---|
| คอลัมน์ 1 | คอลัมน์ 2 | คอลัมน์ 1 | คอลัมน์ 2 | |
| 1 | 1 | 1 | 1 | |
| 1 | 2 | 1 | 3 | |
ตัวอย่างเช่น:
A ⋈ A.column 2 > B.column 2 (B)
| A ⋈ A.คอลัมน์ 2 > B.คอลัมน์ 2 (B) | |
|---|---|
| คอลัมน์ 1 | คอลัมน์ 2 |
| 1 | 2 |
EQUI เข้าร่วม
EQUI เข้าร่วม การดำเนินการนี้จะทำเมื่อการเชื่อมต่อแบบเธต้าใช้เงื่อนไขความเท่าเทียมกันเพียงอย่างเดียว การเชื่อมต่อแบบ EQUI เป็นการดำเนินการที่ยากที่สุดในการนำไปใช้ให้มีประสิทธิภาพ อาร์ดีบีเอ็มเอสและนี่ก็เป็นหนึ่งในเหตุผลที่ทำให้ระบบจัดการฐานข้อมูลเชิงสัมพันธ์ (RDBMS) อาจมีปัญหาด้านประสิทธิภาพ
ตัวอย่างเช่น:
A ⋈ A.column 2 = B.column 2 (B)
| A ⋈ A.คอลัมน์ 2 = B.คอลัมน์ 2 (B) | |
|---|---|
| คอลัมน์ 1 | คอลัมน์ 2 |
| 1 | 1 |
การรวมแบบธรรมชาติ (⋈)
เข้าร่วมตามธรรมชาติ ไม่ใช้ตัวดำเนินการเปรียบเทียบใดๆ ในการเชื่อมต่อประเภทนี้ คุณลักษณะควรมีชื่อและโดเมนเดียวกัน ในการเชื่อมต่อแบบธรรมชาติ จะต้องมีคุณลักษณะร่วมกันอย่างน้อยหนึ่งรายการระหว่างความสัมพันธ์ทั้งสอง
ฟังก์ชันนี้จะทำการเลือกโดยพิจารณาความเท่าเทียมกันของคุณลักษณะที่ปรากฏในความสัมพันธ์ทั้งสอง และกำจัดคุณลักษณะที่ซ้ำกันออกไป
ตัวอย่าง: พิจารณาตารางสองตารางต่อไปนี้
| C | |
|---|---|
| หนุ่ม | สี่เหลี่ยมด้านเท่า |
| 2 | 4 |
| 3 | 9 |
| D | |
|---|---|
| หนุ่ม | ลูกบาศก์ |
| 2 | 8 |
| 3 | 18 |
C ⋈ D
| ค ⋈ ดี | ||
|---|---|---|
| หนุ่ม | สี่เหลี่ยมด้านเท่า | ลูกบาศก์ |
| 2 | 4 | 8 |
| 3 | 9 | 18 |
การเข้าร่วมภายนอก
An การเข้าร่วมภายนอก การเชื่อมตารางแบบนี้ไม่จำเป็นต้องมีข้อมูลที่ตรงกันในทุกระเบียนของตารางทั้งสองที่เชื่อมกัน ในการเชื่อมตารางแบบนี้ ตารางจะเก็บรักษาระเบียนแต่ละรายการไว้แม้ว่าจะไม่มีระเบียนอื่นที่ตรงกันก็ตาม การเชื่อมตารางแบบภายนอก (Outer Join) มี 3 ประเภท ได้แก่:
- เข้าร่วมด้านนอกซ้าย
- เข้าร่วมด้านนอกขวา
- เข้าร่วมภายนอกเต็มรูปแบบ
เข้าร่วมด้านนอกซ้าย (A ⟕ B)
เข้าร่วมด้านนอกซ้าย ฟังก์ชันนี้จะส่งคืนข้อมูลทุกแถวจากตารางทางด้านซ้าย แม้ว่าจะไม่พบแถวที่ตรงกันในตารางทางด้านขวาก็ตาม หากไม่พบข้อมูลที่ตรงกันในตารางทางด้านขวา จะส่งคืนค่าว่าง (null)
พิจารณาตารางสองตารางต่อไปนี้
| A | |
|---|---|
| หนุ่ม | สี่เหลี่ยมด้านเท่า |
| 2 | 4 |
| 3 | 9 |
| 4 | 16 |
| B | |
|---|---|
| หนุ่ม | ลูกบาศก์ |
| 2 | 8 |
| 3 | 18 |
| 5 | 75 |
AB
| เอ ⟕ บี | ||
|---|---|---|
| หนุ่ม | สี่เหลี่ยมด้านเท่า | ลูกบาศก์ |
| 2 | 4 | 8 |
| 3 | 9 | 18 |
| 4 | 16 | - |
การเชื่อมแบบ Right Outer Join (A ⟖ B)
เข้าร่วมด้านนอกขวา การเชื่อมตารางด้านขวา (Right Outer Join) จะส่งคืนคอลัมน์ทั้งหมดจากตารางด้านขวา แม้ว่าจะไม่พบแถวที่ตรงกันในตารางด้านซ้ายก็ตาม หากไม่พบแถวที่ตรงกันในตารางด้านซ้าย จะส่งคืนค่าว่าง (null) การเชื่อมตารางด้านขวาเป็นสิ่งที่ตรงกันข้ามกับการเชื่อมตารางด้านซ้าย (Left Join)
AB
| เอ ⟖ บี | ||
|---|---|---|
| หนุ่ม | ลูกบาศก์ | สี่เหลี่ยมด้านเท่า |
| 2 | 8 | 4 |
| 3 | 18 | 9 |
| 5 | 75 | - |
การเชื่อมต่อภายนอกแบบเต็ม (A ⟗ B)
ใน เข้าร่วมภายนอกเต็มรูปแบบสิ่งอันดับทั้งหมดจากความสัมพันธ์ทั้งสองจะรวมอยู่ในผลลัพธ์ โดยไม่คำนึงถึงเงื่อนไขการจับคู่
ตัวอย่าง:
AB
| เอ ⟗ บี | ||
|---|---|---|
| หนุ่ม | สี่เหลี่ยมด้านเท่า | ลูกบาศก์ |
| 2 | 4 | 8 |
| 3 | 9 | 18 |
| 4 | 16 | - |
| 5 | - | 75 |


