Salah satu manfaat terbesar menggunakan database relasional seperti MySQL adalah struktur relasionalnya memungkinkan Anda untuk dengan mudah menyimpan dan menanyakan informasi di beberapa tabel.

Mari kita jelajahi cara mengambil data yang Anda inginkan dari beberapa tabel database, dan berbagai gabungan yang tersedia yang memungkinkan Anda mendapatkan hasil yang Anda inginkan.

Inisialisasi Contoh Database

Ini tidak diperlukan, tetapi jika Anda ingin mengikuti contoh dalam artikel ini, Anda dapat menginisialisasi database contoh secara lokal dengan perintah terminal di bawah ini:

git clone https://github.com/mdizak/sample-select-db.git
cd sample-select-db
sudo mysql sudo mysql sampel b
mysql> PILIH JUMLAH (*) DARI pelanggan;

Anda harus mendapatkan hasil yang menyatakan ada 2000 baris di dalam pelanggan meja.

Default / INNER Gabung

Gabungan default digunakan di dalam Database MySQL disebut gabungan INNER, dan merupakan gabungan yang paling umum dan lurus ke depan. Gabungan ini mengembalikan semua rekaman yang memiliki rekaman yang cocok di kedua tabel, dan menutup semua rekaman lainnya.

instagram viewer

Cara Menghubungkan ke Database MySQL Dengan Java

Java menyediakan JDBC sebagai bagian dari Java SDK. Dalam artikel ini, mari kita lihat detail menghubungkan ke database MySQL dan menjalankan kueri dengannya.

Misalnya, jika Anda ingin melihat nama depan dan belakang pelanggan, ditambah jumlah pesanan dan tanggal untuk semua pesanan yang lebih besar dari $ 1000, Anda dapat menggunakan pernyataan SQL berikut:


PILIH
c.id, c.first_name, c.last_name, o.amount, o.created_at
DARI
pelanggan c, pesanan o
DIMANA
o.customer_id = c.id DAN o.amount> = 1000;

Beberapa catatan tentang query di atas:

  • Lima kolom berbeda sedang dipilih, tiga dari tabel pelanggan dan dua dari tabel pesanan.
  • Dalam klausa FROM, dua tabel ditentukan, tetapi diakhiri dengan huruf "c" dan "o". Ini hanya menentukan alias dalam SQL, bisa apa saja yang Anda inginkan, dan digunakan untuk mempersingkat kueri SQL.
  • Itu o.customer_id = c.id adalah aspek gabungan dari kueri, dan dan memastikan korelasi yang tepat antara pelanggan dan pesanan.

Cara berbeda dan secara teknis lebih benar secara sintaksis untuk menulis kueri yang sama ada di bawah ini:


PILIH
c.id, c.first_name, c.last_name, o.amount, o.created_at
DARI
pelanggan c INNER GABUNG pesanan o
DI
customer_id = c.id
DIMANA
o. jumlah> = 1000;

Kueri di atas cenderung sedikit lebih mudah dibaca karena Anda dapat dengan mudah melihat tabel gabungan antara pelanggan dan pesanan. Untuk semua maksud, kedua kueri ini sama, dan akan menghasilkan rekaman yang persis sama.

LEFT Bergabung

Gabungan kiri akan mengembalikan semua catatan dari tabel kiri yang juga cocok dengan catatan dari tabel kanan, dan menutup semua catatan lainnya. Misalnya, mungkin Anda ingin melihat jumlah total penjualan untuk setiap produk di database, Anda dapat mencoba menggunakan kueri seperti:


PILIH
p.name, sum (item.amount) AS tamount
DARI
orders_items item LEFT JOIN products p
DI
item.product_id = p.id
GROUP BY item.product_id ORDER BY tamount DESC

Ini menghasilkan tampilan dua kolom yang bagus yang menunjukkan nama produk dengan jumlah total penjualan, dan berfungsi seperti yang diharapkan. Kueri menelusuri semua produk dalam tabel orders_items, menggabungkannya ke rekaman dalam tabel produk, dan mengembalikan jumlah total penjualan masing-masing.

KANAN Bergabung

Menggunakan contoh di atas, perhatikan fakta bahwa kueri di atas hanya mengembalikan 19 catatan sementara total ada 22 produk dalam database. Ini karena kueri dimulai dengan tabel orders_items dan dibiarkan bergabung ke tabel produk, dan karena beberapa produk tidak pernah dipesan, tidak ada catatan dari produk tersebut di dalam orders_items meja.

