fbpx
27.8 C
Jakarta
Kamis, 22 Februari 2024

Cara Query beberapa tabel dalam SQL

Terkadang sulit untuk mengetahui sintaks SQL mana yang digunakan saat menggabungkan data yang mencakup beberapa tabel. SQL menyediakan beberapa pernyataan berbeda untuk melakukan jenis tugas ini; mengetahui mana yang harus diterapkan akan menghasilkan hasil yang efisien dan benar.

Dalam artikel ini, saya akan membahas beberapa metode yang lebih sering digunakan untuk menggabungkan data dari beberapa tabel menjadi satu kumpulan hasil: SELECT, JOIN, UNION, dan subqueries.

Stand terbaru untuk sintaks SQL adalah SQL: ISO 2016, tetapi sedikit yang berubah untuk pernyataan kueri dasar ini dalam beberapa dekade.

Namun, penting untuk diperhatikan bahwa beberapa database memiliki penyempurnaan unik yang dapat menghasilkan hasil yang tidak diharapkan jika tidak diterapkan dengan benar. Lihat dokumentasi pabrikan Anda untuk memastikan Anda menggunakan dialek yang tepat untuk sistem Anda.

Menggunakan SELECT

Pernyataan SELECT sederhana adalah cara paling dasar untuk membuat kueri beberapa tabel. Anda dapat memanggil lebih dari satu tabel dalam klausa FROM pernyataan untuk menggabungkan hasil dari beberapa tabel. Berikut ini contoh cara kerjanya:

SELECT table1.column1, table2.column2 FROM table1, table2 WHERE table1.column1 = table2.column1;

Notasi titik menggunakan karakter titik untuk memisahkan tabel dan kolom. Jika kolom hanya muncul di salah satu tabel yang direferensikan, Anda tidak perlu menyertakan nama yang sepenuhnya memenuhi syarat, tetapi mungkin berguna untuk melakukannya agar mudah dibaca.

Karakter koma memisahkan tabel dalam klausa FROM. Anda dapat menyertakan tabel sebanyak yang diperlukan, meskipun beberapa database memiliki batasan untuk apa yang dapat mereka tangani secara efisien sebelum memperkenalkan pernyataan JOIN statement (dijelaskan nanti).

Sintaks dasar ini adalah INNER JOIN sederhana. Beberapa database memperlakukannya persis sama dengan JOIN eksplisit.

Klausa WHERE mengungkapkan kriteria hanya mengembalikan rekaman yang nilai di table1.column1 sama dengan nilai di table2.column1. Hasilnya adalah tabel sementara yang berisi nilai dari dua tabel, di mana rekaman memenuhi ekspresi WHERE.

Perlu dicatat bahwa kondisi Anda untuk perbandingan tidak harus berupa hasil yang ditetapkan. Pada contoh di atas, table1.column1 dan table2.column1 digunakan untuk menggabungkan atau menggabungkan tabel, tetapi hanya nilai dari table2.column2 yang dikembalikan.

Sertakan lebih dari dua tabel dengan AND

Anda dapat memperluas fungsionalitas ini ke lebih dari dua tabel menggunakan kata kunci AND di klausa WHERE. Anda juga dapat menggunakan kombinasi tabel seperti itu untuk membatasi hasil Anda tanpa benar-benar mengembalikan kolom dari setiap tabel. Misalnya:

SELECT table1.column1, table2.column2 FROM table1, table2, table3 WHERE table1.column1 = table2.column1 AND table1.column1 = table3.column1;

Ini menggunakan AND untuk memasukkan dua kondisi dalam klausa WHERE.

Baca Juga:  Membersihkan dan menghapus cache Redis menggunakan CLI

Data berasal dari table1.column1 dan table2.column2 tetapi hanya jika kedua kondisi dalam klausa WHERE terpenuhi. Table3.column1 membatasi data yang dikembalikan meskipun tidak ada data dari tabel ini yang masuk ke set hasil. Perhatikan bahwa table3 harus dirujuk dalam klausa FROM.

