MySQL - Union vs Join: Understanding the Difference

Hai, para penggemar basis data yang bersemangat! Hari ini, kita akan memulai perjalanan yang menarik melalui dunia MySQL, mengembangkan dua alat kuat dalam kotak alat basis data kita: UNION dan JOIN. Sebagai guru komputer tetangga yang ramah, saya di sini untuk mengarahkan Anda melalui konsep ini dengan penjelasan yang jelas dan banyak contoh. Jadi, ambil catatan virtual Anda, dan mari kita masuk ke dalam!

MySQL - Union vs Join

Understanding the Basics

Sebelum kita membanjiri ke dalam khususnya UNION dan JOIN, mari kita mulai dengan sebuah peningkatan cepat tentang apa yang dilakukan operasi ini di MySQL.

What is UNION?

UNION seperti seorang chef utama yang menggabungkan bahan-bahan dari resep yang berbeda menjadi satu hidangan yang lezat. Itu memungkinkan kita untuk menggabungkan hasil dari dua atau lebih pernyataan SELECT menjadi satu hasil.

What is JOIN?

JOIN, dari sisi lain, seperti seorang pemaaf. Itu membantu kita menggabungkan baris dari dua atau lebih tabel berdasarkan kolom yang berhubungan antaranya.

Sekarang kita memiliki pengertian dasar, mari kita jelajahi masing-masing dari ini secara lebih rinci.

Working of UNION

UNION digunakan untuk menggabungkan hasil dari dua atau lebih pernyataan SELECT. Ini adalah sintaksis dasar:

SELECT column1, column2, ... FROM table1
UNION
SELECT column1, column2, ... FROM table2;

Mari kita rujuk ini dengan contoh. Bayangkan kita memiliki dua tabel: fruits dan vegetables.

-- Create and populate the fruits table
CREATE TABLE fruits (
id INT PRIMARY KEY,
name VARCHAR(50),
color VARCHAR(20)
);

INSERT INTO fruits VALUES
(1, 'Apple', 'Red'),
(2, 'Banana', 'Yellow'),
(3, 'Grape', 'Purple');

-- Create and populate the vegetables table
CREATE TABLE vegetables (
id INT PRIMARY KEY,
name VARCHAR(50),
color VARCHAR(20)
);

INSERT INTO vegetables VALUES
(1, 'Carrot', 'Orange'),
(2, 'Broccoli', 'Green'),
(3, 'Eggplant', 'Purple');

-- Now, let's use UNION to combine these tables
SELECT name, color FROM fruits
UNION
SELECT name, color FROM vegetables;

Kueri ini akan memberikan kita daftar gabungan semua buah dan sayuran. Hasilnya akan tampak seperti ini:

name color
Apple Red
Banana Yellow
Grape Purple
Carrot Orange
Broccoli Green
Eggplant Purple

Catatan bahwa UNION secara default menghapus baris duplikat. Jika Anda ingin menjaga duplikat, Anda dapat menggunakan UNION ALL saja.

Key Points about UNION:

  1. Jumlah dan urutan kolom harus sama dalam semua pernyataan SELECT.
  2. Tipe data kolom yang sepadan harus kompatibel.
  3. Secara default, UNION menghapus baris duplikat. Gunakan UNION ALL untuk menjaga duplikat.

Working of JOIN

JOIN digunakan untuk menggabungkan baris dari dua atau lebih tabel berdasarkan kolom yang berhubungan antaranya. Ada beberapa jenis JOIN, tapi kita akan fokus pada yang paling umum: INNER JOIN.

Ini adalah sintaksis dasar:

SELECT column1, column2, ...
FROM table1
INNER JOIN table2
ON table1.column_name = table2.column_name;

Mari kita ilustrasikan ini dengan contoh. Bayangkan kita memiliki dua tabel: customers dan orders.

-- Create and populate the customers table
CREATE TABLE customers (
customer_id INT PRIMARY KEY,
customer_name VARCHAR(50),
city VARCHAR(50)
);

INSERT INTO customers VALUES
(1, 'John Doe', 'New York'),
(2, 'Jane Smith', 'Los Angeles'),
(3, 'Bob Johnson', 'Chicago');

-- Create and populate the orders table
CREATE TABLE orders (
order_id INT PRIMARY KEY,
customer_id INT,
product VARCHAR(50),
amount DECIMAL(10, 2)
);

INSERT INTO orders VALUES
(101, 1, 'Laptop', 999.99),
(102, 2, 'Smartphone', 599.99),
(103, 1, 'Tablet', 299.99);

-- Now, let's use JOIN to combine these tables
SELECT c.customer_name, o.product, o.amount
FROM customers c
INNER JOIN orders o
ON c.customer_id = o.customer_id;

Kueri ini akan memberikan kita daftar pelanggan dan pesanan mereka. Hasilnya akan tampak seperti ini:

customer_name product amount
John Doe Laptop 999.99
John Doe Tablet 299.99
Jane Smith Smartphone 599.99

Key Points about JOIN:

  1. JOIN menggabungkan baris dari tabel yang berbeda berdasarkan kolom yang berhubungan antaranya.
  2. Klause ON menentukan kondisi untuk menggabungkan tabel.
  3. Ada jenis JOIN yang berbeda (INNER, LEFT, RIGHT, FULL), masing-masing dengan perilaku yang berbeda.

UNION vs JOIN: When to Use Which?

Sekarang kita telah menelusuri UNION dan JOIN, Anda mungkin bertanya-tanya kapan menggunakan yang mana. Mari kitauraikan ini:

Use UNION when:

  1. Anda ingin menggabungkan baris dari tabel yang mirip atau kueri.
  2. Tabel memiliki struktur yang sama (jumlah dan tipe kolom).
  3. Anda perlu menghapus duplikat (atau gunakan UNION ALL untuk menjaganya).

Use JOIN when:

  1. Anda ingin menggabungkan kolom dari tabel yang berbeda.
  2. Ada hubungan logis antara tabel.
  3. Anda perlu mengambil data yang melintasi beberapa tabel.

Berikut adalah tabel perbandingan praktis:

Feature UNION JOIN
Purpose Menggabungkan baris Menggabungkan kolom
Table Structure Harus mirip Bisa berbeda
Result Kombinasi vertikal Kombinasi horizontal
Duplicate Handling Dihapus secara default (UNION ALL menjaga) Bergantung pada jenis JOIN
Performance Biasanya lebih cepat untuk dataset besar Dapat lebih lambat untuk JOIN yang kompleks

Ingat, memilih antara UNION dan JOIN tergantung pada struktur data khusus Anda dan hasil yang Anda inginkan. Latih dengan berbagai jenis scenario untuk mendapatkan rasa kapan menggunakan yang mana.

Dalam kesimpulan, UNION dan JOIN adalah alat kuat di MySQL, masing-masing untuk tujuan yang berbeda. UNION membantu kita menggabungkan data secara vertikal, sedangkan JOIN memungkinkan kita untuk menyatukan data secara horizontal. Sepanjang Anda terus mengembangkan pengetahuan MySQL Anda, Anda akan menemukan banyak situasi di mana operasi ini akan sangat berguna. Tetap latih, dan segera Anda akan menjadi maestro MySQL!

Happy querying, para ahli basis data masa depan!

Credits: Image by storyset