SQL EXISTS Operator

Subquery-ல் எந்த பதிவும் உள்ளதா என சோதிக்க EXISTS operator பற்றி அறிந்து கொள்ளுங்கள்

SQL EXISTS Operator என்றால் என்ன?

EXISTS operator ஒரு subquery-ல் எந்த பதிவும் உள்ளதா என சோதிக்கப் பயன்படுகிறது.

Subquery ஒன்று அல்லது அதற்கு மேற்பட்ட பதிவுகளை திருப்பித் தந்தால் EXISTS operator TRUE-ஐ தரும்.

EXISTS தொடரியல்

SELECT column_name(s)
FROM table_name
WHERE EXISTS
(SELECT column_name FROM table_name WHERE condition);

ஆர்ப்பாட்ட தரவுத்தளம்

Northwind மாதிரி தரவுத்தளத்தில் "Products" அட்டவணையில் இருந்து ஒரு தேர்வு கீழே உள்ளது:

Products அட்டவணை

+-----------+------------------------------+------------+------------+-----------------------+-------+
| ProductID | ProductName                  | SupplierID | CategoryID | Unit                  | Price |
+-----------+------------------------------+------------+------------+-----------------------+-------+
| 1         | Chais                        | 1          | 1          | 10 boxes x 20 bags    | 18    |
| 2         | Chang                        | 1          | 1          | 24 - 12 oz bottles    | 19    |
| 3         | Aniseed Syrup                | 1          | 2          | 12 - 550 ml bottles   | 10    |
| 4         | Chef Anton's Cajun Seasoning | 2          | 2          | 48 - 6 oz jars        | 22    |
| 5         | Chef Anton's Gumbo Mix       | 2          | 2          | 36 boxes              | 21.35 |
+-----------+------------------------------+------------+------------+-----------------------+-------+

மற்றும் "Suppliers" அட்டவணையில் இருந்து ஒரு தேர்வு:

Suppliers அட்டவணை

+------------+-----------------------------+-------------------+---------------------+-------------+------------+---------+
| SupplierID | SupplierName                | ContactName       | Address             | City         | PostalCode | Country |
+------------+-----------------------------+-------------------+---------------------+-------------+------------+---------+
| 1          | Exotic Liquid               | Charlotte Cooper  | 49 Gilbert St.      | London       | EC1 4SD    | UK      |
| 2          | New Orleans Cajun Delights  | Shelley Burke     | P.O. Box 78934      | New Orleans  | 70117      | USA     |
| 3          | Grandma Kelly's Homestead   | Regina Murphy     | 707 Oxford Rd.      | Ann Arbor    | 48104      | USA     |
| 4          | Tokyo Traders               | Yoshi Nagase      | 9-8 Sekimai...      | Tokyo        | 100        | Japan   |
+------------+-----------------------------+-------------------+---------------------+-------------+------------+---------+

SQL EXISTS உதாரணங்கள்

பின்வரும் SQL statement TRUE-ஐ திருப்பித் தந்து, தயாரிப்பு விலை 20-க்கும் குறைவாக உள்ள சப்ளையர்களை பட்டியலிடுகிறது:

உதாரணம்

SELECT SupplierName
FROM Suppliers
WHERE EXISTS (SELECT ProductName FROM Products 
WHERE Products.SupplierID = Suppliers.supplierID AND Price < 20);

முடிவு

SupplierName
Exotic Liquid
New Orleans Cajun Delights

பின்வரும் SQL statement TRUE-ஐ திருப்பித் தந்து, தயாரிப்பு விலை 22-க்கு சமமாக உள்ள சப்ளையர்களை பட்டியலிடுகிறது:

உதாரணம்

SELECT SupplierName
FROM Suppliers
WHERE EXISTS (SELECT ProductName FROM Products 
WHERE Products.SupplierID = Suppliers.supplierID AND Price = 22);

முடிவு

SupplierName
New Orleans Cajun Delights

EXISTS எவ்வாறு வேலை செய்கிறது

1

முதன்மை Query தொடங்குகிறது

Suppliers அட்டவணையில் இருந்து ஒவ்வொரு வரிசையும் பார்க்கப்படுகிறது

SELECT SupplierName FROM Suppliers
2

Subquery இயக்கப்படுகிறது

ஒவ்வொரு Supplier-க்கும் Products அட்டவணையில் பொருந்தக்கூடிய பதிவுகள் சோதிக்கப்படுகின்றன

WHERE EXISTS (SELECT ... WHERE Products.SupplierID = Suppliers.supplierID)
3

முடிவு மதிப்பீடு செய்யப்படுகிறது

Subquery ஒன்று அல்லது அதற்கு மேற்பட்ட வரிசைகளை திருப்பித் தந்தால் EXISTS TRUE-ஐ தரும்

✓ Subquery வரிசைகளை தரும் → TRUE
✗ Subquery வரிசைகளை தராது → FALSE
4

இறுதி முடிவு

