PostgreSQL - JOINS

Halo, para entusiastik basisdata yang sedang berkembang! Hari ini, kita akan melakukan perjalanan yang menarik melalui dunia PostgreSQL JOINs. Sebagai guru komputer yang ramah di lingkungan sekitar Anda, saya di sini untuk menggイド Anda melalui petualangan ini, langkah demi langkah. Jangan khawatir jika Anda belum pernah menulis baris kode sebelumnya - kita akan mulai dari dasar dan naik tingkat per tingkat. Jadi, siapkan topi keras virtual Anda, dan mari kita masuk ke dalam!

PostgreSQL - Joins

Apa itu JOINs?

Sebelum kita melompat ke jenis JOIN yang berbeda, mari kita pahami apa sebenarnya JOIN. Bayangkan Anda sedang merencanakan pesta besar (karena siapa yang tidak menyukai pesta basisdata yang bagus, kan?). Anda memiliki dua daftar: satu dengan nama teman-teman Anda dan yang lainnya dengan minuman favorit mereka. JOINs seperti planner pesta yang magical yang membantu Anda menggabungkan daftar ini dalam berbagai cara untuk menciptakan daftar tamu yang sempurna dengan minuman kesukaan setiap orang.

Dalam istilah basisdata, JOINs memungkinkan kita untuk menggabungkan baris dari dua atau lebih tabel berdasarkan kolom yang berhubungan antaranya. Sekarang, mari kita jelajahi jenis JOIN yang ditawarkan PostgreSQL.

The CROSS JOIN

Apa itu CROSS JOIN?

CROSS JOIN seperti mengundang semua orang di kedua daftar Anda ke pesta, tanpa peduli Anda tahu preferensi minuman mereka atau tidak. Ini menggabungkan setiap baris dari tabel pertama dengan setiap baris dari tabel kedua.

Contoh CROSS JOIN

Mari kita buat dua tabel sederhana untuk contoh ini:

CREATE TABLE friends (
id SERIAL PRIMARY KEY,
name VARCHAR(50)
);

CREATE TABLE drinks (
id SERIAL PRIMARY KEY,
drink VARCHAR(50)
);

INSERT INTO friends (name) VALUES ('Alice'), ('Bob'), ('Charlie');
INSERT INTO drinks (drink) VALUES ('Cola'), ('Juice'), ('Water');

Sekarang, mari kita melakukan CROSS JOIN:

SELECT f.name, d.drink
FROM friends f
CROSS JOIN drinks d;

Hasil:

name drink
Alice Cola
Alice Juice
Alice Water
Bob Cola
Bob Juice
Bob Water
Charlie Cola
Charlie Juice
Charlie Water

Seperti yang Anda lihat, setiap teman digabungkan dengan setiap minuman. Itu seperti mengatakan, "Hey, semua orang dapat mencoba semua minuman!" Ini mungkin tidak selalu praktis, tapi itu adalah cara bagus untuk menghasilkan semua kombinasi yang mungkin.

The INNER JOIN

Apa itu INNER JOIN?

INNER JOIN lebih selektif. Itu seperti mencocokkan teman Anda dengan minuman favorit mereka, tapi hanya mencakup teman yang memiliki preferensi minuman yang diketahui.

Contoh INNER JOIN

Mari kita modifikasi tabel kita sedikit:

CREATE TABLE friends (
id SERIAL PRIMARY KEY,
name VARCHAR(50)
);

CREATE TABLE favorite_drinks (
id SERIAL PRIMARY KEY,
friend_id INTEGER,
drink VARCHAR(50)
);

INSERT INTO friends (name) VALUES ('Alice'), ('Bob'), ('Charlie'), ('David');
INSERT INTO favorite_drinks (friend_id, drink) VALUES (1, 'Cola'), (2, 'Juice'), (3, 'Water');

Sekarang, mari kita melakukan INNER JOIN:

SELECT f.name, fd.drink
FROM friends f
INNER JOIN favorite_drinks fd ON f.id = fd.friend_id;

Hasil:

