ผสานสองตารางใน SQL

Phsan Sxng Tarang Ni Sql



ใน SQL การรวมตารางหมายถึงกระบวนการรวมข้อมูลจากสองตารางที่แยกจากกันในฐานข้อมูลที่กำหนดให้เป็นหน่วยเดียวโดยยึดตามคอลัมน์หรือเกณฑ์ทั่วไป ใช่ ถ้ามันดูเหมือนโต๊ะ นั่นคือสิ่งที่มันเป็น

การรวมตารางหรือการรวมตารางเป็นคุณลักษณะที่มีชื่อเสียงของฐานข้อมูลเชิงสัมพันธ์ และมีประสิทธิภาพอย่างเหลือเชื่อ ช่วยให้เราสามารถรวบรวมข้อมูลจากหลายแหล่งเพื่อสร้างข้อมูลเชิงลึกที่สอดคล้องกันและมีความหมายมากขึ้น นอกจากนี้ยังช่วยให้ฐานข้อมูลเชิงสัมพันธ์สามารถปรับขนาดได้สูง (ไม่ยืดหยุ่น) เนื่องจากเราสามารถแบ่งข้อมูลออกเป็นส่วนเล็ก ๆ ที่สามารถจัดการได้ซึ่งเราสามารถอ้างอิงได้ในภายหลัง

ในบทช่วยสอนนี้ เราจะพูดถึงพื้นฐานของการรวมตารางหรือการรวมตาราง มาดูตัวอย่างตารางในโลกแห่งความเป็นจริงเพื่อเสริมความรู้ของเรากัน







ตารางตัวอย่าง

ก่อนที่เราจะเข้าสู่โลกแห่ง table joins ให้เราตั้งค่าตารางพื้นฐานที่เราจะใช้เพื่อการสาธิตก่อน



พิจารณาสองตารางที่ประกอบด้วยข้อมูลพนักงานและเงินเดือนตามที่แสดงในแบบสอบถามตัวอย่างต่อไปนี้:



