แสดงภาพ SQL JOIN
อธิบาย INNER, LEFT, RIGHT, FULL OUTER, CROSS และ SELF join แบบโต้ตอบด้วย Venn diagram ตารางตัวอย่าง และแถวผลลัพธ์พร้อม NULL ฟรี ทำงานฝั่ง client
Loading tool...
แสดงภาพ SQL JOIN คืออะไร?
SQL JOIN Visualizer อธิบาย join ทั้ง 6 ประเภท - INNER, LEFT, RIGHT, FULL OUTER, CROSS และ SELF - บนตารางตัวอย่างเดิมสองตาราง Venn diagram ไฮไลต์บริเวณที่แต่ละ join เก็บไว้ ตารางผลลัพธ์แสดงทุกแถวที่รอดพร้อมการยัด NULL แบบเดียวกับ SQL จริง พร้อมคำอธิบายภาษาง่าย ๆ ทุกตัวเลือก
ประโยชน์หลัก
- เห็นแถวที่แต่ละ join คืนจริง ๆ แทนการท่องทฤษฎี Venn
- การยัด NULL แสดงตรงจุดที่ SQL ใส่จริง แยกตาม join type
- ข้อมูลตัวอย่างมีแถวไม่ match ทั้งสองฝั่งตั้งใจใส่ไว้
- จำนวนแถวทำให้เห็น cross join ระเบิดก่อนขึ้น production
- ไม่ต้องมี database ไม่ต้องเซ็ตอัพ ไม่อัปโหลด - รันในเบราว์เซอร์ล้วน
กรณีการใช้งาน
- •เตรียมสัมภาษณ์งาน SQL ที่ถามเรื่อง join
- •ดีบักว่าทำไม query รายงานถึงขาดแถวหรือได้แถวซ้ำ
- •สอนพฤติกรรม join ให้เพื่อนร่วมงานหรือนักเรียนด้วยภาพเคลื่อนไหวสด
- •เลือกระหว่าง LEFT JOIN บวก WHERE กับรูปแบบ join อื่นสำหรับ query
วิธีเรียนรู้ SQL Join แบบภาพ
- ดูตารางตัวอย่าง: สังเกตตาราง employees และ departments - จะมีพนักงานที่ไม่มีแผนกและแผนกที่ไม่มีพนักงาน
- สลับประเภท join: เลือก INNER, LEFT, RIGHT, FULL, CROSS และ SELF แล้วดู Venn diagram กับตารางผลลัพธ์เปลี่ยนไป
- ไล่ดู NULL: เทียบแถวผลลัพธ์ระหว่าง join type แล้วดูว่า SQL ยัด NULL ให้แถวที่ไม่ match ตรงไหนพอดี
คุณสมบัติหลัก
- ครบทั้ง 6 ประเภท join: INNER, LEFT, RIGHT, FULL OUTER, CROSS และ SELF
- Venn diagram ไฮไลต์บริเวณที่แต่ละ join เก็บไว้แบบเป๊ะ
- ตารางตัวอย่างที่มีแถวไม่ match ทั้งสองฝั่งตั้งใจใส่ไว้
- แถวผลลัพธ์แสดง NULL ตรงจุดที่ SQL ยัดแถวที่ขาดพอดี
- คำอธิบายแถวที่รอดของแต่ละ join ด้วยภาษาง่าย ๆ
- ทำงานในเบราว์เซอร์ทั้งหมด - ไม่ต้องมี database ไม่ต้องเซ็ตอัพ
คำถามที่พบบ่อย
LEFT กับ RIGHT JOIN ต่างกันอย่างไร?
ต่างแค่ทิศทาง LEFT JOIN เก็บทุกแถวของตารางแรก (ซ้าย) แล้วยัด NULL ให้คู่ที่หาย RIGHT JOIN ทำเหมือนกันกับตารางที่สอง (ขวา) ทางภาพคือวงกลมที่ถูกไฮไลต์จะสลับฝั่ง
ทำไม FULL OUTER JOIN ได้แถวมากกว่า INNER JOIN?
เพราะเก็บทั้งแถวที่ match และทุกแถวที่ไม่ match จากสองฝั่ง ในข้อมูลตัวอย่างคือพนักงานที่ไม่มีแผนกและแผนกที่ไม่มีพนักงานนั่นเอง
CROSS JOIN ใช้เมื่อไร?
เมื่อต้องการทุกคู่ที่เป็นไปได้ เช่น สร้างตารางปฏิทิน สินค้าแบบไซส์คูณสี หรือชุดข้อมูลทดสอบ ระวังแถวคูณกันเร็วมาก (ที่นี่ 5 คน x 4 แผนก = 20 แถว)
SELF JOIN ใช้ทำอะไร?
เทียบแถวภายในตารางเดียวกัน - ตัวอย่างคลาสสิกคือ employees join กับ employees ผ่าน manager_id เพื่อสร้างผังองค์กรหรือลำดับการรายงาน
อยู่ในชุดเครื่องมือ:ชุดเครื่องมือฐานข้อมูล SQL และวิศวกรรมข้อมูล