ความแตกต่างระหว่างการเข้าร่วมด้านซ้ายและการเข้าร่วมภายนอกด้านซ้ายใน SQL - ความแตกต่างทั้งหมด
สารบัญ
ฐานข้อมูลประกอบด้วยคอลเลกชันที่เป็นระเบียบของข้อมูลที่มีโครงสร้าง โดยปกติจะจัดเก็บแบบอิเล็กทรอนิกส์ในระบบคอมพิวเตอร์ ฐานข้อมูลต่างๆ มากมาย เช่น SQL Server, Oracle, PostgreSQL และ MySQL โดยทั่วไปจะใช้ภาษาหนึ่งในการจัดการข้อมูล .
หนึ่งภาษาดังกล่าวเรียกว่า SQL SQL มีคำสั่งรวมที่แตกต่างกันในรูปแบบของ Inner Join, Left Join และ Right Join
อย่างที่คุณทราบ การเข้าร่วมใน SQL ใช้เพื่อรวบรวมแถวจากสองตารางขึ้นไปจากคอลัมน์ที่เกี่ยวข้อง นี่อาจทำให้เกิดคำถามว่ารูปแบบอื่นๆ ทำอะไรได้บ้าง
ฉันแน่ใจและค่อนข้างสับสนเล็กน้อย! แต่ไม่ต้องกังวล เราจะให้รายละเอียดเกี่ยวกับความหมายของคำเหล่านี้ และหวังว่าจะช่วยให้คุณเข้าใจได้ดีขึ้น
มาเริ่มกันเลย!
SQL คืออะไร?
SQL ย่อมาจาก Structured Query Language เป็นภาษาที่ใช้ในฐานข้อมูลต่างๆ สำหรับเขียนและสืบค้นข้อมูล ช่วยให้สามารถจัดการข้อมูลโดยใช้ตารางและแสดงภาษาเพื่อสอบถามตารางเหล่านี้และวัตถุที่เกี่ยวข้องอื่นๆ เช่น มุมมอง ฟังก์ชัน ขั้นตอน ฯลฯ
Donald Chamberlin และ Raymond Boyce เป็น นักออกแบบ ของ SQL ซึ่งพวกเขาสร้างขึ้นเพื่อจัดการข้อมูล โมเดลของพวกเขาอิงจากผลงานของ Edgar Frank Codd ซึ่งทำงานให้กับ IBM และเป็นผู้คิดค้นฐานข้อมูลเชิงสัมพันธ์ในยุค 70
ดูสิ่งนี้ด้วย: ออทิสติกหรือขี้อาย? (รู้ความแตกต่าง) – ความแตกต่างทั้งหมดเริ่มแรก มันถูกตั้งชื่อว่า SEQUEL แต่มันถูกทำให้สั้นลงเป็น SQL เนื่องจากเฉพาะเจาะจงปัญหาเครื่องหมายการค้า อย่างไรก็ตาม คุณยังสามารถเรียกมันว่า SEQUEL ได้หากต้องการ
ด้วย SQL คุณสามารถแทรก ลบ และอัปเดตข้อมูล และสร้าง ลบ หรือแก้ไขวัตถุฐานข้อมูลอื่นๆ คำสั่ง SQL มาตรฐานคือ “ select”, “delete”, “insert”, “update”, “create” และ “drop” สิ่งเหล่านี้สามารถบรรลุทุกสิ่งที่ต้องทำบนฐานข้อมูล
ยิ่งไปกว่านั้น ภาษานี้ใช้ในฐานข้อมูลหลายแห่งเพื่อช่วยจัดการข้อมูลและวัตถุฐานข้อมูล ถ้ามันฟังดูซับซ้อนสำหรับคุณ นี่คือวิดีโอที่อธิบายว่า SQL คืออะไรสำหรับผู้เริ่มต้น:
ดูสิ่งนี้ด้วย: อะไรคือความแตกต่างระหว่าง "อาหาร" และ "อาหาร"? (เปิดเผยข้อเท็จจริง) – ความแตกต่างทั้งหมดฐานข้อมูลสามารถทำงานโดยไม่มีภาษาได้หรือไม่?
ทำไมเราถึงใช้ SQL
ค่อนข้างง่าย เราจะไม่เข้าใจฐานข้อมูลหากไม่มี SQL ในทำนองเดียวกัน เราไม่สามารถสั่งฐานข้อมูลได้หากไม่มี SQL เนื่องจาก SQL เป็นระบบที่ใช้ในการสื่อสารกับฐานข้อมูล ระบบ
SQL ทำงานต่างๆ เช่น ลบ เพิ่ม หรือแก้ไขข้อมูล ระบบนี้มักใช้เพื่อทำให้ ง่ายต่อการจัดการข้อมูลจำนวนมาก โดยการจัดการอย่างมีประสิทธิภาพ ระบบจัดการฐานข้อมูลเชิงสัมพันธ์มาตรฐานบางระบบที่ใช้ SQL ได้แก่ Oracle, Sybase, Microsoft Access และ Ingres
Inner Join และ Outer Join คืออะไร
ก่อนอื่นเรามาทำความเข้าใจว่าการรวมคืออะไร ใน SQL การรวมจะใช้เพื่อรวม เนื้อหาของตารางต่างๆ คุณสามารถรวมข้อมูลได้หลายวิธีโดยระบุว่าคุณต้องการข้อมูลอย่างไรแบบบูรณาการและประเภทของการเข้าร่วมที่คุณต้องการใช้
การรวมภายในคือการรวมที่ส่งคืนแถวทั้งหมดจากทั้งตารางที่เข้าร่วมโดยที่ระเบียน ที่สำคัญของตารางหนึ่งเหมือนกับระเบียน ที่สำคัญของอีกตารางหนึ่ง
การรวมประเภทนี้ต้องการตัวดำเนินการเปรียบเทียบเพื่อจับคู่แถวจากตารางที่เข้าร่วมซึ่งรองรับฟิลด์มาตรฐานหรือคอลัมน์ของทั้งสองตาราง
การรวมภายนอกสามารถคืนค่าที่ไม่ใช่ -จับคู่แถวในหนึ่งตารางหรือทั้งสองตาราง โดยพื้นฐานแล้ว จะส่งคืนแถวทั้งหมดจากตารางทั้งหมดที่ตรงตามเงื่อนไข
การรวมภายนอกมีหลายประเภท สิ่งเหล่านี้รวมถึงการเข้าร่วมด้านซ้าย การเข้าร่วมด้านขวา และการเข้าร่วมภายนอกแบบเต็ม
นี่คือตารางสรุปฟังก์ชันที่สำคัญของการรวมที่มีอยู่ใน SQL:
ประเภทการรวม:<2 | ฟังก์ชัน : |
การเข้าร่วมภายใน | การดำเนินการนี้จะส่งคืนแถวเมื่อมีอย่างน้อยหนึ่งรายการที่ตรงกันในทั้งสองตาราง |
การเข้าร่วมภายนอกด้านซ้าย | การดำเนินการนี้จะส่งคืนแถวทั้งหมดจากตารางด้านซ้ายร่วมกับแถวที่ตรงกันจากตารางด้านขวา |
การเข้าร่วมภายนอกด้านขวา | การดำเนินการนี้จะส่งคืนแถวทั้งหมดจากตารางด้านขวาร่วมกับแถวที่ตรงกันจากตารางด้านซ้าย |
การรวมภายนอกแบบเต็ม | เป็นการรวมการรวมภายนอกด้านซ้ายและการรวมภายนอกด้านขวา คืนค่าแถวจากตารางใดตารางหนึ่งเมื่อตรงตามเงื่อนไข |
สิ่งนี้แสดงความแตกต่างระหว่างการรวมสี่รายการใน SQL
ความแตกต่างระหว่างการรวมภายในและภายนอก
ยังมีอีกมาก ความแตกต่างที่สำคัญระหว่างการรวมภายในและการรวมภายนอกคือ การรวมภายในมักส่งผลให้เกิดจุดตัดของตารางสองตาราง ในทางตรงกันข้าม การรวมภายนอกส่งผลให้เกิดการผสมของสองตาราง
โดยพื้นฐานแล้ว การรวมภายใน ส่งผลให้เกิดส่วนที่ทับซ้อนกันของชุดข้อมูลสองชุด ดังที่แสดงในภาพด้านล่าง คุณจะรวมเฉพาะแถวมาตรฐานเหล่านั้นในทั้งสองตารางสำหรับการรวมภายใน ในทางกลับกัน การรวมภายนอกจะส่งคืนระเบียนทั้งหมดที่มีค่าในตารางด้านซ้ายหรือตารางที่เหมาะสม
การรวมภายนอกประกอบด้วยแถวที่ตรงกันและแถวที่ไม่ตรงกันจากตาราง นอกจากนี้ การรวมภายนอก แตกต่างจากการรวมภายในใน การจัดการเงื่อนไขการจับคู่ที่ผิดพลาด
การเข้าร่วมภายนอกด้านซ้ายประกอบด้วยการเข้าร่วมภายนอกด้านซ้าย + การเข้าร่วมภายใน ในขณะที่ Right Outer Join ยังประกอบไปด้วย Right Outer Join + Inner Join Full Outer Join ประกอบด้วย จากทั้งหมด
Left Outer (เหมือนกับ Left Outer Join ใน SQL หรือไม่)
บางทีคุณอาจเคยได้ยิน ออกจากการเข้าร่วมใน SQL ด้วยหรือไม่ มันก็แค่การรวมภายนอกด้านซ้ายเหมือนกัน พวกเขามีชื่อที่แตกต่างกันสองชื่อสำหรับฟังก์ชันเดียวกัน
การเข้าร่วมด้านซ้ายจะเหมือนกับการรวมภายนอกด้านซ้ายใน SQL และเป็นหนึ่งเดียว การเข้าร่วมด้านซ้ายเป็นเพียงการย่อสำหรับการเข้าร่วมภายนอกด้านซ้าย คำ“ด้านนอก” ทำให้การทำงานตรงไปตรงมามากขึ้น แต่ปุ่มทั้งสองทำหน้าที่เหมือนกัน
เหตุใดการเข้าร่วมด้านซ้ายจึงเรียกว่าการเข้าร่วมภายนอกด้านซ้าย
คุณจะมีตัวเลือกในการเรียกโดยใช้ชื่อขยายหรือทางลัด นอกจากนี้ พวกมันยังเป็นสิ่งเดียวกันอีกด้วย
โปรดจำไว้ว่า การรวมนี้จะส่งกลับแถวทั้งหมดในตารางทางด้านซ้ายและแถวที่ตรงกันทางด้านขวาของการรวม หากไม่มีด้านที่ตรงกันทางด้านขวา ผลลัพธ์จะเป็นค่าว่าง
ดังนั้น หากเราต้องรวมสองตาราง A และ B SQL Left Outer Join จะส่งคืนแถวทั้งหมดในตารางด้านซ้าย ซึ่งก็คือ A และแถวทั้งหมดที่ตรงกันในอีกตาราง B ทางด้านขวา โดยสรุป ผลลัพธ์ของ SQL Left Join จะประกอบด้วยแถวจากตารางด้านซ้ายเสมอ
ความแตกต่างระหว่างการเข้าร่วมและการเข้าร่วมด้านซ้าย
สำหรับพื้นฐาน การเข้าร่วมเรียกอีกอย่างว่าการเข้าร่วมภายใน ในขณะที่การเข้าร่วมด้านซ้ายเป็นการเข้าร่วมภายนอก
แต่ข้อแตกต่างหลักคือคำสั่งรวมด้านซ้ายมีแนวโน้มที่จะรวมและรวมแถวทั้งหมดของตารางที่อ้างอิงทางด้านซ้ายของข้อมูล แทนที่จะเป็นเพียงแถวที่ไม่ตรงกัน แต่จะประกอบด้วยแถวทั้งหมดจากตารางด้านซ้ายและแถวที่ตรงกันจากตารางอื่นๆ
ควรใช้ Left Outer Join ใน SQL เมื่อใด
สมมติว่าคุณกำลังมองหาวิธีการรวมตารางต่างๆ หรือหากคุณเข้าร่วมสองตารางและต้องการให้ชุดผลลัพธ์เป็นรวมแถวที่ไม่ตรงกันของตารางเพียงแถวเดียว คุณควรใช้ส่วนคำสั่งการรวมภายนอกด้านซ้ายหรือส่วนคำสั่งการรวมภายนอกที่เหมาะสม การใช้การรวมภายนอกด้านซ้ายประกอบด้วยแถวที่ไม่ตรงกับตารางที่ระบุก่อนส่วนคำสั่งการรวมภายนอกด้านซ้าย
ในทางเทคนิค การรวมภายนอกด้านซ้ายจะระบุแถวทั้งหมดจากทั้งตารางที่ตรงตามเงื่อนไขการรวมและ แถวที่ไม่ตรงกันจากตาราง
การรวมภายนอกด้านซ้ายเพิ่มจำนวนแถวหรือไม่
นี่เป็นคำถามที่พบบ่อย ในทางเทคนิคแล้ว มันก็ใช่
อย่างไรก็ตาม Left Join สามารถ เพิ่มจำนวนแถวในตารางด้านซ้ายเท่านั้น และนี่จะเกิดขึ้นก็ต่อเมื่อมีการแข่งขันหลายรายการในตารางที่ถูกต้อง นอกจากนี้ คุณสามารถใช้การรวมด้านซ้ายจำนวนมากในแบบสอบถามเดียว หากจำเป็นสำหรับการวิเคราะห์ของคุณ
การรวมภายนอกด้านซ้ายเทียบกับการเข้าร่วมภายนอกด้านขวา
ความแตกต่างที่สำคัญระหว่างการรวมภายนอกด้านซ้ายและการรวมภายนอกด้านขวาคือ การรวมแถวที่ไม่ตรงกัน
ดังนั้นความแตกต่างระหว่างทั้งสองก็คือการรวมภายนอกด้านซ้ายจะมีแถวที่ไม่ตรงกันหรือระเบียนทั้งหมดของตารางที่ด้านซ้ายของส่วนคำสั่งการรวม รวมถึงแถวที่ตรงกันจากตารางหรือส่วนคำสั่งด้านขวา
ในทางกลับกัน การรวมภายนอกด้านขวาจะรวมแถวที่ไม่ตรงกันจากตารางทางด้านขวาของส่วนคำสั่งการรวมและส่งคืนแถวทั้งหมดจากด้านขวา
ข้อเข้าร่วมรวมบันทึกหรือแก้ไขและจัดการแบบฟอร์มจากสองตารางขึ้นไปโดยใช้เงื่อนไขการเข้าร่วม เงื่อนไขการรวมนี้บ่งชี้ว่าคอลัมน์จากตารางต่างๆ จับคู่กันอย่างไรเมื่อเปรียบเทียบ
ตัวอย่างเช่น จะมีคอลัมน์มาตรฐานระหว่างตารางที่มีเงินเดือนพนักงานและอีกตารางที่มีรายละเอียดพนักงาน นี่อาจเป็นรหัสพนักงานและช่วยในการเข้าร่วมสองตาราง
คุณจึงคิดว่าตารางเป็นเอนทิตี และคีย์คือลิงก์ทั่วไประหว่างสองตาราง ซึ่งใช้สำหรับการดำเนินการร่วมกัน
การศึกษาฐานข้อมูลอาจเป็นเรื่องยุ่งยาก แต่จะค่อนข้างง่ายถ้าคุณเข้าใจอย่างละเอียด
ความแตกต่างระหว่าง Right Join และ Right Outer Join คืออะไร
Right joins คล้ายกับ left joins เว้นแต่จะคืนค่าทั้งหมด แถวในตารางจากด้านขวาและแถวที่ตรงกันจากด้านซ้าย
อีกครั้ง การเข้าร่วมด้านขวาและการเข้าร่วมภายนอกด้านขวาไม่มีความแตกต่างเฉพาะ เช่นเดียวกับการเข้าร่วมด้านซ้ายและการเข้าร่วมภายนอกด้านซ้ายไม่มี กล่าวโดยย่อ คำว่า Right Join เป็นเพียงคำย่อของ Right Outer Join
คีย์เวิร์ด "outer" เป็นตัวเลือก ทั้งคู่ทำงานเดียวกันโดยรวมชุดข้อมูลและตารางเข้าด้วยกัน
เหตุใดจึงใช้การรวมด้านขวาแทนการเข้าร่วมด้านซ้าย
โดยทั่วไปแล้ว การรวมภายนอกด้านขวาจะไม่ถูกใช้ตามปกติ เนื่องจากคุณสามารถแทนที่ด้วยการรวมภายนอกด้านซ้ายได้เสมอ และไม่ต้องดำเนินการฟังก์ชันเพิ่มเติมใดๆ
เมื่อมีคนนึกถึงการใช้ Right Join มากกว่า Left Joinพยายามทำให้ SQL ของคุณมีเอกสารด้วยตนเองมากขึ้น
คุณอาจใช้ การรวมด้านซ้าย เพื่อระบุข้อความค้นหาที่มีแถวว่างในฝั่งที่ขึ้นต่อกัน คุณจะใช้ การเข้าร่วมที่ถูกต้อง สำหรับคำถามที่สร้างแถวว่างในฝั่งอิสระ
การรวมภายนอกด้านขวา ยังมีประโยชน์เมื่อคุณต้องการรวมตารางหนึ่งเข้ากับจุดตัดของตารางอื่นๆ จำนวนมาก
ความแตกต่างระหว่าง Join และ Union ใน SQL
ความแตกต่างระหว่าง Join และ Union คือ Union ใช้เพื่อรวมชุดผลลัพธ์ของคำสั่ง SELECT สองชุดขึ้นไป
ในขณะที่การรวมรวมข้อมูลจากหลายตารางขึ้นอยู่กับเงื่อนไขที่ตรงกัน ข้อมูลที่รวมกันโดยใช้คำสั่งการรวมจะส่งผลให้เกิดคอลัมน์ใหม่
ข้อมูลที่รวมกันโดยใช้คำสั่ง Union ทำให้เกิดแถวใหม่ที่แตกต่างจากชุดที่มีจำนวนคอลัมน์เท่ากัน
ความคิดสุดท้าย
สรุปได้ว่า ไม่มีความแตกต่างระหว่าง การเข้าร่วมทางซ้ายและการเข้าร่วมทางซ้าย สิ่งนี้เป็นจริงสำหรับ Right Join และ Right Outer Join
ทั้ง 2 ปุ่มทำหน้าที่เหมือนกัน และ “ outer” เป็นเพียงคีย์เวิร์ดทางเลือกที่จะใช้ บางคนแนะนำให้ใช้เพราะเป็นการชี้แจงว่าคุณกำลังสร้างการรวมภายนอก
ดังนั้น ท้ายที่สุดแล้ว ไม่ว่าคุณจะระบุหรือไม่ก็ไม่แตกต่างกันแต่อย่างใด
บทความที่น่าสนใจอื่นๆ:
คลิกที่นี่เพื่อเรียนรู้เพิ่มเติมเกี่ยวกับความแตกต่างเหล่านี้ในแบบสรุปเพิ่มเติม