Database
 sql >> Teknologi Basis Data >  >> RDS >> Database

SQL IN vs SQL ADA

SQL IN vs SQL EXISTS

Artikel ini membahas secara detail tentang IN dan operator EXISTS di SQL . Ini adalah pertanyaan umum di antara pengembang bahwa apa perbedaan antara kedua operator ini. Untuk mengetahui perbedaannya, mari kita bahas dulu masing-masing operator ini secara mendetail.

Operator DALAM

Operator IN digunakan untuk mendapatkan hasil ketika nilai tertentu cocok dengan nilai dalam kumpulan nilai atau dikembalikan oleh kueri dalam. Operator ini juga dapat digunakan dengan WHERE klausa untuk menentukan lebih dari satu nilai. Operator IN sering disebut sebagai akronim untuk operator OR karena operator ini mengurangi penggunaan beberapa kondisi OR dalam kueri SELECT, INSERT, UPDATE, atau DELETE .

Dalam operator ini, subquery diselesaikan terlebih dahulu dan hasilnya kemudian digunakan untuk menyelesaikan outer query.

Berikut ini adalah sintaks umum operator IN:

SELECT column_name
 FROM table_name
 WHERE column_name IN (value1, value2, …); 

Contoh:

Mari kita perhatikan tabel Pelanggan berikut.

Cust_id Nama_Pelanggan Kota Pekerjaan
1 Harry Kolkata Bisnis
2 Ron Mumbai Dokter
3 Albus Delhi Insinyur
4 Dobby Pune Ilmuwan
5 Jepret Bangalore Mahasiswa

Kueri:

SELECT *
 FROM Customer    
 WHERE Occupation IN ('Doctor', 'Scientist', 'Engineer'); 

Kueri di atas akan mengembalikan semua pelanggan yang merupakan Dokter atau Ilmuwan atau Insinyur.

Keluaran:

Cust_id Nama_Pelanggan Kota Pekerjaan
2 Ron Mumbai Dokter
3 Albus Delhi Insinyur
4 Dobby Pune Ilmuwan

Operator ADA

Operator EXISTS, tidak seperti operator IN, mengembalikan nilai Boolean. Operator ini memeriksa hasil kueri dalam dan mengembalikan nilai Boolean yaitu benar atau salah. Jika inner query mengembalikan satu atau beberapa record, maka operator akan mengembalikan true jika tidak maka akan mengembalikan false ketika tidak ada record yang ditemukan.

Operator ini juga efisien karena menghentikan pemrosesan lebih lanjut segera setelah peristiwa pertama yang sebenarnya terdeteksi.

Berikut ini adalah sintaks dari operator EXISTS:

SELECT column_names    
 FROM table_name    
 WHERE NOT EXISTS (    
 SELECT column_names     
 FROM table_name     
 WHERE condition    
 ); 

Contoh:

Mari kita perhatikan tabel Pelanggan berikut.

Cust_id Nama Pekerjaan Usia
101 Harry Insinyur 32
102 Ron Pengembang 30
103 Dobby Pemimpin 28
104 Albus Ilmuwan 45
105 Jepret tukang kayu 26
106 Jahe Aktor 25
107 NULL NULL NULL

Mari kita pertimbangkan Pesanan meja lain.

Order_id Cust_id Nama_Produk Tanggal_Pesanan
1 101 Laptop 2010-01-10
2 103 Desktop 2012-02-12
3 106 IPhone 2015-02-15
4 104 Seluler 02-03-05
5 102 TV 20-03-20

Kueri:

SELECT Name, Occupation
 FROM Customer    
 WHERE EXISTS (
 SELECT *
 FROM Orders     
 WHERE Customer.Cust_id = Orders.Cust_id
 ); 

Kueri di atas akan mengembalikan nama dan pekerjaan semua pelanggan yang telah melakukan setidaknya satu pesanan.

Keluaran:

Nama Pekerjaan
Harry Insinyur
Ron Pengembang
Dobby Pemimpin
Albus Ilmuwan
Jahe Aktor

Tabel perbedaan antara operator IN dan EXISTS

Perbedaan utama antara operator IN dan operator EXISTS tercantum di bawah ini dalam bentuk tabel:

Operator IN Operator ADA
Ini meminimalkan penggunaan kondisi ATAU. Ini memeriksa keberadaan catatan dalam kueri dalam.
Ini membandingkan nilai kueri dalam dengan nilai kueri luar. Itu tidak membandingkan nilai antara kueri dalam dan subkueri.
Ini memeriksa semua nilai di dalam blok klausa IN. Ini menghentikan eksekusi lebih lanjut segera setelah kondisi benar pertama terpenuhi.
Ini dapat mengembalikan TRUE, FALSE, atau NULL. Ini mengembalikan TRUE atau FALSE.
Dapat digunakan untuk memeriksa nilai NULL. Ini tidak dapat digunakan untuk memeriksa nilai NULL.
Ini digunakan dengan subkueri dan nilai. Ini hanya digunakan dengan subkueri.
Eksekusi lebih cepat jika hasil inner query lebih sedikit. Eksekusi lebih cepat meskipun hasil kueri dalam besar. Ini lebih efisien daripada operator IN.
Sintaks :SELECT column_names FROM table_name WHERE column_name IN (subquery); Sintaks :SELECT column_namesFROM table_nameWHERE [TIDAK] ADA (subquery);

Kesimpulan:

Dalam topik ini, perbandingan telah dibuat antara operator IN dan operator EXISTS dari SQL. Kedua operator melakukan operasi yang sama tetapi kerja internal mereka berbeda. Mereka memiliki kerja logis yang berbeda. Salah satu dari mereka dapat dipilih sesuai dengan kebutuhan. Namun, jika kumpulan datanya besar, selalu disarankan untuk menggunakan operator EXISTS.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cadangkan / Ekspor Basis Data dari SSH

  2. Apa cara tercepat untuk menghitung median?

  3. Skema Switch-A-Roo :Bagian 2

  4. Melihat DBCC CHECKCONSTRAINTS dan I/O

  5. Menghubungkan .NET di Linux ke Sumber Data ODBC