ความแตกต่างระหว่าง Inner Join และ Outer Join ใน SQL
เนื้อหา
Inner Join และ Outer Join เป็นประเภทของการเข้าร่วม เข้าร่วมเปรียบเทียบและรวมสิ่งอันดับจากสองความสัมพันธ์หรือตาราง Inner Join ระบุการเข้าร่วมแบบธรรมชาติเช่นถ้าคุณเขียนคำสั่งการเข้าร่วมที่ไม่มีคำหลักด้านในจะทำการดำเนินการเข้าร่วมแบบธรรมชาติ ความแตกต่างที่อาจเกิดขึ้นระหว่าง Inner Join และ Outer Join คือ เข้าร่วม Inner ส่งกลับเฉพาะสิ่งอันดับที่ตรงกันจากทั้งตารางและ เข้าร่วม Outer ส่งคืน tuples ทั้งหมดจากทั้งตารางเปรียบเทียบ ให้เราคุยความแตกต่างอื่น ๆ ระหว่าง Inner Join และ Outer เข้าร่วมด้วยความช่วยเหลือของแผนภูมิเปรียบเทียบที่แสดงด้านล่าง
- แผนภูมิเปรียบเทียบ
- คำนิยาม
- ความแตกต่างที่สำคัญ
- ข้อสรุป
แผนภูมิเปรียบเทียบ
พื้นฐานสำหรับการเปรียบเทียบ | เข้าร่วม Inner | เข้าร่วม Outer |
---|---|---|
ขั้นพื้นฐาน | Inner Join แสดงผลลัพธ์เฉพาะสิ่งอันดับที่ตรงกันจากทั้งสองตาราง | Outer Join แสดง tuples ทั้งหมดจากทั้งสองตาราง |
ฐานข้อมูล | ขนาดที่เป็นไปได้ของฐานข้อมูลที่ส่งคืนโดย Inner Join มีขนาดเล็กกว่า Outer Join | Outer join กลับฐานข้อมูลที่มีขนาดใหญ่กว่า |
ประเภท | ไม่มีประเภท | ด้านนอกซ้ายเข้าร่วม เข้าร่วม Outer ขวา และเข้าร่วมด้านนอกเต็ม |
คำจำกัดความของ Inner Join
Inner Join เรียกอีกอย่างหนึ่งว่า Natural Join Inner Join เปรียบเทียบสองตารางและรวมการจับคู่ tuple ในทั้งสองตาราง มันถูกเรียกว่าเป็นประเภทเริ่มต้นของการเข้าร่วมเป็นข้อเข้าร่วมจะถูกเขียนโดยไม่ต้องใช้คำหลักภายในมันดำเนินการเข้าร่วมธรรมชาติ หากส่วนคำสั่ง Join ถูกเขียนโดยไม่มีคีย์เวิร์ด Outer คำสั่งด้านในจะถูกรวมเข้าไปด้วย
Inner Join สามารถอธิบายได้ด้วยตัวอย่าง มีโต๊ะนักเรียนสองโต๊ะและโต๊ะแผนก ตอนนี้ให้เราเข้าใจว่าการเข้าร่วมภายในทำงานอย่างไร
SELECT ชื่อ, Sem, Deparment_name จากนักศึกษาเข้าร่วมภายในแผนก ON Student.Department_ID = ภาควิชา IDคุณสามารถเห็นได้ว่าเฉพาะสิ่งอันดับที่ได้รับในผลลัพธ์ที่ Student.Department_ID = แผนก ID ดังนั้นเราสามารถพูดได้ว่า Inner Join ได้รวมเฉพาะการจับคู่ tuple ของสองตาราง
นิยามของ Outer Join
ไม่เหมือนใน Inner Join เฉพาะ tuples เหล่านั้นเท่านั้นคือเอาต์พุตที่มีค่าแอ็ตทริบิวต์เดียวกันในทั้งตารางเปรียบเทียบ เข้าร่วมด้านนอกเอาท์พุท tuples ทั้งหมดของทั้งสองตาราง Outer Join เป็นสามประเภท เข้าร่วม Outer Left, เข้าร่วม Outer ขวาและ เต็มนอกเข้าร่วม.
ให้เราเข้าใจพวกเขาทีละคน ก่อนอื่นให้เราเข้าร่วม Left Outer
เลือกชื่อ, ชื่อแผนกจากนักศึกษาด้านนอกด้านนอกเข้าร่วมแผนกของนักศึกษาแผนก _ID = แผนกออก ID
คุณจะเห็นว่าสิ่งอันดับทั้งหมดจากตารางนักเรียนจะปรากฏในผลลัพธ์เลือกชื่อ, ชื่อแผนกจากแผนกด้านนอกด้านนอกเข้าร่วมนักศึกษากับนักศึกษาแผนก _ID = แผนกออก ID
คุณจะเห็นว่าสิ่งอันดับทั้งหมดจากตารางแผนกปรากฏขึ้นเลือกชื่อ, ชื่อแผนกจากนักศึกษาเต็มรูปแบบภายนอกเข้าร่วมแผนก ON นักศึกษาแผนก _ID = แผนกออก ID
คุณสามารถสังเกตได้ว่าสิ่งอันดับทั้งหมดจากทั้งสองตารางจะแสดงในผลลัพธ์- ความแตกต่างพื้นฐานระหว่าง Inner Join และ Outer Join คือการรวมภายในและเปรียบเทียบเฉพาะ tuples ที่ตรงกันจากทั้งสองตาราง ในทางตรงกันข้าม Outer Join เปรียบเทียบและรวม tuples ทั้งหมดจากทั้งสองตารางที่ถูกเปรียบเทียบ
- ขนาดฐานข้อมูลของผลลัพธ์ที่ได้จากการรวมภายในมีขนาดเล็กกว่าการรวมภายนอก
- การเข้าร่วมด้านนอกมีสามประเภทการเข้าร่วมด้านนอกด้านนอกการเข้าร่วมด้านนอกด้านนอกและการเข้าร่วมเต็มรูปแบบภายนอก แต่ภายในเข้าร่วมไม่มีประเภทดังกล่าว
สรุป:
ทั้งการเข้าร่วมมีประโยชน์มาก การใช้งานขึ้นอยู่กับความต้องการของผู้ใช้