Berhati-hatilah, bagaimanapun, bahwa metode kueri banyak tabel ini secara efektif merupakan JOIN tersirat.

Basis data Anda mungkin menangani berbagai hal secara berbeda, bergantung pada mesin pengoptimalan yang digunakannya. Selain itu, mengabaikan untuk menentukan sifat korelasi dengan klausa WHERE dapat memberi Anda hasil yang tidak diinginkan, seperti mengembalikan bidang rogue dalam kolom yang terkait dengan setiap kemungkinan hasil dari kueri lainnya, seperti dalam CROSS JOIN.

Jika Anda merasa nyaman dengan cara database menangani jenis pernyataan ini, dan Anda menggabungkan dua atau hanya beberapa tabel, pernyataan SELECT sederhana akan memenuhi kebutuhan Anda.

Menggunakan JOIN

JOIN bekerja dengan cara yang sama seperti pernyataan SELECT di atas: Ini mengembalikan set hasil dengan kolom dari tabel yang berbeda. Keuntungan menggunakan JOIN eksplisit daripada yang tersirat adalah ia menawarkan kontrol yang lebih besar atas kumpulan hasil Anda dan kemungkinan peningkatan kinerja saat banyak tabel terlibat.

Ada beberapa jenis JOIN — LEFT, RIGHT, dan FULL OUTER; INNER; dan CROSS. Jenis yang Anda gunakan ditentukan oleh hasil yang ingin Anda lihat. Misalnya, menggunakan LEFT OUTER JOIN akan mengembalikan semua baris yang relevan dari tabel pertama yang dicantumkan, sementara berpotensi menghapus baris dari tabel kedua yang tercantum jika tidak memiliki informasi yang berkorelasi di tabel pertama.

Ini berbeda dari INNER JOIN atau JOIN tersirat. INNER JOIN hanya akan mengembalikan baris yang memiliki data di kedua tabel. Bandingkan kueri berikut setelah menggunakan JOIN alih-alih WHERE:

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

Kolom yang berkorelasi masih sama, table2.column1, meskipun kueri tidak mengambil data dari kolom ini.

Menggunakan Subqueries

Subqueries, atau pernyataan subpilihan, adalah cara untuk menggunakan kumpulan hasil sebagai sumber daya dalam kueri lain untuk membatasi atau menyaring hasil. Alternatifnya seringkali berupa banyak kueri atau manipulasi data mentah yang tidak diinginkan.

Dengan Subqueries, Anda dapat mereferensikan tabel untuk menentukan penyertaan data atau, dalam beberapa kasus, mengembalikan kolom yang merupakan hasil dari subpilihan. Contoh berikut menggunakan dua tabel:

SELECT column1 FROM table1 WHERE EXISTS ( SELECT column1 FROM table2 WHERE table1.column1 = table2.column1 );

Satu tabel, tabel1, berisi data yang dikembalikan, sedangkan tabel lainnya, tabel2, memberikan nilai perbandingan untuk menentukan data yang benar-benar dikembalikan dari tabel1.

Baca Juga:  Baris perintah MySQL SHOW DATABASES, Daftar Semua List Database di MySQL

Salah satu pertimbangan penting saat menggunakan subkueri adalah kinerja. Kenyamanan ada harganya, dan bergantung pada ukuran, jumlah, dan kerumitan tabel dan pernyataan yang Anda gunakan, Anda mungkin ingin mengizinkan aplikasi Anda untuk menangani pemrosesan.

Setiap kueri diproses secara terpisah secara penuh sebelum digunakan sebagai sumber daya untuk kueri utama Anda. Jika memungkinkan, penggunaan JOIN secara kreatif dapat memberikan informasi yang sama dengan jeda waktu yang lebih singkat.

Menggunakan UNION