TRUE-ஐ தந்த Suppliers மட்டும் இறுதி முடிவில் சேர்க்கப்படுகின்றன

SupplierName மட்டும் திருப்பித் தரப்படும்

EXISTS vs IN ஒப்பீடு

EXISTS Operator

  • boolean மதிப்பை தரும் (TRUE/FALSE)
  • Subquery முடிவுகளின் இருப்பை சோதிக்கிறது
  • முதல் பொருந்தும் பதிவைக் கண்டுபிடித்தவுடன் நிறுத்துகிறது
  • பெரிய தரவுத்தளங்களுக்கு மேலும் திறமையானது
  • Correlated subqueries-உடன் நன்றாக வேலை செய்கிறது
SELECT name
FROM customers c
WHERE EXISTS (
    SELECT 1 
    FROM orders o 
    WHERE o.customer_id = c.id
);

IN Operator

  • மதிப்புகளின் பட்டியலை சோதிக்கிறது
  • மதிப்பு பட்டியலில் உள்ளதா என சோதிக்கிறது
  • அனைத்து முடிவுகளையும் மதிப்பீடு செய்கிறது
  • சிறிய மதிப்புப் பட்டியல்களுக்கு ஏற்றது
  • Static value lists-உடன் நன்றாக வேலை செய்கிறது
SELECT name
FROM customers
WHERE id IN (
    SELECT customer_id 
    FROM orders
);

நடைமுறை உதாரணங்கள்

ஆர்டர் இடுத்த வாடிக்கையாளர்கள்

குறைந்தது ஒரு ஆர்டர் இடுத்துள்ள வாடிக்கையாளர்களைக் கண்டறிய

SELECT CustomerName
FROM Customers c
WHERE EXISTS (
    SELECT 1 
    FROM Orders o 
    WHERE o.CustomerID = c.CustomerID
);

தயாரிப்புகள் விற்கப்பட்ட சப்ளையர்கள்

குறைந்தது ஒரு தயாரிப்பை விற்ற சப்ளையர்களைக் கண்டறிய

SELECT SupplierName
FROM Suppliers s
WHERE EXISTS (
    SELECT 1 
    FROM Products p 
    WHERE p.SupplierID = s.SupplierID
    AND p.UnitsInStock > 0
);

பணியாளர் சேமிப்புகள்

குறைந்தது ஒரு சேமிப்பைக் கொண்ட பணியாளர்களைக் கண்டறிய

SELECT EmployeeName
FROM Employees e
WHERE EXISTS (
    SELECT 1 
    FROM Territories t 
    WHERE t.EmployeeID = e.EmployeeID
);

NOT EXISTS Operator

NOT EXISTS operator EXISTS-ன் எதிர்மறையாகும். Subquery பதிவுகளை திருப்பித் தராதபோது TRUE-ஐ தரும்.

NOT EXISTS உதாரணம்

SELECT SupplierName
FROM Suppliers
WHERE NOT EXISTS (SELECT ProductName FROM Products 
WHERE Products.SupplierID = Suppliers.supplierID);

முடிவு

SupplierName
Grandma Kelly's Homestead
Tokyo Traders

பயன்பாடு:

NOT EXISTS மூலம் எந்த தயாரிப்புகளும் இல்லாத சப்ளையர்களைக் கண்டறியலாம். இது "missing records" கண்டறிய பயனுள்ளதாக இருக்கும்.

செயல்திறன் நன்மைகள்

முதல் பொருந்தும் பதிவில் நிறுத்துகிறது

EXISTS முதல் பொருந்தும் பதிவைக் கண்டுபிடித்தவுடன் subquery-ன் செயல்பாட்டை நிறுத்துகிறது

குறைந்த மெமரி பயன்பாடு

முழு முடிவு தொகுப்பை சேமிக்க தேவையில்லை, boolean மதிப்பு மட்டுமே தேவை

திறமையான குறியீட்டு பயன்பாடு

EXISTS correlated subqueries-ல் indexes-ஐ திறமையாகப் பயன்படுத்தும்

பயிற்சி

SQL EXISTS operator என்ன செய்கிறது?

ஒரு subquery ஒன்று அல்லது அதற்கு மேற்பட்ட பதிவுகளை திருப்பித் தருகிறதா என சோதிக்கிறது
✓ சரி! EXISTS operator ஒரு subquery பதிவுகளை திருப்பித் தருகிறதா என சோதிக்கிறது மற்றும் boolean மதிப்பை தரும்
பல queries-ன் முடிவுகளை இணைக்கிறது
✗ தவறு! இது UNION operator-ன் வேலை
பொதுவான நெடுவரிசையின் அடிப்படையில் இரண்டு அட்டவணைகளை இணைக்கிறது
✗ தவறு! இது JOIN-ன் வேலை
ஒரு நிபந்தனையின் அடிப்படையில் வரிசைகளை வடிகட்டுகிறது
✗ தவறு! இது WHERE clause-ன் வேலை, EXISTS ஒரு special conditional operator