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;

พิจารณาตารางฐานข้อมูลสาธิตต่อไปนี้:

หนังสือ:

PostgreSQL ธีต้าเข้าร่วม

ราคา:

PostgreSQL ธีต้าเข้าร่วม

เราต้องการดูชื่อหนังสือแต่ละเล่มและราคาที่เกี่ยวข้อง เราสามารถรันคำสั่งต่อไปนี้:

SELECT Book.name, Price.price 
FROM Book 
INNER JOIN Price 
ON Book.id = Price.id;   

สิ่งนี้จะส่งคืนสิ่งต่อไปนี้:

PostgreSQL ธีต้าเข้าร่วม

มีเพียง 3 แถวเท่านั้นที่ตรงตามเงื่อนไขการเข้าร่วม

EQUI เข้าร่วม

การเข้าร่วม EQUI ช่วยให้เราสามารถรวมสองตารางเข้าด้วยกันโดยอิงตามความสัมพันธ์ของคีย์หลัก/คีย์ต่างประเทศ ตัวอย่างเช่น:

SELECT *
FROM Book 
JOIN Price ON Book.id = Price.id;

สิ่งนี้จะส่งคืนสิ่งต่อไปนี้:

PostgreSQL EQUI เข้าร่วม

มีการส่งคืนเรกคอร์ดจากทั้งสองตารางโดยยึดตามคอลัมน์ทั่วไป นั่นคือคอลัมน์ id

เข้าร่วมตามธรรมชาติ

การเข้าร่วมประเภทนี้ทำให้เรามีวิธีอื่นในการเขียนการเข้าร่วม EQUI เราสามารถปรับปรุงตัวอย่างก่อนหน้าของเราได้โดยเพิ่มคีย์เวิร์ด NATURAL ดังที่แสดงด้านล่าง:

SELECT *
FROM Book
NATURAL JOIN Price;

สิ่งนี้จะส่งคืนสิ่งต่อไปนี้:

PostgreSQL เข้าร่วมตามธรรมชาติ

ส่งคืนคอลัมน์ 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;   

สิ่งนี้ส่งคืนสิ่งต่อไปนี้:

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

ส่งคืนทั้ง 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;

สิ่งนี้ส่งคืนสิ่งต่อไปนี้:

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

ส่งคืนแถวทั้งหมดในตารางราคาแล้ว เฉพาะแถวในตาราง 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;

สิ่งนี้ส่งคืนสิ่งต่อไปนี้:

Postgres เข้าร่วมภายนอกแบบเต็ม

แถวทั้งหมดจากตารางทั้งหมดถูกส่งกลับแล้ว โดยมีค่าว่างซึ่งไม่พบรายการที่ตรงกัน

การใช้งาน pgAdmin

งานข้างต้นสามารถทำได้ใน pgAdmin ดังนี้:

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

วิธีใช้ Theta เข้าร่วม PostgreSQL โดยใช้ pgAdmin

ด้านล่างนี้เป็นขั้นตอนในการใช้ Theta Join ใน Postgres โดยใช้ pgAdmin:

ขั้นตอนที่ 1) เข้าสู่ระบบบัญชี pgAdmin ของคุณ

เปิด pgAdmin และเข้าสู่ระบบโดยใช้ข้อมูลประจำตัวของคุณ

ขั้นตอนที่ 2) สร้างฐานข้อมูลสาธิต

  1. จากแถบนำทางทางด้านซ้ายให้คลิกฐานข้อมูล
  2. คลิกสาธิต

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

ขั้นตอนที่ 3) พิมพ์แบบสอบถาม

พิมพ์แบบสอบถามด้านล่างในตัวแก้ไขแบบสอบถาม:

SELECT Book.name, Price.price 
FROM Book 
INNER JOIN Price 
ON Book.id = Price.id;   

ขั้นตอนที่ 4) ดำเนินการแบบสอบถาม

คลิกปุ่มดำเนินการ

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

ควรส่งคืนสิ่งต่อไปนี้:

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

EQUI เข้าร่วม

ขั้นตอน 1) เข้าสู่ระบบบัญชี pgAdmin ของคุณ

ขั้นตอน 2)

  1. จากแถบนำทางทางด้านซ้ายให้คลิกฐานข้อมูล
  2. คลิกสาธิต

pgAdmin EQUI เข้าร่วม

ขั้นตอน 3) พิมพ์แบบสอบถามในตัวแก้ไขแบบสอบถาม:

SELECT *
FROM Book 
JOIN Price ON Book.id = Price.id;

ขั้นตอน 4) คลิกปุ่มดำเนินการ

pgAdmin EQUI เข้าร่วม

ควรส่งคืนสิ่งต่อไปนี้:

pgAdmin EQUI เข้าร่วม

เข้าร่วมตามธรรมชาติ

ขั้นตอน 1) เข้าสู่ระบบบัญชี pgAdmin ของคุณ

