3.1 मूल्यों की तुलना: <,>, =, <>

SQL क्वेरी लिखते समय उपयोग किए जाने वाले सबसे सामान्य कीवर्ड में से एक WHERE. यह इसकी मदद से है कि हम MySQL को बताते हैं कि हम किस तालिका पंक्ति को फ़िल्टर (चयन) करना चाहते हैं।

कीवर्ड के बाद WHEREआप बहुत जटिल और पेचीदा कंडीशंस लिख सकते हैं। तो इस स्थिति में कौन से ऑपरेशन हो सकते हैं?

ऑपरेटर विवरण उदाहरण
< कम वेतन <40000
> अधिक वेतन> 100000
<= कम या बराबर उम्र <= 25
>= अधिक या बराबर उम्र >= 18
= बराबर पेशा = 'प्रोग्रामर'
<>,! = सम नही वर्ष (जॉइन_डेट)! = 2015

जावा भाषा के विपरीत, सख्त समानता के लिए, यहाँ एक बराबर वर्ण का उपयोग किया जाता है, न कि दो

यदि आप यह जांचना चाहते हैं कि मान समान नहीं हैं, तो यह दो तरीकों से किया जा सकता है: <>या तो !=पहला दृष्टिकोण पास्कल जैसी भाषाओं में उपयोग किया जाता है, दूसरा C ++ जैसी भाषाओं के लिए विशिष्ट है। और जावा।

एसक्यूएल में असाइनमेंट के लिए, इसे :=पास्कल के रूप में प्रयोग किया जाता है, लेकिन असाइनमेंट का उपयोग बहुत ही कम होता है।

आइए एक प्रश्न लिखें जहां हम उन सभी कर्मचारियों को प्रदर्शित करते हैं जिन्हें 2015 में काम पर नहीं रखा गया था।


SELECT * FROM employee WHERE YEAR(join_date) != 2015
        

और हमें निम्न क्वेरी परिणाम मिलता है:

पहचान नाम पेशा वेतन आयु शामिल होने की तारीख
1 इवानोव इवान प्रोग्रामर 100,000 25 2012-06-30
2 पेट्रोव पेट्र प्रोग्रामर 80,000 23 2013-08-12
3 इवानोव सर्गेई टेस्टर 40,000 तीस 2014-01-01
6 वास्का बिल्ली 1,000 3 2018-01-01

3.2 तार्किक संचालन और, या, नहीं

WHEREआप तार्किक संचालन का भी उपयोग कर सकते हैं AND, ORऔर NOT। और वे ठीक वैसे ही लिखे गए हैं जैसे मैंने उन्हें यहाँ वर्णित किया है। कोई नहीं &&, ||या!

चलिए एक SQL क्वेरी लिखते हैं जहां हम उन कर्मचारियों का चयन करते हैं जो 20 वर्ष से अधिक उम्र के हैं और 50K से कम वेतन प्राप्त करते हैं।


SELECT * FROM employee WHERE age > 20 AND salary < 50000
        

और हमें निम्न क्वेरी परिणाम मिलता है:

पहचान नाम पेशा वेतन आयु शामिल होने की तारीख
3 इवानोव सर्गेई टेस्टर 40,000 तीस 2014-01-01
5 किरिंको अनास्तासिया कार्यालय प्रबंधक 40,000 25 2015-10-10

बहुत आसान। आइए एक प्रश्न लिखें जहां हम उन कर्मचारियों का चयन करते हैं जो 100K से अधिक प्राप्त करते हैं और निदेशक के रूप में काम नहीं करते हैं:


SELECT * FROM employee WHERE salary >= 100000 AND NOT occupation = 'Director'
        

यहां हमने प्रतीक के बजाय विशेष रूप से !=ऑपरेटर का उपयोग किया NOT

और हमें निम्न क्वेरी परिणाम मिलता है:

पहचान नाम पेशा वेतन आयु शामिल होने की तारीख
1 इवानोव इवान प्रोग्रामर 100,000 25 2012-06-30

3.3 के बीच: मूल्य श्रेणी

एसक्यूएल में भी एक विशेष ऑपरेटर है BETWEENजिसके साथ आप जांच सकते हैं कि एक चर दो मानों के बीच है या नहीं। इस ऑपरेटर का उपयोग बूलियन एक्सप्रेशन के अंदर किया जाता है। ऐसे ऑपरेटर का सामान्य रूप है:


variable BETWEEN bottom line AND top_bound
        

इस मामले में, जावा भाषा के विपरीत, निचली और ऊपरी दोनों सीमाएँ अनुमत अंतराल में शामिल हैं।

आइए एक उदाहरण लिखते हैं जहां हम 40K से 100K तक वेतन वाले सभी कर्मचारियों का चयन करते हैं। अनुरोध ऐसा दिखेगा:

SELECT * FROM employee WHERE salary BETWEEN 40000 AND 100000

और हमें निम्न क्वेरी परिणाम मिलता है:

पहचान नाम पेशा वेतन आयु शामिल होने की तारीख
1 इवानोव इवान प्रोग्रामर 100,000 25 2012-06-30
2 पेट्रोव पेट्र प्रोग्रामर 80,000 23 2013-08-12
3 इवानोव सर्गेई टेस्टर 40,000 तीस 2014-01-01
5 किरिंको अनास्तासिया कार्यालय प्रबंधक 40,000 25 2015-10-10

