Database
 sql >> डेटाबेस >  >> RDS >> Database

SQL IN बनाम SQL EXISTS

SQL IN बनाम SQL EXISTS

यह लेख IN और SQL में EXISTS ऑपरेटरों के बारे में विस्तार से चर्चा करता है . डेवलपर्स के बीच यह एक आम सवाल है कि इन दोनों ऑपरेटरों के बीच क्या अंतर है। अंतर जानने के लिए, आइए पहले इनमें से प्रत्येक ऑपरेटर के बारे में विस्तार से चर्चा करें।

इन ऑपरेटर

IN ऑपरेटर का उपयोग परिणाम प्राप्त करने के लिए किया जाता है जब एक निर्दिष्ट मान मानों के एक सेट में किसी मान से मेल खाता है या किसी आंतरिक क्वेरी द्वारा लौटाया जाता है। इस ऑपरेटर का उपयोग WHERE . के साथ भी किया जा सकता है एक से अधिक मान निर्दिष्ट करने के लिए खंड। IN ऑपरेटर को अक्सर OR ऑपरेटर के संक्षिप्त नाम के रूप में संदर्भित किया जाता है क्योंकि यह SELECT, INSERT, UPDATE या DELETE क्वेरी में एकाधिक OR शर्तों के उपयोग को कम करता है

इस ऑपरेटर में, सबक्वायरी को पहले हल किया जाता है और फिर उस परिणाम का उपयोग बाहरी क्वेरी को हल करने के लिए किया जाता है।

आईएन ऑपरेटर का सामान्य सिंटैक्स निम्नलिखित है:

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

उदाहरण:

आइए निम्नलिखित ग्राहक तालिका पर विचार करें।

Cust_id Cust_name शहर व्यवसाय
1 हैरी कोलकाता व्यवसाय
2 रॉन मुंबई डॉक्टर
3 एल्बस दिल्ली इंजीनियर
4 डॉबी पुणे वैज्ञानिक
5 स्नेप बैंगलोर विद्यार्थी

प्रश्न:

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

उपरोक्त क्वेरी उन सभी ग्राहकों को वापस कर देगी जो डॉक्टर या वैज्ञानिक या इंजीनियर हैं।

आउटपुट:

Cust_id Cust_name शहर व्यवसाय
2 रॉन मुंबई डॉक्टर
3 एल्बस दिल्ली इंजीनियर
4 डॉबी पुणे वैज्ञानिक

मौजूद ऑपरेटर

EXISTS ऑपरेटर, IN ऑपरेटर के विपरीत, बूलियन मान देता है। यह ऑपरेटर आंतरिक क्वेरी के परिणाम की जांच करता है और एक बूलियन मान लौटाता है, या तो सही या गलत। यदि आंतरिक क्वेरी एकल या एकाधिक रिकॉर्ड लौटाती है, तो ऑपरेटर सही लौटाता है अन्यथा कोई रिकॉर्ड नहीं मिलने पर यह गलत लौटाता है।

यह ऑपरेटर भी कुशल है क्योंकि जैसे ही पहली सच्ची घटना का पता चलता है, यह आगे की प्रक्रिया को रोक देता है।

EXISTS ऑपरेटर का सिंटैक्स निम्नलिखित है:

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

उदाहरण:

आइए निम्नलिखित ग्राहक तालिका पर विचार करें।

Cust_id नाम व्यवसाय आयु
101 हैरी इंजीनियर 32
102 रॉन डेवलपर 30
103 डॉबी नेता 28
104 एल्बस वैज्ञानिक 45
105 स्नेप बढ़ई 26
106 अदरक अभिनेता 25
107 शून्य शून्य शून्य

आइए एक और टेबल ऑर्डर पर विचार करें।

Order_id Cust_id Product_name आदेश_तिथि
1 101 लैपटॉप 2021-01-10
2 103 डेस्कटॉप 2021-02-12
3 106 आईफोन 2021-02-15
4 104 मोबाइल 2021-03-05
5 102 टीवी 2021-03-20

प्रश्न:

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

उपरोक्त प्रश्न उन सभी ग्राहकों का नाम और व्यवसाय लौटाएगा जिन्होंने कम से कम एक आदेश दिया है।

आउटपुट:

नाम व्यवसाय
हैरी इंजीनियर
रॉन डेवलपर
डॉबी नेता
एल्बस वैज्ञानिक
अदरक अभिनेता

IN और EXISTS ऑपरेटर के बीच अंतर तालिका

IN ऑपरेटर और EXISTS ऑपरेटर के बीच मुख्य अंतर नीचे सारणीबद्ध तरीके से सूचीबद्ध हैं:

IN ऑपरेटर मौजूद ऑपरेटर
यह OR शर्तों के उपयोग को कम करता है। यह आंतरिक क्वेरी में एक रिकॉर्ड के अस्तित्व की जाँच करता है।
यह बाहरी क्वेरी के मान के साथ आंतरिक क्वेरी के मानों की तुलना करता है। यह आंतरिक क्वेरी और उप क्वेरी के बीच के मानों की तुलना नहीं करता है।
यह IN खंड के ब्लॉक के अंदर सभी मानों की जाँच करता है। पहली सही शर्त पूरी होते ही यह किसी भी आगे के निष्पादन को रोक देता है।
यह TRUE, FALSE या NULL लौटा सकता है। यह या तो TRUE या FALSE लौटाता है।
इसका उपयोग NULL मानों की जांच के लिए किया जा सकता है। इसका उपयोग NULL मानों की जांच के लिए नहीं किया जा सकता है।
इसका उपयोग सबक्वेरी और वैल्यू दोनों के साथ किया जाता है। इसका उपयोग केवल सबक्वेरी के साथ किया जाता है।
आंतरिक क्वेरी का परिणाम कम होने पर निष्पादन तेज होता है। आंतरिक क्वेरी का परिणाम बड़ा होने पर भी निष्पादन तेज होता है। यह IN ऑपरेटर से अधिक कुशल है।
वाक्यविन्यास :table_name से column_names चुनें जहां column_name IN (सबक्वेरी); सिंटैक्स :चुनें column_namesFROM table_nameWHERE [NOT] EXISTS (सबक्वेरी);

निष्कर्ष:

इस विषय में, IN ऑपरेटर और SQL के EXISTS ऑपरेटरों के बीच तुलना की गई है। दोनों ऑपरेटर एक ही ऑपरेशन करते हैं लेकिन उनकी आंतरिक कार्यप्रणाली अलग होती है। उनके पास अलग-अलग तार्किक कार्य हैं। उनमें से किसी एक को आवश्यकता के अनुसार चुना जा सकता है। लेकिन, यदि डेटा का सेट बड़ा है, तो हमेशा 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. पीएल/एसक्यूएल ट्यूटोरियल:पीएल/एसक्यूएल के बारे में वह सब कुछ जो आपको जानना आवश्यक है

  2. पूर्ण जटिलताएं - भाग 1

  3. जीवन बीमा डेटा मॉडल

  4. एडब्ल्यूएस पर विंडोज़ पर शेयरप्लेक्स के साथ शुरुआत करना, भाग 2

  5. मूल SQL क्वेरी