Pernyataan UNION adalah cara lain untuk mengembalikan informasi dari banyak tabel menggunakan satu kueri. Pernyataan UNION memungkinkan Anda melakukan kueri terhadap beberapa tabel dan mengembalikan hasilnya dalam kumpulan gabungan, seperti dalam contoh berikut:

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

Pernyataan ini menggabungkan data dari table1 dan table2 dan mengembalikan kumpulan hasil dengan tiga kolom yang berisi data dari kedua kueri. Tidak ada JOIN atau ketentuan yang harus dipenuhi.

Secara default, pernyataan UNION akan menghilangkan duplikat di antara tabel kecuali kata kunci UNION ALL digunakan.

Jika nama kolom Anda tidak cocok saat Anda menggunakan pernyataan UNION, gunakan alias untuk memberikan header yang bermakna pada hasil Anda:

SELECT column1, column2 as Two, column3 as Three FROM table1 UNION SELECT column1, column4 as Two, column5 as Three FROM table2;

Kumpulan hasil akan memiliki tiga kolom, kolom1, Dua dan Tiga — di mana Dua berisi nilai dari table1.column2 dan table2.column4 dan Tiga berisi nilai dari table1.column3 dan table2.column5.

Seperti subkueri, pernyataan UNION dapat membuat beban berat pada server database Anda, tetapi untuk penggunaan sesekali, pernyataan tersebut dapat menghemat banyak waktu.

Kapan menggunakan SELECT, JOIN, UNION atau Subqueries

Ketika berbicara tentang kueri basis data, biasanya ada banyak cara untuk mendekati masalah yang sama, tetapi satu biasanya akan lebih efisien daripada yang lain.

Kami telah meninjau beberapa metode yang lebih sering digunakan untuk menggabungkan data di beberapa tabel. Meskipun beberapa opsi ini dapat memengaruhi kinerja, praktik akan membantu Anda mengetahui waktu yang tepat untuk menggunakan setiap jenis kueri.

Terkadang sulit untuk mengetahui sintaks SQL mana yang digunakan saat menggabungkan data yang mencakup beberapa tabel. SQL menyediakan beberapa pernyataan berbeda untuk melakukan jenis tugas ini; mengetahui mana yang harus diterapkan akan menghasilkan hasil yang efisien dan benar.

Dalam artikel ini, saya akan membahas beberapa metode yang lebih sering digunakan untuk menggabungkan data dari beberapa tabel menjadi satu kumpulan hasil: SELECT, JOIN, UNION, dan subqueries.

Stand terbaru untuk sintaks SQL adalah SQL: ISO 2016, tetapi sedikit yang berubah untuk pernyataan kueri dasar ini dalam beberapa dekade.

Namun, penting untuk diperhatikan bahwa beberapa database memiliki penyempurnaan unik yang dapat menghasilkan hasil yang tidak diharapkan jika tidak diterapkan dengan benar. Lihat dokumentasi pabrikan Anda untuk memastikan Anda menggunakan dialek yang tepat untuk sistem Anda.

Menggunakan SELECT

Pernyataan SELECT sederhana adalah cara paling dasar untuk membuat kueri beberapa tabel. Anda dapat memanggil lebih dari satu tabel dalam klausa FROM pernyataan untuk menggabungkan hasil dari beberapa tabel. Berikut ini contoh cara kerjanya:

SELECT table1.column1, table2.column2 FROM table1, table2 WHERE table1.column1 = table2.column1;

Notasi titik menggunakan karakter titik untuk memisahkan tabel dan kolom. Jika kolom hanya muncul di salah satu tabel yang direferensikan, Anda tidak perlu menyertakan nama yang sepenuhnya memenuhi syarat, tetapi mungkin berguna untuk melakukannya agar mudah dibaca.