Apa jadinya jika Anda ingin mendapatkan daftar semua produk dengan jumlah penjualan, termasuk produk yang belum dipesan? Coba hak bergabung dengan kueri berikut:


PILIH
p.name, sum (item.amount) AS tamount
DARI
orders_items item RIGHT JOIN products p
DI
item.product_id = p.id
GRUP OLEH p.id ORDER OLEH tamount DESC

Itu lebih baik, dan kueri sekarang mengembalikan 22 produk lengkap dengan tiga di antaranya memiliki jumlah batal. Ini karena alih-alih menggunakan orders_items sebagai tabel utama yang bergabung dengan tabel produk, join kanan membalik urutan dan menggabungkan tabel produk ke tabel orders_items.

Beberapa Gabungan dalam Query

Terkadang Anda memiliki kebutuhan untuk menggabungkan tiga atau lebih tabel bersama-sama untuk mendapatkan sekumpulan hasil tertentu.

Misalnya, mungkin Anda menginginkan daftar semua pelanggan yang telah membeli microwave (id produk # 1), termasuk nama dan tanggal pemesanan. Ini membutuhkan SELECT di tiga tabel yang bisa dilakukan dengan menggunakan dua gabungan dengan kueri berikut:


PILIH
c.first_name, c.last_name, o.amount, o.created_at
DARI
pelanggan c INNER GABUNG pesanan o
DI
c.id = o.customer_id INNER JOIN orders_items item
DI
item.order_id = o.id
DIMANA
item.product_id = 1 ORDER BY o.created_at;

Kueri ini mengembalikan semua 426 pesanan microwave, dan berfungsi seperti yang diharapkan. Ini pertama-tama mencocokkan semua pelanggan dengan pesanan mereka masing-masing, kemudian kueri selanjutnya yang ditetapkan oleh hasil mencocokkan semua pesanan hanya dengan yang ada dalam tabel orders_items yang berisi produk microwave (id # 1).

Jangan Gunakan Sub-Queries dengan Klausul IN

Sebagai sidenote cepat, dengan cara apa pun Anda harus selalu menghindari penggunaan sub-kueri dengan dalam kueri SQL Anda seperti:

PILIH first_name, last_name DARI pelanggan WHERE id IN (PILIH customer_id DARI pesanan WHERE status = 'disetujui' DAN jumlah <100);

Kueri seperti di atas sangat tidak efisien, menggunakan banyak sumber daya, dan harus dihindari sebisa mungkin. Sebagai gantinya, gunakan gabungan yang tepat seperti yang dijelaskan di bagian di atas. Misalnya, kueri di atas harus ditulis ulang sebagai:

PILIH c.first_name, c.last_name DARI pelanggan c KIRI GABUNG pesanan o ON o.customer_id = c.id DI MANA o.status = 'disetujui' DAN o. Jumlahnya <100;

Hemat Waktu Dengan Bergabungnya SQL

Artikel ini semoga membantu menunjukkan kepada Anda kekuatan database relasional seperti MySQL, dan cara membangunnya Kueri SQL yang mengambil rekaman dari beberapa tabel dalam satu kueri menggunakan gabungan, memungkinkan Anda untuk mengambil hasil persis yang diinginkan.

Anda telah mempelajari tiga gabungan berbeda dalam SQL, cara menggunakan alias kolom dan nama tabel, menggunakan beberapa gabungan dalam satu kueri, dan mengapa Anda harus menghindari sub-kueri. Jangan pernah berebut lagi mencoba menyusun kumpulan data yang berbeda secara manual menjadi satu, dan mulai menggunakan gabungan untuk mengesankan rekan kerja Anda dan menghemat waktu.

Surel
10 Cara Rapi untuk Membuat Dokumen Google yang Indah

Google Docs sekarang menjadi pembangkit tenaga listrik kantor. Dengan bantuan add-on ini, Anda dapat membuat Google Docs Anda terlihat cantik dan bergaya.

Topik-topik terkait
  • Pemrograman
  • SQL
  • database
Tentang Penulis
Matt Dizak (13 Artikel Dipublikasikan)Selebihnya Dari Matt Dizak

Berlangganan newsletter kami

Bergabunglah dengan buletin kami untuk mendapatkan tip teknologi, ulasan, ebook gratis, dan penawaran eksklusif!

Satu langkah lagi…!

Harap konfirmasi alamat email Anda di email yang baru saja kami kirimkan kepada Anda.

.