PostgreSQL EXISTS dengan SELECT Operator (Contoh)

โšก Ringkasan Cerdas

PostgreSQL EXISTS adalah operator Boolean yang menguji apakah subkueri berkorelasi mengembalikan baris apa pun, sehingga memungkinkan pernyataan SELECT, INSERT, UPDATE, dan DELETE untuk memfilter data berdasarkan ada atau tidaknya catatan yang cocok secara efisien.

  • ๐Ÿ“‹ sintaks: WHERE EXISTS (subquery) mengembalikan nilai true jika subquery menghasilkan setidaknya satu baris.
  • ๐Ÿ”— Subkueri yang Berkorelasi: EXISTS menghubungkan kueri dalam dan luar, mencocokkan baris berdasarkan kunci bersama.
  • โšก Hubungan Pendek: EXISTS berhenti pada baris yang cocok pertama, sehingga dapat berfungsi dengan baik pada tabel besar.
  • ๐Ÿ” Empat Pernyataan: Operator ini berfungsi di dalam kueri SELECT, INSERT, UPDATE, dan DELETE.
  • ๐Ÿ›ก๏ธ TIDAK ADA: Dengan aman mengecualikan baris dan menghindari jebakan NULL yang menyebabkan kesalahan pada klausa NOT IN.
  • ๐Ÿค– Pertanyaan AI: Asisten menghasilkan klausa EXISTS dan menandai risiko kinerja subkueri berkorelasi.

PostgreSQL ADA dengan Select Operator

Apa yang ADA di PostgreSQL?

The PostgreSQL ADA Operator EXISTS menguji apakah suatu baris ada dalam subkueri. Ini berarti operator ini digunakan bersama dengan subkueri. Operator EXISTS dikatakan telah terpenuhi ketika setidaknya satu baris ditemukan dalam subkueri. Anda dapat menggunakan operasi ini bersama dengan pernyataan SELECT, UPDATE, INSERT, dan DELETE.

PostgreSQL Sintaks Kueri EXISTS

Berikut adalah sintaks untuk PostgreSQL Pernyataan ADA:

WHERE EXISTS (subquery);

Sintaks di atas menunjukkan bahwa operator EXISTS mengambil argumen, yang merupakan subquery. Subkueri hanyalah a PILIH pernyataan yang harus dimulai dengan SELECT * alih-alih daftar nama kolom atau ekspresi.

PostgreSQL EXISTS dengan Pernyataan SELECT

Mari kita lihat cara menggunakan pernyataan SELECT dengan operator EXISTS. Kita memiliki tabel-tabel berikut:

Book:

PostgreSQL EXISTS dengan Pernyataan SELECT

Harga:

PostgreSQL EXISTS dengan Pernyataan SELECT

Jalankan pernyataan berikut:

SELECT *
FROM Book
WHERE EXISTS (SELECT *
              FROM Price
              WHERE Book.id = Price.id);

Ini mengembalikan yang berikut:

PostgreSQL EXISTS dengan hasil pernyataan SELECT

Perintah di atas harus mengembalikan semua catatan dalam tabel Buku yang idnya cocok dengan id catatan apa pun berdasarkan subkueri. Hanya satu id yang cocok. Oleh karena itu, hanya satu catatan yang dikembalikan.

PostgreSQL EXISTS dengan Pernyataan INSERT

Kita dapat menggunakan operator EXISTS dalam sebuah pernyataan MASUKKANKami memiliki 3 tabel berikut:

Book:

PostgreSQL EXISTS dengan Pernyataan INSERT

Harga:

PostgreSQL EXISTS dengan Pernyataan INSERT

Harga2:

PostgreSQL EXISTS dengan Pernyataan INSERT

Kita kemudian dapat menjalankan pernyataan berikut:

INSERT INTO Price
SELECT id, price
FROM Price2
WHERE EXISTS (SELECT id
              FROM Book
              WHERE Book.id = Price2.id);