Karakter koma memisahkan tabel dalam klausa FROM. Anda dapat menyertakan tabel sebanyak yang diperlukan, meskipun beberapa database memiliki batasan untuk apa yang dapat mereka tangani secara efisien sebelum memperkenalkan pernyataan JOIN statement (dijelaskan nanti).

Sintaks dasar ini adalah INNER JOIN sederhana. Beberapa database memperlakukannya persis sama dengan JOIN eksplisit.

Klausa WHERE mengungkapkan kriteria hanya mengembalikan rekaman yang nilai di table1.column1 sama dengan nilai di table2.column1. Hasilnya adalah tabel sementara yang berisi nilai dari dua tabel, di mana rekaman memenuhi ekspresi WHERE.

Perlu dicatat bahwa kondisi Anda untuk perbandingan tidak harus berupa hasil yang ditetapkan. Pada contoh di atas, table1.column1 dan table2.column1 digunakan untuk menggabungkan atau menggabungkan tabel, tetapi hanya nilai dari table2.column2 yang dikembalikan.

Sertakan lebih dari dua tabel dengan AND

Anda dapat memperluas fungsionalitas ini ke lebih dari dua tabel menggunakan kata kunci AND di klausa WHERE. Anda juga dapat menggunakan kombinasi tabel seperti itu untuk membatasi hasil Anda tanpa benar-benar mengembalikan kolom dari setiap tabel. Misalnya:

SELECT table1.column1, table2.column2 FROM table1, table2, table3 WHERE table1.column1 = table2.column1 AND table1.column1 = table3.column1;

Ini menggunakan AND untuk memasukkan dua kondisi dalam klausa WHERE.

Baca Juga:  Mengatur Replikasi Master-Master MariaDB di Debian 11

Data berasal dari table1.column1 dan table2.column2 tetapi hanya jika kedua kondisi dalam klausa WHERE terpenuhi. Table3.column1 membatasi data yang dikembalikan meskipun tidak ada data dari tabel ini yang masuk ke set hasil. Perhatikan bahwa table3 harus dirujuk dalam klausa FROM.

Berhati-hatilah, bagaimanapun, bahwa metode kueri banyak tabel ini secara efektif merupakan JOIN tersirat.

Basis data Anda mungkin menangani berbagai hal secara berbeda, bergantung pada mesin pengoptimalan yang digunakannya. Selain itu, mengabaikan untuk menentukan sifat korelasi dengan klausa WHERE dapat memberi Anda hasil yang tidak diinginkan, seperti mengembalikan bidang rogue dalam kolom yang terkait dengan setiap kemungkinan hasil dari kueri lainnya, seperti dalam CROSS JOIN.

Jika Anda merasa nyaman dengan cara database menangani jenis pernyataan ini, dan Anda menggabungkan dua atau hanya beberapa tabel, pernyataan SELECT sederhana akan memenuhi kebutuhan Anda.

Menggunakan JOIN

JOIN bekerja dengan cara yang sama seperti pernyataan SELECT di atas: Ini mengembalikan set hasil dengan kolom dari tabel yang berbeda. Keuntungan menggunakan JOIN eksplisit daripada yang tersirat adalah ia menawarkan kontrol yang lebih besar atas kumpulan hasil Anda dan kemungkinan peningkatan kinerja saat banyak tabel terlibat.

Ada beberapa jenis JOIN — LEFT, RIGHT, dan FULL OUTER; INNER; dan CROSS. Jenis yang Anda gunakan ditentukan oleh hasil yang ingin Anda lihat. Misalnya, menggunakan LEFT OUTER JOIN akan mengembalikan semua baris yang relevan dari tabel pertama yang dicantumkan, sementara berpotensi menghapus baris dari tabel kedua yang tercantum jika tidak memiliki informasi yang berkorelasi di tabel pertama.

Ini berbeda dari INNER JOIN atau JOIN tersirat. INNER JOIN hanya akan mengembalikan baris yang memiliki data di kedua tabel. Bandingkan kueri berikut setelah menggunakan JOIN alih-alih WHERE:

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

