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

शुरुआती के लिए एसक्यूएल नहीं ऑपरेटर

SQL में, NOT ऑपरेटर एक बूलियन इनपुट को अस्वीकार करता है (यह किसी भी बूलियन अभिव्यक्ति के मूल्य को उलट देता है)। इसलिए यह TRUE returns लौटाता है जब व्यंजक FALSE हो .

स्रोत तालिका

इस पृष्ठ पर उदाहरणों के लिए निम्न तालिका का उपयोग किया गया है।

SELECT * FROM Pets;

परिणाम:

+---------+-------------+-----------+-----------+------------+
| PetId   | PetTypeId   | OwnerId   | PetName   | DOB        |
|---------+-------------+-----------+-----------+------------|
| 1       | 2           | 3         | Fluffy    | 2020-11-20 |
| 2       | 3           | 3         | Fetch     | 2019-08-16 |
| 3       | 2           | 2         | Scratch   | 2018-10-01 |
| 4       | 3           | 3         | Wag       | 2020-03-15 |
| 5       | 1           | 1         | Tweet     | 2020-11-28 |
| 6       | 3           | 4         | Fluffy    | 2020-09-17 |
| 7       | 3           | 2         | Bark      | NULL       |
| 8       | 2           | 4         | Meow      | NULL       |
+---------+-------------+-----------+-----------+------------+
(8 rows affected)

उदाहरण 1

NOT को प्रदर्शित करने के लिए यहां एक सरल उदाहरण दिया गया है ऑपरेटर।

SELECT * FROM Pets 
WHERE PetName NOT LIKE 'F%';

परिणाम:

+---------+-------------+-----------+-----------+------------+
| PetId   | PetTypeId   | OwnerId   | PetName   | DOB        |
|---------+-------------+-----------+-----------+------------|
| 3       | 2           | 2         | Scratch   | 2018-10-01 |
| 4       | 3           | 3         | Wag       | 2020-03-15 |
| 5       | 1           | 1         | Tweet     | 2020-11-28 |
| 7       | 3           | 2         | Bark      | NULL       |
| 8       | 2           | 4         | Meow      | NULL       |
+---------+-------------+-----------+-----------+------------+

इस मामले में, हमने NOT . का इस्तेमाल किया ऑपरेटर LIKE . के परिणाम को नकारने के लिए ऑपरेटर। हमारी क्वेरी उन सभी पालतू जानवरों को लौटाती है जो F अक्षर से शुरू नहीं होते हैं।

उदाहरण 2 - तुलना ऑपरेटरों के साथ NOT का उपयोग करना

यदि आप NOT . का उपयोग कर रहे हैं तुलना ऑपरेटर को नकारने के लिए, आपको अपने सिंटैक्स को पिछले उदाहरण में उपयोग किए गए सिंटैक्स से थोड़ा संशोधित करना होगा।

उदाहरण के लिए, यदि आप इसका उपयोग बराबर ऑपरेटर को नकारने के लिए करना चाहते हैं (= ), निम्नलिखित सिंटैक्स का उपयोग करें:

SELECT * FROM Pets 
WHERE NOT PetName = 'Fluffy';

परिणाम:

+---------+-------------+-----------+-----------+------------+
| PetId   | PetTypeId   | OwnerId   | PetName   | DOB        |
|---------+-------------+-----------+-----------+------------|
| 2       | 3           | 3         | Fetch     | 2019-08-16 |
| 3       | 2           | 2         | Scratch   | 2018-10-01 |
| 4       | 3           | 3         | Wag       | 2020-03-15 |
| 5       | 1           | 1         | Tweet     | 2020-11-28 |
| 7       | 3           | 2         | Bark      | NULL       |
| 8       | 2           | 4         | Meow      | NULL       |
+---------+-------------+-----------+-----------+------------+

यह उन सभी पालतू जानवरों को लौटा देता है जिनका नाम Fluffy नहीं है।

इस उदाहरण में, हम NOT डालते हैं कॉलम नाम के सामने ऑपरेटर। यदि हमने ऐसा नहीं किया होता, तो हमें एक त्रुटि प्राप्त होती जो कुछ इस प्रकार से होती:

