แผนภูมิเปรียบเทียบ
พื้นฐานสำหรับการเปรียบเทียบ | เข้าร่วม Outer Left | เข้าร่วม Outer ขวา | เต็มนอกเข้าร่วม |
---|---|---|---|
ขั้นพื้นฐาน | tuples ทั้งหมดของตารางด้านซ้ายยังคงอยู่ในผลลัพธ์ | สิ่งอันดับของตารางด้านขวาทั้งหมดจะยังคงอยู่ในผลลัพธ์ | สิ่งอันดับทั้งจากซ้ายและขวาจะอยู่ในผลลัพธ์ |
ส่วนขยาย NULL | tuples ของตารางด้านซ้ายที่ไม่มี tuple ที่ตรงกันในตารางด้านขวาจะถูกขยายด้วยค่า NULL สำหรับคุณลักษณะของตารางด้านขวา | tuples ของตารางด้านขวาที่ไม่มี tuple ที่ตรงกันในตารางด้านซ้ายจะถูกขยายด้วยค่า NULL สำหรับคุณลักษณะของตารางด้านซ้าย | สิ่งอันดับของด้านซ้ายเช่นเดียวกับตารางด้านขวาที่ไม่มีสิ่งอันดับที่ตรงกันในตารางด้านขวาและด้านซ้ายตามลำดับจะถูกขยายด้วยค่า NULL สำหรับคุณลักษณะของตารางด้านขวาและด้านซ้าย |
คำจำกัดความของ Left Outer Join
สมมติว่าเรามี“ Table_A ด้านนอกซ้ายเข้าร่วม Table_B “ ดังนั้น Table_A เป็นตาราง ด้านซ้าย ของเราตามที่ปรากฏทางด้านซ้ายของการดำเนินการ ด้านนอกด้านซ้ายเข้าร่วม และ Table_B เป็นตาราง ด้านขวา ของเรา
เริ่มแรกการรวม ภายใน จะถูกนำไปใช้กับ Table_A และ Table_B ซึ่งจะคืนค่า tuple ที่ตรงกันทั้งหมดจากตาราง A และ B
ถัดไปมันจะคืนค่า tuples ทั้งหมดจาก Table_A ที่ไม่มี tuple ที่ตรงกันใน Table_B สิ่งนั้นสิ่งอันดับทูเปิลจะถูกเติมด้วย ค่า NULL สำหรับคุณลักษณะของตารางด้านขวา
ดังนั้น ผลลัพธ์ที่ ได้จากการเข้าร่วม Outer Outer Outer ยังคงรักษา tuples ทั้งหมดจากตารางด้านซ้ายและมีการจับคู่ tuples จากตารางด้านขวาเท่านั้น
ให้เราพูดถึง Left Outer เข้าร่วมกับตัวอย่าง; เรามีสองตารางด้านล่างโต๊ะ นักเรียน และโต๊ะ แผนก
ตอนนี้เราจะสมัครเข้าร่วม Left Outer บนโต๊ะนักเรียนและแผนก
SELECT * จากซ้ายซ้ายของ นักศึกษา เข้าร่วม แผนก
เมื่อวันที่นักเรียน Student_ID = แผนกนักเรียน _ID
ในแบบสอบถามด้านบน Table Student คือตารางด้านซ้ายและ Table เป็นตารางที่ถูกต้อง ดังนั้นตาม Left Outer Join ผลลัพธ์จะต้องมีสิ่งอันดับจากตารางนักเรียนและมีการจับคู่สิ่งอันดับจากตารางแผนก
นิยามของ Right Outer Join
สมมติว่าเรามี“ Table_A ด้านนอกขวาเข้าร่วม Table_B “ ดังนั้น Table_A เป็นตาราง ด้านซ้าย ของเราซึ่งดูเหมือนว่าจะอยู่ด้านซ้ายของการดำเนินการ ด้านนอกด้านขวา และ Table_B เป็นตาราง ด้านขวา ของเรา
เช่นเดียวกับการเข้าร่วม Left Outer ในตอนแรกการรวม ภายใน จะถูกนำไปใช้กับ Table_A และ Table_B ซึ่งจะส่งคืน tuple ที่ตรงกันทั้งหมดจากตาราง A และ B
ถัดไปมันจะคืนค่า tuples ทั้งหมดจาก Table_B ที่ไม่มี tuple ที่ตรงกันใน Table_A เช่นนั้นสิ่งอันดับทูเปิลจะถูกเติมด้วยค่า NULL สำหรับคุณลักษณะของตารางด้านซ้าย
ดังนั้นผลลัพธ์ที่ได้จากการเข้าร่วมด้านนอกด้านขวาจะเก็บค่า tuples ทั้งหมดจากตารางด้านขวาและมีการจับคู่ tuples จากตารางด้านซ้ายเท่านั้น
ให้เราพูดถึง Right Outer เข้าร่วมกับตัวอย่าง; ด้านบนเรามีสองโต๊ะโต๊ะนักเรียนและโต๊ะแผนก
ตอนนี้เราจะใช้ Right Outer Join เข้า กับโต๊ะนักเรียนและโต๊ะแผนก
เลือก * จาก นักศึกษาด้าน ขวาเข้าร่วม แผนก
เมื่อวันที่นักเรียน Student_ID = แผนกนักเรียน _ID
ในแบบสอบถามด้านบนโต๊ะนักเรียนเป็นตารางด้านซ้ายและตารางแผนกของเราเป็นตารางด้านขวาของเรา ตามการดำเนินการ Outer Outer Join ผลลัพธ์จะต้องรวมสิ่งอันดับทั้งหมดจากตารางแผนกและมีการจับคู่สิ่งอันดับจากตารางนักเรียนเท่านั้น
ความหมายของการเข้าร่วม Full Outer
สมมติว่าเรามี“ Table_A Full Outer Join Table_B ” ดังนั้น Table_A เป็นตาราง ด้านซ้าย ของเราซึ่งดูเหมือนว่าจะอยู่ด้านซ้ายของการดำเนินการด้านนอกเต็มรูปแบบและ Table_B เป็นตาราง ด้านขวา ของเรา
Full Outer Join เป็นการ รวมกัน ของทั้งสอง, Left Outer Join และ Right Outer Join เริ่มแรกจะใช้การรวม ภายใน กับ Table_A และ Table_B เพื่อดึงข้อมูลทูเปิลที่ตรงกันจากทั้งสองตาราง จากนั้นมันจะขยาย tuples ของ Table_A ด้วย NULL ที่ไม่มี tuple ที่ตรงกันใน Table_B นอกจากนี้ยังขยาย tuples เหล่านั้นจาก Table_B ด้วย NULL ที่ไม่มี tuple ที่ตรงกันใน Table_A
ดังนั้น Full Outer Join ยังคงรักษาสิ่งอันดับจากซ้ายและตารางด้านขวาไว้พร้อมกับอันดับอันดับที่ตรงกันของทั้งสองตาราง
ให้เราคุยแบบเต็มภายนอกเข้าร่วมกับตัวอย่าง; เรามีสองตารางด้านบนโต๊ะ นักเรียน และโต๊ะ แผนก
ตอนนี้เราจะใช้การเข้าร่วมเต็มรูปแบบภายนอกกับตารางนักศึกษาและตารางแผนก
เลือก * จาก นักศึกษา เข้าร่วมเต็ม แผนก นอก
เมื่อวันที่นักเรียน Student_ID = แผนกนักเรียน _ID
ในแบบสอบถามด้านบนโต๊ะนักเรียนเป็นตารางด้านซ้ายของเราและโต๊ะแผนกเป็นตารางด้านขวาของเรา ตามการรวมภายนอกเต็มผลลัพธ์จะต้องรวมสิ่งอันดับทั้งหมดจากทั้งสองตาราง
ความแตกต่างที่สำคัญระหว่างการรวมด้านซ้ายขวาและเต็ม
- ผลลัพธ์ของการเข้าร่วม Outer Outer Left มี tuples ทั้งหมดของตารางด้านซ้าย ในทำนองเดียวกันผลลัพธ์ของการเข้าร่วม Outer Outer Right มี tuples ทั้งหมดของตารางด้านขวา และผลลัพธ์ของการเข้าร่วม Outer Outer Full มี tuples ทั้งหมดจากด้านซ้ายและตารางด้านขวา
- ใน Left Outer Join tuples ของตารางด้านซ้ายที่ไม่มี tuple ที่ตรงกันในตารางด้านขวาจะถูกขยายด้วยค่า Null สำหรับแอตทริบิวต์ของตารางด้านขวา ฝั่งตรงข้ามเป็นกรณีของ Right Outer Join และใน Full Outer Join, tuples จากตารางซ้ายและขวาที่ไม่มี tuples ที่ตรงกันในตารางขวาและซ้ายตามลำดับจะถูกขยายด้วย NULL สำหรับแอตทริบิวต์ของตารางขวาและซ้ายตามลำดับ
สรุป:
ดูแลตำแหน่งของชื่อตารางในแบบสอบถาม ในฐานะที่เป็นตำแหน่งของชื่อตารางในแบบสอบถามตัดสินใจว่าตารางจะได้รับการพิจารณาว่าเป็นตารางซ้ายหรือตารางด้านขวา