Tabel Harga sekarang sebagai berikut:

PostgreSQL EXISTS dengan hasil pernyataan INSERT

Baris dengan id 5 pada tabel bernama Price2 telah cocok. Catatan ini kemudian dimasukkan ke dalam tabel Harga.

PostgreSQL EXISTS dengan Pernyataan UPDATE

Kita dapat menggunakan operator EXISTS dalam pernyataan UPDATE.

Jalankan kueri berikut:

UPDATE Price
SET price = (SELECT price
              FROM Price2
              WHERE Price2.id = Price.id)
WHERE EXISTS (SELECT id, price
FROM Price2
WHERE Price2.id = Price.id);

PostgreSQL EXISTS dengan Pernyataan UPDATE

Kami memperbarui kolom harga pada tabel Harga. Tujuan kami adalah agar harga item yang berbagi id sama. Hanya satu baris yang cocok, yaitu 5.

Namun karena harganya sama yakni 205, maka tidak dilakukan pembaruan. Jika ada perbedaan maka akan dilakukan pembaruan.

PostgreSQL EXISTS dengan Pernyataan DELETE

A PostgreSQL Pernyataan DELETE dapat menggunakan operator EXISTS. Berikut ini contohnya:

DELETE FROM Price
WHERE EXISTS (SELECT *
              FROM Price2
              WHERE Price.id = Price2.id);

Tabel Harga sekarang sebagai berikut:

PostgreSQL EXISTS dengan Pernyataan DELETE

Baris dengan id 5 telah dihapus.

PostgreSQL Pernyataan EXISTS menggunakan pgAdmin

Di luar shell SQL, kueri EXISTS yang sama dapat dieksekusi secara visual melalui antarmuka pgAdmin. Sekarang mari kita lihat bagaimana tindakan ini dapat dilakukan menggunakan pgAdmin:

Dengan Pernyataan SELECT

Berikut adalah langkah-langkah untuk menggunakan kueri EXISTS di PostgreSQL dengan pernyataan SELECT menggunakan pgAdmin:

Langkah 1) Masuk ke akun pgAdmin Anda. Buka pgAdmin dan masuk ke akun Anda menggunakan kredensial Anda.

Langkah 2) Buat Basis Data Demo.

  1. Dari bilah navigasi di sebelah kiri, klik Database.
  2. Klik Demo.

PostgreSQL Pernyataan EXISTS menggunakan pgAdmin

Langkah 3) Ketik kueri di bawah ini di editor kueri:

SELECT *
FROM Book
WHERE EXISTS (SELECT *
              FROM Price
              WHERE Book.id = Price.id);

Langkah 4) Klik tombol Jalankan.

PostgreSQL Pernyataan EXISTS menggunakan pgAdmin

Seharusnya mengembalikan hal berikut:

PostgreSQL Pernyataan EXISTS menggunakan pgAdmin

Dengan Pernyataan INSERT

Untuk mencapai hal yang sama melalui pgAdmin, lakukan ini:

Langkah 1) Masuk ke akun pgAdmin Anda.

Langkah 2)

  1. Dari bilah navigasi di sebelah kiri, klik Database.
  2. Klik Demo.

Pernyataan EXISTS dalam PostgreSQL menggunakan pgAdmin

Langkah 3) Ketik kueri di editor kueri:

INSERT INTO Price
SELECT id, price
FROM Price2
WHERE EXISTS (SELECT id
              FROM Book
              WHERE Book.id = Price2.id);

Langkah 4) Klik tombol Jalankan.

Pernyataan EXISTS dalam PostgreSQL menggunakan pgAdmin

Tabel Harga sekarang seharusnya seperti berikut:

Pernyataan EXISTS dalam PostgreSQL menggunakan pgAdmin

Dengan Pernyataan UPDATE

Untuk mencapai hal yang sama melalui pgAdmin, lakukan ini:

Langkah 1) Masuk ke akun pgAdmin Anda.

Langkah 2)

  1. Dari bilah navigasi di sebelah kiri, klik Database.
  2. Klik Demo.

Pernyataan EXISTS dalam PostgreSQL menggunakan pgAdmin

Langkah 3) Ketik kueri di editor kueri:

UPDATE Price
SET price = (SELECT price
              FROM Price2
              WHERE Price2.id = Price.id)
WHERE EXISTS (SELECT id, price
FROM Price2
WHERE Price2.id = Price.id);

Langkah 4) Klik tombol Jalankan.

PostgreSQL Pernyataan EXISTS menggunakan pgAdmin

Tabel Harga sekarang seharusnya seperti berikut:

PostgreSQL Pernyataan EXISTS menggunakan pgAdmin

Dengan Pernyataan DELETE

Untuk mencapai hal yang sama melalui pgAdmin, lakukan ini:

Langkah 1) Masuk ke akun pgAdmin Anda.

Langkah 2)

  1. Dari bilah navigasi di sebelah kiri, klik Database.
  2. Klik Demo.

PostgreSQL Pernyataan EXISTS menggunakan pgAdmin

Langkah 3) Ketik kueri di editor kueri:

DELETE FROM Price
WHERE EXISTS (SELECT *
              FROM Price2
              WHERE Price.id = Price2.id);

Langkah 4) Klik tombol Jalankan.

PostgreSQL Pernyataan EXISTS menggunakan pgAdmin

Tabel Harga sekarang seharusnya seperti berikut:

PostgreSQL Pernyataan EXISTS menggunakan pgAdmin

Unduh Database yang digunakan dalam Tutorial ini

Pertanyaan Umum Demo Slot

EXISTS menguji apakah subkueri yang berkorelasi mengembalikan baris apa pun dan berhenti pada kecocokan pertama, sehingga cocok untuk subkueri besar. IN membandingkan suatu nilai dengan sebuah daftar dan cocok untuk himpunan kecil dan konstan.

NOT IN dapat mengembalikan nol baris ketika subkueri berisi NULL, karena perbandingan menjadi tidak diketahui. NOT EXISTS mengabaikan NULL dan mengevaluasi setiap baris dengan benar, menjadikannya pilihan yang andal untuk anti-join.

Subkueri berkorelasi merujuk pada kolom dari kueri luar, seperti WHERE Book.id = Price.id. EXISTS memeriksanya kembali untuk setiap baris luar dan mengembalikan nilai true setelah ditemukan kecocokan.

Ya. EXISTS mengembalikan nilai true segera setelah subkueri menghasilkan satu baris, sehingga tidak memindai sisanya. Perilaku short-circuit ini membuatnya efisien pada subkueri berkorelasi yang besar.

Tidak. EXISTS hanya memeriksa apakah subkueri mengembalikan baris, jadi SELECT *, SELECT 1, atau SELECT id berperilaku sama. Daftar kolom di dalam subkueri tidak memengaruhi hasilnya.

Lakukan pengindeksan pada kolom-kolom yang digabungkan di dalam subkueri, pertahankan kondisi korelasi agar dapat disesuaikan (sargable), dan jalankan EXPLAIN ANALYZE. PostgreSQL sering kali menulis ulang EXISTS sebagai semi-join yang efisien ketika indeks mendukungnya.

Asisten AI mengubah aturan bahasa Inggris sederhana menjadi klausa EXISTS, membangun subkueri yang berkorelasi, dan memperingatkan tentang jebakan NOT IN NULL. Mereka juga menyarankan indeks dan petunjuk EXPLAIN untuk penyetelan.

Ya. Sebuah AI Copilot mendeteksi pola subkueri dan menulis ulang IN menjadi EXISTS atau NOT IN menjadi NOT EXISTS, sehingga meningkatkan keamanan NULL dan kinerja pada tabel besar.

Ringkaslah postingan ini dengan: