PostgreSQL ประเภทการรวมด้วยตัวอย่าง: ภายใน, ภายนอก, ซ้าย, ขวา
เข้าร่วมคืออะไร PostgreSQL?
PostgreSQL ร่วม ใช้ในการดึงข้อมูลจากตารางมากกว่าหนึ่งตาราง ด้วย Joins เราสามารถรวมคำสั่ง SELECT และ JOIN ให้เป็นคำสั่งเดียวได้ เงื่อนไข JOIN จะถูกเพิ่มลงในคำสั่ง และแถวทั้งหมดที่ตรงตามเงื่อนไขจะถูกส่งกลับ ค่าจากตารางที่แตกต่างกันจะรวมกันตามคอลัมน์ทั่วไป คอลัมน์ทั่วไปส่วนใหญ่เป็นคีย์หลักในตารางแรกและเป็นคีย์นอกของตารางที่สอง
PostgreSQL เข้าร่วมประเภท
การเข้าร่วมมีสองประเภท PostgreSQL:
- รวมภายใน
- การรวมภายนอก
PostgreSQL การเข้าร่วมภายใน
Inner Joins มี 3 ประเภท PostgreSQL:
- ธีต้าเข้าร่วม
- เข้าร่วมอย่างเป็นธรรมชาติ
- EQUI เข้าร่วม
ธีต้าเข้าร่วม
การเข้าร่วมแบบธีตาช่วยให้สามารถเข้าร่วมตารางสองตารางโดยอิงตามเงื่อนไขที่แสดงโดยธีตา การเข้าร่วมแบบธีตาสามารถทำงานร่วมกับตัวดำเนินการเปรียบเทียบทั้งหมดได้ ในกรณีส่วนใหญ่ การเข้าร่วมแบบธีตาจะเรียกว่าการเข้าร่วมภายใน
Theta join เป็นประเภทพื้นฐานที่สุดของ JOIN มันจะส่งคืนแถวทั้งหมดจากตารางที่ตรงตามเงื่อนไข JOIN
ไวยากรณ์:
SELECT columns FROM table-1 INNER JOIN table-2 ON table-1.column = table-2.column;
พิจารณาตารางฐานข้อมูลสาธิตต่อไปนี้:
หนังสือ:
ราคา:
เราต้องการดูชื่อหนังสือแต่ละเล่มและราคาที่เกี่ยวข้อง เราสามารถรันคำสั่งต่อไปนี้:
SELECT Book.name, Price.price FROM Book INNER JOIN Price ON Book.id = Price.id;
สิ่งนี้จะส่งคืนสิ่งต่อไปนี้:
มีเพียง 3 แถวเท่านั้นที่ตรงตามเงื่อนไขการเข้าร่วม
EQUI เข้าร่วม
การเข้าร่วม EQUI ช่วยให้เราสามารถรวมสองตารางเข้าด้วยกันโดยอิงตามความสัมพันธ์ของคีย์หลัก/คีย์ต่างประเทศ ตัวอย่างเช่น:
SELECT * FROM Book JOIN Price ON Book.id = Price.id;
สิ่งนี้จะส่งคืนสิ่งต่อไปนี้:
มีการส่งคืนเรกคอร์ดจากทั้งสองตารางโดยยึดตามคอลัมน์ทั่วไป นั่นคือคอลัมน์ id
เข้าร่วมตามธรรมชาติ
การเข้าร่วมประเภทนี้ทำให้เรามีวิธีอื่นในการเขียนการเข้าร่วม EQUI เราสามารถปรับปรุงตัวอย่างก่อนหน้าของเราได้โดยเพิ่มคีย์เวิร์ด NATURAL ดังที่แสดงด้านล่าง:
SELECT * FROM Book NATURAL JOIN Price;
สิ่งนี้จะส่งคืนสิ่งต่อไปนี้:
ส่งคืนคอลัมน์ ID เพียงคอลัมน์เดียวเท่านั้น NATURAL JOIN สามารถสังเกตได้ว่าคอลัมน์ id เป็นเรื่องธรรมดาในทั้งสองตาราง มีเพียงคนเดียวเท่านั้นที่ได้คืน
Postgres เข้าร่วมภายนอก
Outer Joins มี 3 ประเภท PostgreSQL:
- เข้าร่วมด้านนอกซ้าย
- เข้าร่วมด้านนอกขวา
- เข้าร่วมภายนอกเต็มรูปแบบ
Postgres เข้าร่วมด้านนอกซ้าย
LEFT OUTER JOIN จะส่งกลับแถวทั้งหมดในตารางทางด้านซ้ายมือและเฉพาะแถวในตารางด้านขวามือที่ตรงตามเงื่อนไขการรวมแล้ว
ไวยากรณ์:
SELECT columns FROM table-1 LEFT OUTER JOIN table-2 ON table-1.column = table-2.column;
เราจำเป็นต้องดูชื่อหนังสือแต่ละเล่มและราคาที่เกี่ยวข้อง เราสามารถรันคำสั่งต่อไปนี้:
SELECT Book.name, Price.price FROM Book LEFT JOIN Price ON Book.id = Price.id;
สิ่งนี้ส่งคืนสิ่งต่อไปนี้:
ส่งคืนทั้ง 4 แถวในตาราง Book แล้ว มีเพียง 3 แถวจากตารางราคาที่ตรงตามเงื่อนไขการรวม ดังนั้นพวกเขาจึงถูกส่งคืน หนังสือเล่มสุดท้ายไม่มีมูลค่าราคาที่สอดคล้องกัน
Postgres เข้าร่วมด้านนอกขวา
RIGHT OUTER JOIN ส่งคืนแถวทั้งหมดในตารางทางด้านขวาและแถวในตารางทางด้านซ้ายมือตรงตามเงื่อนไขการรวม
ไวยากรณ์:
SELECT columns FROM table-1 RIGHT OUTER JOIN table-2 ON table-1.column = table-2.column;
ตัวอย่างเช่น:
SELECT Book.name, Price.price FROM Book RIGHT JOIN Price ON Book.id = Price.id;
สิ่งนี้ส่งคืนสิ่งต่อไปนี้:
ส่งคืนแถวทั้งหมดในตารางราคาแล้ว เฉพาะแถวในตาราง Book ที่ตรงตามเงื่อนไขการรวมเท่านั้นที่จะถูกส่งคืน 3rd แถวไม่มีค่าสำหรับชื่อเนื่องจากไม่พบรายการที่ตรงกัน
เข้าร่วมด้านนอกแบบเต็ม PostgreSQL
JOIN ประเภทนี้จะส่งกลับแถวทั้งหมดในตารางทางด้านซ้ายและแถวทั้งหมดในตารางทางด้านขวามือด้วยค่าว่างโดยที่เงื่อนไขการรวมไม่เป็นที่พอใจ
ไวยากรณ์:
SELECT columns FROM table-1 FULL OUTER JOIN table-2 ON table-1.column = table-2.column;
ตัวอย่างเช่น:
SELECT Book.name, Price.price FROM Book FULL OUTER JOIN Price ON Book.id = Price.id;
สิ่งนี้ส่งคืนสิ่งต่อไปนี้:
แถวทั้งหมดจากตารางทั้งหมดถูกส่งกลับแล้ว โดยมีค่าว่างซึ่งไม่พบรายการที่ตรงกัน
การใช้งาน pgAdmin
งานข้างต้นสามารถทำได้ใน pgAdmin ดังนี้:
pgAdmin เข้าร่วมภายใน
วิธีใช้ Theta เข้าร่วม PostgreSQL โดยใช้ pgAdmin
ด้านล่างนี้เป็นขั้นตอนในการใช้ Theta Join ใน Postgres โดยใช้ pgAdmin:
ขั้นตอนที่ 1) เข้าสู่ระบบบัญชี pgAdmin ของคุณ
เปิด pgAdmin และเข้าสู่ระบบโดยใช้ข้อมูลประจำตัวของคุณ
ขั้นตอนที่ 2) สร้างฐานข้อมูลสาธิต
- จากแถบนำทางทางด้านซ้ายให้คลิกฐานข้อมูล
- คลิกสาธิต
ขั้นตอนที่ 3) พิมพ์แบบสอบถาม
พิมพ์แบบสอบถามด้านล่างในตัวแก้ไขแบบสอบถาม:
SELECT Book.name, Price.price FROM Book INNER JOIN Price ON Book.id = Price.id;
ขั้นตอนที่ 4) ดำเนินการแบบสอบถาม
คลิกปุ่มดำเนินการ
ควรส่งคืนสิ่งต่อไปนี้:
EQUI เข้าร่วม
ขั้นตอน 1) เข้าสู่ระบบบัญชี pgAdmin ของคุณ
ขั้นตอน 2)
- จากแถบนำทางทางด้านซ้ายให้คลิกฐานข้อมูล
- คลิกสาธิต
ขั้นตอน 3) พิมพ์แบบสอบถามในตัวแก้ไขแบบสอบถาม:
SELECT * FROM Book JOIN Price ON Book.id = Price.id;
ขั้นตอน 4) คลิกปุ่มดำเนินการ
ควรส่งคืนสิ่งต่อไปนี้:
เข้าร่วมตามธรรมชาติ
ขั้นตอน 1) เข้าสู่ระบบบัญชี pgAdmin ของคุณ
ขั้นตอน 2)
- จากแถบนำทางทางด้านซ้ายให้คลิกฐานข้อมูล
- คลิกสาธิต
ขั้นตอน 3) พิมพ์แบบสอบถามในตัวแก้ไขแบบสอบถาม:
SELECT * FROM Book NATURAL JOIN Price;
ขั้นตอน 4) คลิกปุ่มดำเนินการ
ควรส่งคืนสิ่งต่อไปนี้:
pgAdmin เข้าร่วมภายในอย่างง่าย
ขั้นตอน 1) เข้าสู่ระบบบัญชี pgAdmin ของคุณ
ขั้นตอน 2)
- จากแถบนำทางทางด้านซ้ายให้คลิกฐานข้อมูล
- คลิกสาธิต
ขั้นตอน 3) พิมพ์แบบสอบถามในตัวแก้ไขแบบสอบถาม:
SELECT Book.name, Price.price FROM Book INNER JOIN Price ON Book.id = Price.id;
ขั้นตอน 4) คลิกปุ่มดำเนินการ
ควรส่งคืนสิ่งต่อไปนี้:
pgAdmin เข้าร่วมภายนอก
เข้าร่วมด้านนอกซ้าย
ขั้นตอน 1) เข้าสู่ระบบบัญชี pgAdmin ของคุณ
ขั้นตอน 2)
- จากแถบนำทางทางด้านซ้ายให้คลิกฐานข้อมูล
- คลิกสาธิต
ขั้นตอน 3) พิมพ์แบบสอบถามในตัวแก้ไขแบบสอบถาม:
SELECT Book.name, Price.price FROM Book LEFT JOIN Price ON Book.id = Price.id;
ขั้นตอน 4) คลิกปุ่มดำเนินการ
ควรส่งคืนสิ่งต่อไปนี้:
เข้าร่วมด้านนอกขวา
ขั้นตอน 1) เข้าสู่ระบบบัญชี pgAdmin ของคุณ
ขั้นตอน 2)
- จากแถบนำทางทางด้านซ้ายให้คลิกฐานข้อมูล
- คลิกสาธิต
ขั้นตอน 3) พิมพ์แบบสอบถามในตัวแก้ไขแบบสอบถาม:
SELECT Book.name, Price.price FROM Book RIGHT JOIN Price ON Book.id = Price.id;
ขั้นตอน 4) คลิกปุ่มดำเนินการ
ควรส่งคืนสิ่งต่อไปนี้:
เข้าร่วมภายนอกเต็มรูปแบบ
ขั้นตอน 1) เข้าสู่ระบบบัญชี pgAdmin ของคุณ
ขั้นตอน 2)
- จากแถบนำทางทางด้านซ้ายให้คลิกฐานข้อมูล
- คลิกสาธิต
ขั้นตอน 3) พิมพ์แบบสอบถามในตัวแก้ไขแบบสอบถาม:
SELECT Book.name, Price.price FROM Book FULL OUTER JOIN Price ON Book.id = Price.id;
ขั้นตอน 4) คลิกปุ่มดำเนินการ
ควรส่งคืนสิ่งต่อไปนี้:
สรุป
- In PostgreSQLเราใช้ JOIN เมื่อเราต้องการดึงค่าจากตารางมากกว่าหนึ่งตาราง
- INNER JOIN เป็นประเภทพื้นฐานที่สุดของ JOIN ส่งคืนระเบียนทั้งหมดที่ตรงตามเงื่อนไข JOIN ที่ระบุ
- LEFT OUTER JOIN ส่งคืนแถวทั้งหมดในตารางด้านซ้าย และเฉพาะแถวในตารางอื่นที่ตรงตามเงื่อนไขการรวมเท่านั้น
- RIGHT OUTER JOIN จะส่งคืนแถวทั้งหมดในตารางทางขวามือ และจะแสดงเฉพาะแถวในตารางอื่นที่ตรงตามเงื่อนไขการรวมเท่านั้น
- JOIN ประเภทนี้จะส่งกลับแถวทั้งหมดในตารางด้านซ้ายและแถวทั้งหมดในตารางด้านขวามือที่มีค่าว่างโดยที่เงื่อนไขการรวมไม่เป็นที่พอใจ
ดาวน์โหลดฐานข้อมูลที่ใช้ในบทช่วยสอนนี้