ขั้นตอน 2)

  1. จากแถบนำทางทางด้านซ้ายให้คลิกฐานข้อมูล
  2. คลิกสาธิต

pgAdmin เข้าร่วมโดยธรรมชาติ

ขั้นตอน 3) พิมพ์แบบสอบถามในตัวแก้ไขแบบสอบถาม:

SELECT *
FROM Book 
NATURAL JOIN Price;

ขั้นตอน 4) คลิกปุ่มดำเนินการ

pgAdmin เข้าร่วมโดยธรรมชาติ

ควรส่งคืนสิ่งต่อไปนี้:

pgAdmin เข้าร่วมโดยธรรมชาติ

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

ขั้นตอน 1) เข้าสู่ระบบบัญชี pgAdmin ของคุณ

ขั้นตอน 2)

  1. จากแถบนำทางทางด้านซ้ายให้คลิกฐานข้อมูล
  2. คลิกสาธิต

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

ขั้นตอน 3) พิมพ์แบบสอบถามในตัวแก้ไขแบบสอบถาม:

SELECT Book.name, Price.price 
FROM Book 
INNER JOIN Price 
ON Book.id = Price.id;   

ขั้นตอน 4) คลิกปุ่มดำเนินการ

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

ควรส่งคืนสิ่งต่อไปนี้:

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

pgAdmin เข้าร่วมภายนอก

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

ขั้นตอน 1) เข้าสู่ระบบบัญชี pgAdmin ของคุณ

ขั้นตอน 2)

  1. จากแถบนำทางทางด้านซ้ายให้คลิกฐานข้อมูล
  2. คลิกสาธิต

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

ขั้นตอน 3) พิมพ์แบบสอบถามในตัวแก้ไขแบบสอบถาม:

SELECT Book.name, Price.price 
FROM Book   
LEFT JOIN Price 
ON Book.id = Price.id;   

ขั้นตอน 4) คลิกปุ่มดำเนินการ

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

ควรส่งคืนสิ่งต่อไปนี้:

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

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

ขั้นตอน 1) เข้าสู่ระบบบัญชี pgAdmin ของคุณ

ขั้นตอน 2)

  1. จากแถบนำทางทางด้านซ้ายให้คลิกฐานข้อมูล
  2. คลิกสาธิต

pgAdmin เข้าร่วมภายนอกขวา

ขั้นตอน 3) พิมพ์แบบสอบถามในตัวแก้ไขแบบสอบถาม:

SELECT Book.name, Price.price 
FROM Book
RIGHT JOIN Price 
ON Book.id = Price.id;

ขั้นตอน 4) คลิกปุ่มดำเนินการ

pgAdmin เข้าร่วมภายนอกขวา

ควรส่งคืนสิ่งต่อไปนี้:

pgAdmin เข้าร่วมภายนอกขวา

เข้าร่วมภายนอกเต็มรูปแบบ

ขั้นตอน 1) เข้าสู่ระบบบัญชี pgAdmin ของคุณ

ขั้นตอน 2)

  1. จากแถบนำทางทางด้านซ้ายให้คลิกฐานข้อมูล
  2. คลิกสาธิต

pgAdmin เข้าร่วมภายนอกแบบเต็ม

ขั้นตอน 3) พิมพ์แบบสอบถามในตัวแก้ไขแบบสอบถาม:

SELECT Book.name, Price.price 
FROM Book
FULL OUTER JOIN Price 
ON Book.id = Price.id;

ขั้นตอน 4) คลิกปุ่มดำเนินการ

pgAdmin เข้าร่วมภายนอกแบบเต็ม

ควรส่งคืนสิ่งต่อไปนี้:

pgAdmin เข้าร่วมภายนอกแบบเต็ม

สรุป

  • In PostgreSQLเราใช้ JOIN เมื่อเราต้องการดึงค่าจากตารางมากกว่าหนึ่งตาราง
  • INNER JOIN เป็นประเภทพื้นฐานที่สุดของ JOIN ส่งคืนระเบียนทั้งหมดที่ตรงตามเงื่อนไข JOIN ที่ระบุ
  • LEFT OUTER JOIN ส่งคืนแถวทั้งหมดในตารางด้านซ้าย และเฉพาะแถวในตารางอื่นที่ตรงตามเงื่อนไขการรวมเท่านั้น
  • RIGHT OUTER JOIN จะส่งคืนแถวทั้งหมดในตารางทางขวามือ และจะแสดงเฉพาะแถวในตารางอื่นที่ตรงตามเงื่อนไขการรวมเท่านั้น
  • JOIN ประเภทนี้จะส่งกลับแถวทั้งหมดในตารางด้านซ้ายและแถวทั้งหมดในตารางด้านขวามือที่มีค่าว่างโดยที่เงื่อนไขการรวมไม่เป็นที่พอใจ

ดาวน์โหลดฐานข้อมูลที่ใช้ในบทช่วยสอนนี้