ऑपरेटर BETWEENन केवल संख्यात्मक प्रकारों का समर्थन करता है, बल्कि दिनांक और यहां तक ​​कि स्ट्रिंग प्रकारों का भी समर्थन करता है । स्ट्रिंग्स के साथ काम करने के मामले में, लेक्सिकोग्राफिक ऑर्डर का उपयोग किया जाता है: आबा आब से पहले आता है

3.4 इन: मूल्यों की सूची

इसके अलावा, एसक्यूएल के पास एक विशेष ऑपरेटर है INजिसके साथ आप यह जांच सकते हैं कि निर्दिष्ट सूची में एक चर शामिल है या नहीं। इस ऑपरेटर का उपयोग बूलियन एक्सप्रेशन के अंदर किया जाता है। ऐसे ऑपरेटर का सामान्य रूप है:

variable IN (value 1 , value 2 , ... value N)

आइए एक प्रश्न लिखें जिसमें हम उन कर्मचारियों का चयन करते हैं जो 20, 25 या 30 वर्ष के हैं। अनुरोध ऐसा दिखेगा:

SELECT * FROM employee WHERE age IN (20, 25, 30)

और हमें निम्न क्वेरी परिणाम मिलता है:

पहचान नाम पेशा वेतन आयु शामिल होने की तारीख
1 इवानोव इवान प्रोग्रामर 100,000 25 2012-06-30
3 इवानोव सर्गेई टेस्टर 40,000 तीस 2014-01-01
5 किरिंको अनास्तासिया कार्यालय प्रबंधक 40,000 25 2015-10-10

और अब एक प्रश्न लिखते हैं, जहाँ, इसके विपरीत, हम ऐसे कर्मचारियों का चयन करते हैं जिनकी आयु not20, 25 या 30 है। क्वेरी इस तरह दिखेगी:

SELECT * FROM employee WHERE age NOT IN (20, 25, 30)

और हमें निम्न क्वेरी परिणाम मिलता है:

पहचान नाम पेशा वेतन आयु शामिल होने की तारीख
2 पेट्रोव पेट्र प्रोग्रामर 80,000 23 2013-08-12
4 राबिनोविच मोइशा निदेशक 200,000 35 2015-05-12
6 वास्का बिल्ली 1,000 3 2018-01-01

सब कुछ उम्मीद के मुताबिक काम किया। सुंदरता।

3.5 पसंद: स्ट्रिंग पैटर्न

और अंत में, एक और महत्वपूर्ण और अक्सर इस्तेमाल किया जाने वाला ऑपरेटर - LIKE. स्ट्रिंग्स की तुलना करते समय इसका उपयोग किया जाता है। इसका उपयोग स्ट्रिंग पैटर्न सेट करने के लिए किया जा सकता है। इस ऑपरेटर का उपयोग बूलियन एक्सप्रेशन के अंदर किया जाता है। ऐसे ऑपरेटर का सामान्य रूप है:

variable LIKE 'sample'

पैटर्न में विशेष वर्णों का उपयोग किया जा सकता है: %और _

  • अंडरस्कोर का अर्थ है कोई भी वर्ण, हमेशा 1 पीसी।
  • प्रतिशत का अर्थ है कोई भी वर्ण और कितनी भी बार (0 बार सहित)।

आइए एक प्रश्न लिखें जो उन सभी लोगों का चयन करेगा जिनका अंतिम नाम "I" अक्षर से शुरू होता है। अनुरोध ऐसा दिखेगा:

SELECT * FROM employee WHERE name LIKE 'I%'

और हमें निम्न क्वेरी परिणाम मिलता है:

पहचान नाम पेशा वेतन आयु शामिल होने की तारीख
1 इवानोव इवान प्रोग्रामर 100,000 25 2012-06-30
3 इवानोव सर्गेई टेस्टर 40,000 तीस 2014-01-01

अब कार्य को जटिल करते हैं - नाम में "ओ" होना चाहिए और नाम "ए" के साथ समाप्त होना चाहिए। अनुरोध ऐसा दिखेगा:

SELECT * FROM employee WHERE name LIKE '%o%a'

और हमें निम्न क्वेरी परिणाम मिलता है:

पहचान नाम पेशा वेतन आयु शामिल होने की तारीख
4 राबिनोविच मोइशा निदेशक 200,000 35 2015-05-12

ठीक है, इसे थोड़ा और कठिन बनाते हैं। आइए उन सभी कर्मचारियों को फ़िल्टर करें जिनकी आयु संख्या "3" से शुरू होती है। अनुरोध ऐसा दिखेगा:

SELECT * FROM employee WHERE age LIKE '3%'

और हमें निम्न क्वेरी परिणाम मिलता है:

पहचान नाम पेशा वेतन आयु शामिल होने की तारीख
3 इवानोव सर्गेई टेस्टर 40,000 तीस 2014-01-01
4 राबिनोविच मोइशा निदेशक 200,000 35 2015-05-12
6 वास्का बिल्ली 1,000 3 2018-01-01

वैसे, हमारा आयु स्तंभ प्रकार का है int, इसलिए LIKEयह न केवल तार के साथ काम करता है। क्या नहीं बल्कि आनन्दित हो सकता है।