PostgreSQL Bergabung: Dalaman, Luar, Kiri, Kanan, Semula jadi dengan Contoh

Isi kandungan:

Anonim

Apa itu Gabungan PostgreSQL?

GABUNGAN PostgreSQL digunakan untuk mengambil data dari lebih daripada satu jadual. Dengan JOIN, adalah mungkin bagi kita untuk menggabungkan pernyataan SELECT dan JOIN menjadi satu penyataan. Syarat BERSAMA ditambahkan pada pernyataan, dan semua baris yang memenuhi syarat dikembalikan.

Nilai dari pelbagai jadual digabungkan berdasarkan lajur biasa. Lajur umum kebanyakannya adalah kunci utama pada jadual pertama dan kunci asing dari jadual kedua.

Dalam tutorial PostgreSQL ini, anda akan belajar:

  • Apa itu Gabungan PostgreSQL?
  • Jenis Bergabung
  • Batin Bergabung
    • Theta Sertai
    • EQUI Sertai
    • Sambungan Semula Jadi
  • Bergabung di Luar
    • BERGABUNG KIRI
    • GABUNGAN KELUAR KANAN
    • Sertai Luar Sepenuhnya
  • Menggunakan pgAdmin
  • Batin Bergabung
    • Theta Sertai
    • EQUI Sertai
    • Sambungan Semula Jadi
    • INNER JOIN (gabung sederhana)
  • Bergabung di Luar
    • BERGABUNG KIRI
    • GABUNGAN KELUAR KANAN
    • Sertai Luar Sepenuhnya

Jenis Bergabung

Terdapat dua jenis JOIN dalam PostgreSQL:

  • Batin Bergabung
  • Sambungan Luar

Batin Bergabung

Terdapat 3 jenis gabungan dalaman:

  • Theta turut serta
  • Sambungan semula jadi
  • EQUI sertai

Theta Sertai

Gabungan theta membolehkan seseorang bergabung dengan dua jadual berdasarkan keadaan yang diwakili oleh theta. Penggabungan Theta dapat berfungsi dengan semua operator perbandingan. Dalam kebanyakan kes, gabungan theta disebut sebagai gabung dalam.

Gabungan theta adalah jenis GABUNGAN yang paling asas. Ia akan mengembalikan semua baris dari jadual di mana keadaan BERSAMA dipenuhi.

Sintaks:

SELECT columnsFROM table-1INNER JOIN table-2ON table-1.column = table-2.column;

Pertimbangkan jadual pangkalan data Demo berikut:

Buku:

Harga:

Kami mahu melihat nama setiap buku dan Harga yang sesuai. Kita boleh menjalankan perintah berikut:

SELECT Book.name, Price.priceFROM BookINNER JOIN PriceON Book.id = Price.id;

Ini akan mengembalikan perkara berikut:

Hanya 3 baris yang memenuhi syarat bergabung.

EQUI Sertai

Penyertaan EQUI memberi kami cara untuk menggabungkan dua jadual berdasarkan hubungan kunci utama / kunci asing. Sebagai contoh:

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

Ini akan mengembalikan perkara berikut:

Rekod telah dikembalikan dari kedua-dua jadual berdasarkan lajur biasa, iaitu lajur id.

Sambungan Semula Jadi

Jenis gabungan ini memberi kita cara lain untuk menulis penyertaan EQUI. Kita boleh memperbaiki contoh sebelumnya dengan menambahkan kata kunci ALAM seperti yang ditunjukkan di bawah:

SELECT *FROM BookNATURAL JOIN Price;

Ini akan mengembalikan perkara berikut:

Hanya satu lajur id yang dikembalikan. BERSAMA ALAM dapat memperhatikan bahawa lajur id adalah umum dalam dua jadual. Hanya seorang yang dikembalikan.

Bergabung di Luar

Terdapat tiga jenis JOIN luar di PostgreSQL:

  • Kiri Luar Bergabung.
  • Kanan Luar Bergabung.
  • Sertai Luar Sepenuhnya

BERGABUNG KIRI

LEFT OUTER JOIN akan mengembalikan semua baris dalam jadual di sebelah kiri dan hanya baris di meja sebelah kanan di mana keadaan bergabung telah dipenuhi.

Sintaks:

SELECT columnsFROM table-1LEFT OUTER JOIN table-2ON table-1.column = table-2.column;

Kita perlu melihat nama setiap buku dan Harga yang sesuai. Kita boleh menjalankan perintah berikut:

SELECT Book.name, Price.priceFROM BookLEFT JOIN PriceON Book.id = Price.id;

Ini mengembalikan perkara berikut:

Semua 4 baris dalam jadual Buku telah dikembalikan. Hanya 3 baris dari jadual Harga yang memenuhi syarat bergabung. Oleh itu mereka dikembalikan. Buku terakhir tidak mempunyai nilai harga yang sepadan.

GABUNGAN KELUAR KANAN

RIGHT OUTER JOIN mengembalikan semua baris di meja di sebelah kanan dan baris di meja di sebelah kiri di mana keadaan bergabung telah dipenuhi.

Sintaks:

SELECT columnsFROM table-1RIGHT OUTER JOIN table-2ON table-1.column = table-2.column;

Sebagai contoh:

SELECT Book.name, Price.priceFROM BookRIGHT JOIN PriceON Book.id = Price.id;

Ini mengembalikan perkara berikut:

Semua baris dalam jadual Harga telah dikembalikan. Hanya baris dalam jadual Buku yang memenuhi syarat bergabung yang dikembalikan. 3 rd berturut-turut tidak mempunyai nilai untuk nama kerana tidak ada perlawanan telah dijumpai.

Sertai Luar Sepenuhnya

JOIN jenis ini akan mengembalikan semua baris di meja di sebelah kiri dan semua baris di meja di sebelah kanan dengan null di mana keadaan bergabung tidak memuaskan.

Sintaks:

SELECT columnsFROM table-1FULL OUTER JOIN table-2ON table-1.column = table-2.column;

Sebagai contoh:

SELECT Book.name, Price.priceFROM BookFULL OUTER JOIN PriceON Book.id = Price.id;

Ini mengembalikan perkara berikut:

Semua baris dari semua jadual telah dikembalikan, dengan nol di mana tiada perlawanan.

Menggunakan pgAdmin

Tugas di atas dapat diselesaikan dalam pgAdmin seperti berikut:

Batin Bergabung

Theta Sertai

Langkah 1) Log masuk ke akaun pgAdmin anda.

Langkah 2)

  1. Dari bar navigasi di sebelah kiri- Klik Pangkalan Data.
  2. Klik Demo.

Langkah 3) Taipkan pertanyaan dalam editor pertanyaan:

SELECT Book.name, Price.priceFROM BookINNER JOIN PriceON Book.id = Price.id;

Langkah 4) Klik butang Laksanakan.

Ia harus mengembalikan yang berikut:

EQUI Sertai

Langkah 1) Log masuk ke akaun pgAdmin anda.

Langkah 2)

  1. Dari bar navigasi di sebelah kiri- Klik Pangkalan Data.
  2. Klik Demo.

Langkah 3) Taipkan pertanyaan dalam editor pertanyaan:

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

Langkah 4) Klik butang Laksanakan.

Ia harus mengembalikan yang berikut:

Sambungan Semula Jadi

Langkah 1) Log masuk ke akaun pgAdmin anda.

Langkah 2)

  1. Dari bar navigasi di sebelah kiri- Klik Pangkalan Data.
  2. Klik Demo.

Langkah 3) Taipkan pertanyaan dalam editor pertanyaan:

SELECT *FROM BookNATURAL JOIN Price;

Langkah 4) Klik butang Laksanakan.

Ia harus mengembalikan yang berikut:

INNER JOIN (gabung sederhana)

Langkah 1) Log masuk ke akaun pgAdmin anda.

Langkah 2)

  1. Dari bar navigasi di sebelah kiri- Klik Pangkalan Data.
  2. Klik Demo.

Langkah 3) Taipkan pertanyaan dalam editor pertanyaan:

SELECT Book.name, Price.priceFROM BookINNER JOIN PriceON Book.id = Price.id;

Langkah 4) Klik butang Laksanakan.

Ia harus mengembalikan yang berikut:

Bergabung di Luar

BERGABUNG KIRI

Langkah 1) Log masuk ke akaun pgAdmin anda.

Langkah 2)

  1. Dari bar navigasi di sebelah kiri- Klik Pangkalan Data.
  2. Klik Demo.

Langkah 3) Taipkan pertanyaan dalam editor pertanyaan:

SELECT Book.name, Price.priceFROM BookLEFT JOIN PriceON Book.id = Price.id;

Langkah 4) Klik butang Laksanakan.

Ia harus mengembalikan yang berikut:

GABUNGAN KELUAR KANAN

Langkah 1) Log masuk ke akaun pgAdmin anda.

Langkah 2)

  1. Dari bar navigasi di sebelah kiri- Klik Pangkalan Data.
  2. Klik Demo.

Langkah 3) Taipkan pertanyaan dalam editor pertanyaan:

SELECT Book.name, Price.priceFROM BookRIGHT JOIN PriceON Book.id = Price.id;

Langkah 4) Klik butang Laksanakan.

Ia harus mengembalikan yang berikut:

Sertai Luar Sepenuhnya

Langkah 1) Log masuk ke akaun pgAdmin anda.

Langkah 2)

  1. Dari bar navigasi di sebelah kiri- Klik Pangkalan Data.
  2. Klik Demo.

Langkah 3) Taipkan pertanyaan dalam editor pertanyaan:

SELECT Book.name, Price.priceFROM BookFULL OUTER JOIN PriceON Book.id = Price.id;

Langkah 4) Klik butang Laksanakan.

Ia harus mengembalikan yang berikut:

Ringkasan:

  • Dalam PostgreSQL, kami menggunakan JOIN ketika kita perlu mendapatkan nilai dari lebih dari satu jadual.
  • INNER JOIN adalah jenis JOIN yang paling asas. Ia mengembalikan semua rekod di mana syarat JOIN yang ditentukan telah dipenuhi.
  • LEFT OUTER JOIN mengembalikan semua baris di meja sebelah kiri dan hanya baris di meja lain di mana syarat bergabung telah dipenuhi.
  • RIGHT OUTER JOIN mengembalikan semua baris di meja sebelah kanan dan hanya baris di meja lain di mana syarat bergabung telah dipenuhi.
  • JOIN jenis ini mengembalikan semua baris di meja sebelah kiri dan semua baris di meja sebelah kanan dengan null di mana keadaan bergabung tidak memuaskan.

Muat turun Pangkalan Data yang digunakan dalam Tutorial ini