name drink
Alice Cola
Bob Juice
Charlie Water

Perhatikan bahwa David tidak muncul dalam hasil karena dia tidak memiliki minuman favorit yang tercatat.

The LEFT OUTER JOIN

Apa itu LEFT OUTER JOIN?

LEFT OUTER JOIN seperti memastikan semua teman Anda berada dalam daftar tamu, bahkan jika Anda tidak tahu preferensi minuman mereka. Teman yang tidak memiliki preferensi yang diketahui mungkin mendapat minuman default atau tanpa minuman sama sekali.

Contoh LEFT OUTER JOIN

Menggunakan tabel yang sama seperti di contoh INNER JOIN:

SELECT f.name, fd.drink
FROM friends f
LEFT OUTER JOIN favorite_drinks fd ON f.id = fd.friend_id;

Hasil:

name drink
Alice Cola
Bob Juice
Charlie Water
David NULL

Lihat bagaimana David dimasukkan sekarang, tapi dengan minuman NULL? Itu keajaiban LEFT OUTER JOIN!

The RIGHT OUTER JOIN

Apa itu RIGHT OUTER JOIN?

RIGHT OUTER JOIN adalah kebalikan dari LEFT OUTER JOIN. Itu seperti memastikan semua minuman berada dalam daftar, bahkan jika tidak ada yang memilihnya sebagai favorit.

Contoh RIGHT OUTER JOIN

Mari kita tambahkan minuman yang tidak dipilih oleh siapa pun sebagai favorit:

INSERT INTO favorite_drinks (drink) VALUES ('Lemonade');

SELECT f.name, fd.drink
FROM friends f
RIGHT OUTER JOIN favorite_drinks fd ON f.id = fd.friend_id;

Hasil:

name drink
Alice Cola
Bob Juice
Charlie Water
NULL Lemonade

Lemonade muncul dalam daftar meskipun tidak ada teman yang memilihnya sebagai favorit.

The FULL OUTER JOIN

Apa itu FULL OUTER JOIN?

FULL OUTER JOIN adalah mimpi planner pesta. Itu mencakup semua teman dan semua minuman, mencocokkan mereka di mana mungkin dan menggunakan NULL di mana tidak ada kesamaan.

Contoh FULL OUTER JOIN

SELECT f.name, fd.drink
FROM friends f
FULL OUTER JOIN favorite_drinks fd ON f.id = fd.friend_id;

Hasil:

name drink
Alice Cola
Bob Juice
Charlie Water
David NULL
NULL Lemonade

Ini memberikan gambaran lengkap: semua teman ( bahkan David tanpa minuman favorit) dan semua minuman ( bahkan Lemonade tanpa teman yang memilihnya).

Kesimpulan

Dan begitu saja, teman-teman! Kita telah melakukan perjalanan melalui dunia PostgreSQL JOINs, dari CROSS JOIN yang mencakup semua hasta FULL OUTER JOIN yang lengkap. Ingat, memilih JOIN yang tepat adalah seperti memilih campuran yang sempurna untuk pesta Anda - itu semua tergantung pada informasi yang Anda butuhkan dan bagaimana Anda ingin menggabungkan data Anda.

Praktik JOIN ini, mainkan dengan berbagai skenario, dan segera Anda akan menjadi kehidupan pesta basisdata! Siapa tahu bahwa mengelola data bisa begitu menyenangkan, kan? Sampai jumpa lagi, selamat berkueri!

Jenis JOIN Deskripsi
CROSS JOIN Menggabungkan setiap baris dari tabel pertama dengan setiap baris dari tabel kedua
INNER JOIN Mengembalikan baris saat ada kesamaan dalam kedua tabel
LEFT OUTER JOIN Mengembalikan semua baris dari tabel kiri, dan baris yang cocok dari tabel kanan
RIGHT OUTER JOIN Mengembalikan semua baris dari tabel kanan, dan baris yang cocok dari tabel kiri
FULL OUTER JOIN Mengembalikan baris saat ada kesamaan dalam salah satu tabel

Credits: Image by storyset