Kolom yang berkorelasi masih sama, table2.column1, meskipun kueri tidak mengambil data dari kolom ini.

Menggunakan Subqueries

Subqueries, atau pernyataan subpilihan, adalah cara untuk menggunakan kumpulan hasil sebagai sumber daya dalam kueri lain untuk membatasi atau menyaring hasil. Alternatifnya seringkali berupa banyak kueri atau manipulasi data mentah yang tidak diinginkan.

Dengan Subqueries, Anda dapat mereferensikan tabel untuk menentukan penyertaan data atau, dalam beberapa kasus, mengembalikan kolom yang merupakan hasil dari subpilihan. Contoh berikut menggunakan dua tabel:

SELECT column1 FROM table1 WHERE EXISTS ( SELECT column1 FROM table2 WHERE table1.column1 = table2.column1 );

Satu tabel, tabel1, berisi data yang dikembalikan, sedangkan tabel lainnya, tabel2, memberikan nilai perbandingan untuk menentukan data yang benar-benar dikembalikan dari tabel1.

Baca Juga:  Cara menginstal Nginx, MariaDB dan HHVM pada Debian 8

Salah satu pertimbangan penting saat menggunakan subkueri adalah kinerja. Kenyamanan ada harganya, dan bergantung pada ukuran, jumlah, dan kerumitan tabel dan pernyataan yang Anda gunakan, Anda mungkin ingin mengizinkan aplikasi Anda untuk menangani pemrosesan.

Setiap kueri diproses secara terpisah secara penuh sebelum digunakan sebagai sumber daya untuk kueri utama Anda. Jika memungkinkan, penggunaan JOIN secara kreatif dapat memberikan informasi yang sama dengan jeda waktu yang lebih singkat.

Menggunakan UNION

Pernyataan UNION adalah cara lain untuk mengembalikan informasi dari banyak tabel menggunakan satu kueri. Pernyataan UNION memungkinkan Anda melakukan kueri terhadap beberapa tabel dan mengembalikan hasilnya dalam kumpulan gabungan, seperti dalam contoh berikut:

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

Pernyataan ini menggabungkan data dari table1 dan table2 dan mengembalikan kumpulan hasil dengan tiga kolom yang berisi data dari kedua kueri. Tidak ada JOIN atau ketentuan yang harus dipenuhi.

Secara default, pernyataan UNION akan menghilangkan duplikat di antara tabel kecuali kata kunci UNION ALL digunakan.

Jika nama kolom Anda tidak cocok saat Anda menggunakan pernyataan UNION, gunakan alias untuk memberikan header yang bermakna pada hasil Anda:

SELECT column1, column2 as Two, column3 as Three FROM table1 UNION SELECT column1, column4 as Two, column5 as Three FROM table2;

Kumpulan hasil akan memiliki tiga kolom, kolom1, Dua dan Tiga — di mana Dua berisi nilai dari table1.column2 dan table2.column4 dan Tiga berisi nilai dari table1.column3 dan table2.column5.

Seperti subkueri, pernyataan UNION dapat membuat beban berat pada server database Anda, tetapi untuk penggunaan sesekali, pernyataan tersebut dapat menghemat banyak waktu.

Kapan menggunakan SELECT, JOIN, UNION atau Subqueries

Ketika berbicara tentang kueri basis data, biasanya ada banyak cara untuk mendekati masalah yang sama, tetapi satu biasanya akan lebih efisien daripada yang lain.

Kami telah meninjau beberapa metode yang lebih sering digunakan untuk menggabungkan data di beberapa tabel. Meskipun beberapa opsi ini dapat memengaruhi kinerja, praktik akan membantu Anda mengetahui waktu yang tepat untuk menggunakan setiap jenis kueri.

Untuk mendapatkan Berita & Review menarik Saksenengku Network
Google News

Artikel Terkait

Populer

Artikel Terbaru