SELECT * FROM Pets 
WHERE PetName NOT = 'Fluffy';

परिणाम:

Msg 102, Level 15, State 1, Line 2
Incorrect syntax near '='.

हम ऑपरेटर के बराबर नहीं का उपयोग करके भी वही परिणाम प्राप्त कर सकते थे (या तो <> या != आपके डीबीएमएस के आधार पर)।

उदाहरण के लिए, यह:

SELECT * FROM Pets 
WHERE PetName <> 'Fluffy';

या यह:

SELECT * FROM Pets 
WHERE PetName != 'Fluffy';

उदाहरण 3 - तार्किक ऑपरेटरों के साथ समान सिंटैक्स

जैसा कि यह पता चला है, हम तार्किक ऑपरेटरों का उपयोग करते समय उस वाक्यविन्यास का भी उपयोग कर सकते हैं, जैसे कि LIKE ऑपरेटर जिसे हमने पहले उदाहरण में इस्तेमाल किया था।

इसलिए, हम इसका पहला उदाहरण फिर से लिख सकते हैं:

SELECT * FROM Pets 
WHERE NOT PetName LIKE 'F%';

परिणाम:

+---------+-------------+-----------+-----------+------------+
| PetId   | PetTypeId   | OwnerId   | PetName   | DOB        |
|---------+-------------+-----------+-----------+------------|
| 3       | 2           | 2         | Scratch   | 2018-10-01 |
| 4       | 3           | 3         | Wag       | 2020-03-15 |
| 5       | 1           | 1         | Tweet     | 2020-11-28 |
| 7       | 3           | 2         | Bark      | NULL       |
| 8       | 2           | 4         | Meow      | NULL       |
+---------+-------------+-----------+-----------+------------+

यदि आप सुनिश्चित नहीं हैं कि अंतर क्या है, तो हमने NOT को स्थानांतरित कर दिया है PetName . के बाद से ऑपरेटर कॉलम, इससे पहले।

यहां दो कथन एक साथ दिए गए हैं:

SELECT * FROM Pets 
WHERE PetName NOT LIKE 'F%';

SELECT * FROM Pets 
WHERE NOT PetName LIKE 'F%';

उदाहरण 4 - अनेक शर्तों को नकारना

NOT ऑपरेटर केवल एक शर्त को नकारता है। यदि आपके पास कई शर्तें हैं जिन्हें आपको अस्वीकार करने की आवश्यकता है, तो एक अलग NOT का उपयोग करें प्रत्येक शर्त के लिए ऑपरेटर,

SELECT * FROM Pets 
WHERE NOT PetName = 'Fluffy'
AND NOT PetName = 'Wag';

परिणाम:

+---------+-------------+-----------+-----------+------------+
| PetId   | PetTypeId   | OwnerId   | PetName   | DOB        |
|---------+-------------+-----------+-----------+------------|
| 2       | 3           | 3         | Fetch     | 2019-08-16 |
| 3       | 2           | 2         | Scratch   | 2018-10-01 |
| 5       | 1           | 1         | Tweet     | 2020-11-28 |
| 7       | 3           | 2         | Bark      | NULL       |
| 8       | 2           | 4         | Meow      | NULL       |
+---------+-------------+-----------+-----------+------------+

उदाहरण 5 - वरीयता

मिश्रित स्थितियों का उपयोग करते समय, जहां आपके पास एकाधिक ऑपरेटर हैं, NOT ऑपरेटर का मूल्यांकन किसी भी तार्किक ऑपरेटर से पहले किया जाता है, लेकिन किसी के बाद भी। तुलना ऑपरेटर,

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

यहाँ एक उदाहरण है।

SELECT * FROM Pets 
WHERE 
    NOT PetName = 'Fluffy'
    OR NOT PetName = 'Wag'
    AND NOT DOB > '2020-01-01';

परिणाम:

+---------+-------------+-----------+-----------+------------+
| PetId   | PetTypeId   | OwnerId   | PetName   | DOB        |
|---------+-------------+-----------+-----------+------------|
| 2       | 3           | 3         | Fetch     | 2019-08-16 |
| 3       | 2           | 2         | Scratch   | 2018-10-01 |
| 4       | 3           | 3         | Wag       | 2020-03-15 |
| 5       | 1           | 1         | Tweet     | 2020-11-28 |
| 7       | 3           | 2         | Bark      | NULL       |
| 8       | 2           | 4         | Meow      | NULL       |
+---------+-------------+-----------+-----------+------------+

हमने यहां किसी भी कोष्ठक का उपयोग नहीं किया, और NOT के साथ सभी शर्तों को नकार दिया गया ऑपरेटर, और इसलिए AND ऑपरेटर ने OR . पर वरीयता ली ऑपरेटर।

हालांकि, हम यह निर्दिष्ट करने के लिए कोष्ठक का उपयोग कर सकते हैं कि OR स्थिति का मूल्यांकन AND . से पहले किया जाना चाहिए हालत।

SELECT * FROM Pets 
WHERE 
    (NOT PetName = 'Fluffy'
    OR NOT PetName = 'Wag')
    AND NOT DOB > '2020-01-01';

परिणाम:

+---------+-------------+-----------+-----------+------------+
| PetId   | PetTypeId   | OwnerId   | PetName   | DOB        |
|---------+-------------+-----------+-----------+------------|
| 2       | 3           | 3         | Fetch     | 2019-08-16 |
| 3       | 2           | 2         | Scratch   | 2018-10-01 |
+---------+-------------+-----------+-----------+------------+

इस मामले में हमें एक अलग परिणाम मिलता है।

उदाहरण 6 - ऑपरेटर के बीच नेगेट करें

यहां एक और उदाहरण दिया गया है, इस बार NOT . का उपयोग करते हुए ऑपरेटर BETWEEN . के परिणाम को नकारने के लिए ऑपरेटर।

SELECT * FROM Pets 
WHERE DOB NOT BETWEEN '2018-10-01' AND '2020-09-17';

परिणाम:

+---------+-------------+-----------+-----------+------------+
| PetId   | PetTypeId   | OwnerId   | PetName   | DOB        |
|---------+-------------+-----------+-----------+------------|
| 1       | 2           | 3         | Fluffy    | 2020-11-20 |
| 5       | 1           | 1         | Tweet     | 2020-11-28 |
+---------+-------------+-----------+-----------+------------+

इस उदाहरण में, हमने उन सभी पंक्तियों को लौटा दिया जहां DOB कॉलम नहीं है 2018-10-01 . के बीच और 2020-09-17 .

इस मामले में, दो पंक्तियाँ उस मानदंड से मेल खाती थीं, और इसलिए, दो पंक्तियाँ वापस कर दी गईं।

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

SELECT * FROM Pets 
WHERE DOB BETWEEN '2018-10-01' AND '2020-09-17';

परिणाम:

+---------+-------------+-----------+-----------+------------+
| PetId   | PetTypeId   | OwnerId   | PetName   | DOB        |
|---------+-------------+-----------+-----------+------------|
| 2       | 3           | 3         | Fetch     | 2019-08-16 |
| 3       | 2           | 2         | Scratch   | 2018-10-01 |
| 4       | 3           | 3         | Wag       | 2020-03-15 |
| 6       | 3           | 4         | Fluffy    | 2020-09-17 |
+---------+-------------+-----------+-----------+------------+

इस उदाहरण में, हमने उन सभी पंक्तियों को लौटा दिया जहां DOB कॉलम है 2018-10-01 . के बीच और 2020-09-17 .

इस मामले में, चार पंक्तियाँ उस मानदंड से मेल खाती थीं, और इसलिए, चार पंक्तियाँ वापस कर दी गईं।


  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. शुरुआती के लिए SQL ALTER TABLE

  3. दो विभाजन विशिष्टताओं

  4. टेबल एक्सप्रेशन के मूल तत्व, भाग 7 - सीटीई, अनुकूलन विचार

  5. हुआवेई गॉसडीबी