สร้างพนักงานตาราง (

Employee_id INT AUTO_INCREMENT คีย์หลัก

first_name วาร์ชาร์( ห้าสิบ -

นามสกุล วาร์ชาร์( ห้าสิบ -

แผนก VARCHAR( ห้าสิบ -

-

จากนั้นเราสามารถแทรกข้อมูลตัวอย่างลงในตารางของพนักงานได้ดังแสดงในแบบสอบถามต่อไปนี้:





INSERT INTO พนักงาน (first_name, Last_name, department) ค่านิยม

- 'อลิซ' - 'สมิธ' - 'ทรัพยากรมนุษย์' -

- 'บ๊อบ' - 'จอห์นสัน' - 'การตลาด' -

- 'ชาร์ลี' - 'วิลสัน' - 'การเงิน' -

- 'เดวิด' - 'สีน้ำตาล' - 'ฝ่ายขาย' -

- 'เอวา' - 'เดวิส' - 'วิศวกรรม' -

ให้เราดำเนินการสร้างตารางใหม่เพื่อเก็บข้อมูลเงินเดือนดังนี้

สร้างตารางเงินเดือน (

Salary_id INT AUTO_INCREMENT คีย์หลัก

พนักงาน_id INT,

เงินเดือน DECIMAL( 10 - 2 -

start_date วันที่

end_date วันที่

รหัสต่างประเทศ (employee_id) พนักงานอ้างอิง (employee_id)

-

เพิ่มข้อมูลตัวอย่างแทรกลงในตารางดังต่อไปนี้:



แทรกลงในเงินเดือน (employee_id, เงินเดือน, start_date, end_date) ค่า
- 1 - 60000.00 - '2023-01-01' - '31-12-2566' -
- 2 - 55000.00 - '2023-01-01' - '31-12-2566' -
- 3 - 65000.00 - '2023-01-01' - '31-12-2566' -
- 4 - 58000.00 - '2023-01-01' - '31-12-2566' -
- 5 - 70000.00 - '2023-01-01' - '31-12-2566' -

สิ่งนี้น่าจะทำให้เรามีสองตารางที่สามารถช่วยให้เราสาธิตแนวคิดของการรวมตาราง/ผสานใน SQL

การผสานตาราง SQL/การรวมตาราง

ให้เราสำรวจประเภทต่างๆ ของการผสานตารางที่เราสามารถทำได้ เราจะครอบคลุมเนื้อหาพื้นฐานเมื่อเราก้าวไปสู่ขั้นสูงยิ่งขึ้น

เข้าร่วมภายใน

การรวมตารางประเภทแรกและที่พบบ่อยที่สุดใน SQL คือ INNER JOIN INNER JOIN ช่วยให้เราสามารถรวมแถวจากสองตารางตามเงื่อนไขเฉพาะได้ ประเภทนี้จะส่งกลับเฉพาะแถวที่มีการจับคู่ระหว่างตารางเท่านั้น

ให้เรายกตาราง 'พนักงาน' และ 'เงินเดือน' ที่เราสร้างไว้ก่อนหน้านี้เป็นตัวอย่าง ในการดำเนินการ INNER JOIN ใน SQL เราใช้คำสั่ง INNER JOIN ดังต่อไปนี้:

เลือก

e.employee_id,

e.first_name,

จ.last_name,

จ.แผนก

ส.เงินเดือน

จาก

พนักงานจ

เงินเดือน INNER JOIN บน

e.employee_id = s.employee_id;

ในแบบสอบถามตัวอย่างที่กำหนด เราใช้ INNER JOIN เพื่อรวมตาราง 'พนักงาน' และ 'เงินเดือน' ในคอลัมน์ 'employee_id' ซึ่งมีอยู่ในทั้งสองตาราง ชุดผลลัพธ์จะมีเฉพาะแถวที่ตรงกันจากทั้งสองตาราง

ตัวอย่างผลลัพธ์จะเป็นดังนี้:

เข้าร่วมด้านนอกซ้าย

นอกจากนี้เรายังมี LEFT OUTER JOIN ซึ่งรวมแถวทั้งหมดจากตารางด้านซ้ายและแถวที่ตรงกันจากตารางด้านขวา หากไม่มีรายการที่ตรงกันในตารางด้านขวา การรวมจะใช้ค่า NULL

เลือก

e.employee_id,

e.first_name,

จ.last_name,

จ.แผนก

ส.เงินเดือน

จาก

พนักงานจ

ซ้ายเข้าร่วมเงินเดือน

บน

e.employee_id = s.employee_id;

ในตัวอย่างนี้ เราดำเนินการ LEFT OUTER JOIN เพื่อรวมตาราง 'พนักงาน' และ 'เงินเดือน' รวมแถวทั้งหมดจากตาราง 'พนักงาน' และเพิ่มแถวที่ตรงกันจากตาราง 'เงินเดือน' อย่างไรก็ตาม ค่า NULL จะรวมอยู่ในคอลัมน์ 'เงินเดือน' สำหรับแถวที่ไม่ตรงกัน

ยูเนี่ยน SQL

วิธีการรวมตารางใน SQL อีกวิธีหนึ่งคือการใช้ตัวดำเนินการ UNION โอเปอเรเตอร์นี้อนุญาตให้เรารวมผลลัพธ์ของคำสั่ง select สองคำสั่งขึ้นไปไว้ในชุดผลลัพธ์เดียว

คอลัมน์ในคำสั่ง SELECT แต่ละรายการต้องมีประเภทข้อมูลเดียวกันจึงจะรวมสหภาพได้

ตัวอย่างมีดังนี้:

SELECT Employee_id , first_name , Last_name , department , NULL AS เงินเดือน

จากพนักงานจ

ยูเนี่ยน

SELECT Employee_id , NULL AS first_name , NULL AS Last_name , NULL AS แผนก , เงินเดือน

จาก เงินเดือน s ;

ในกรณีนี้ UNION จะรวมตาราง 'พนักงาน' และ 'เงินเดือน' จากนั้นเราสร้างคอลัมน์ NULL ในแต่ละคำสั่ง SELECT เพื่อให้แน่ใจว่าทั้งสองตารางมีจำนวนคอลัมน์เท่ากัน

UNIONS เป็นเรื่องปกติทางเทคนิค แต่มีประโยชน์โดยเฉพาะอย่างยิ่งเมื่อคุณต้องการผสานตารางที่มีโครงสร้างต่างกัน

บทสรุป

ในบทช่วยสอนนี้ เราได้สำรวจพื้นฐานของการรวม/รวมสองตารางให้เป็นชุดผลลัพธ์เดียว โปรดจำไว้ว่ามีการเข้าร่วมขั้นสูงอีกมากมายที่จะกล่าวถึงในโพสต์นี้