ความแตกต่างระหว่าง Inner Join และ Outer Join ใน SQL

ผู้เขียน: Laura McKinney
วันที่สร้าง: 2 เมษายน 2021
วันที่อัปเดต: 12 พฤษภาคม 2024
Anonim
SQL Joins: Difference Between Inner/Left/Right/Outer Joins
วิดีโอ: SQL Joins: Difference Between Inner/Left/Right/Outer Joins

เนื้อหา


Inner Join และ Outer Join เป็นประเภทของการเข้าร่วม เข้าร่วมเปรียบเทียบและรวมสิ่งอันดับจากสองความสัมพันธ์หรือตาราง Inner Join ระบุการเข้าร่วมแบบธรรมชาติเช่นถ้าคุณเขียนคำสั่งการเข้าร่วมที่ไม่มีคำหลักด้านในจะทำการดำเนินการเข้าร่วมแบบธรรมชาติ ความแตกต่างที่อาจเกิดขึ้นระหว่าง Inner Join และ Outer Join คือ เข้าร่วม Inner ส่งกลับเฉพาะสิ่งอันดับที่ตรงกันจากทั้งตารางและ เข้าร่วม Outer ส่งคืน tuples ทั้งหมดจากทั้งตารางเปรียบเทียบ ให้เราคุยความแตกต่างอื่น ๆ ระหว่าง Inner Join และ Outer เข้าร่วมด้วยความช่วยเหลือของแผนภูมิเปรียบเทียบที่แสดงด้านล่าง

  1. แผนภูมิเปรียบเทียบ
  2. คำนิยาม
  3. ความแตกต่างที่สำคัญ
  4. ข้อสรุป

แผนภูมิเปรียบเทียบ

พื้นฐานสำหรับการเปรียบเทียบเข้าร่วม Innerเข้าร่วม Outer
ขั้นพื้นฐานInner Join แสดงผลลัพธ์เฉพาะสิ่งอันดับที่ตรงกันจากทั้งสองตารางOuter Join แสดง tuples ทั้งหมดจากทั้งสองตาราง
ฐานข้อมูลขนาดที่เป็นไปได้ของฐานข้อมูลที่ส่งคืนโดย Inner Join มีขนาดเล็กกว่า Outer JoinOuter 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

คุณสามารถสังเกตได้ว่าสิ่งอันดับทั้งหมดจากทั้งสองตารางจะแสดงในผลลัพธ์

  1. ความแตกต่างพื้นฐานระหว่าง Inner Join และ Outer Join คือการรวมภายในและเปรียบเทียบเฉพาะ tuples ที่ตรงกันจากทั้งสองตาราง ในทางตรงกันข้าม Outer Join เปรียบเทียบและรวม tuples ทั้งหมดจากทั้งสองตารางที่ถูกเปรียบเทียบ
  2. ขนาดฐานข้อมูลของผลลัพธ์ที่ได้จากการรวมภายในมีขนาดเล็กกว่าการรวมภายนอก
  3. การเข้าร่วมด้านนอกมีสามประเภทการเข้าร่วมด้านนอกด้านนอกการเข้าร่วมด้านนอกด้านนอกและการเข้าร่วมเต็มรูปแบบภายนอก แต่ภายในเข้าร่วมไม่มีประเภทดังกล่าว

สรุป:

ทั้งการเข้าร่วมมีประโยชน์มาก การใช้งานขึ้นอยู่กับความต้องการของผู้ใช้