SQL उपनाम SQL की एक अच्छी छोटी विशेषता है जो आपको अधिक संक्षिप्त कोड लिखने और कॉलम नाम बनाने की अनुमति देता है जब कोई कॉलम नाम मौजूद नहीं होता है।
दो SQL उपनाम प्रकार हैं; स्तंभ उपनाम, और तालिका उपनाम। इस लेख में, मैं दोनों का अवलोकन प्रदान करता हूं।
SQL में उपनाम क्या है?
SQL में, एक उपनाम एक विशेषता है जो हमें अस्थायी रूप से हमारे SQL प्रश्नों में एक कॉलम या तालिका के लिए एक अलग नाम निर्दिष्ट करने की अनुमति देता है। यह हमें हमारे प्रश्नों में कोड की मात्रा को कम करने की अनुमति देता है, जो जटिल प्रश्नों में विशेष रूप से फायदेमंद हो सकता है।
यह हमें उन क्लाइंट एप्लिकेशन को कॉलम नाम प्रदान करने की भी अनुमति देता है जहां कोई कॉलम नाम मौजूद नहीं है (उदाहरण के लिए, परिकलित फ़ील्ड का उपयोग करते समय)।
एसक्यूएल उपनामों के लाभ
SQL उपनाम के कुछ मुख्य लाभों में शामिल हैं:
- परिणामों में प्रस्तुत किए जाने पर आपको कॉलम हेडर को अधिक पठनीय नाम प्रदान करने की अनुमति देता है
- क्लाइंट एप्लिकेशन को उस नाम से परिकलित फ़ील्ड को संदर्भित करने की अनुमति देता है जहां कोई कॉलम नाम मौजूद नहीं है
- आपको कोड कम करने और अपने प्रश्नों को अधिक संक्षिप्त बनाने की अनुमति देता है
- किसी क्वेरी के अंतर्निहित कॉलम के नामों की सुरक्षा के लिए एक अस्पष्ट तकनीक के रूप में इस्तेमाल किया जा सकता है
मुझे यह बताना चाहिए कि उपनाम निर्दिष्ट करना वास्तव में स्तंभ या तालिका का नाम नहीं बदलता है। यह केवल एक वैकल्पिक नाम प्रदान करता है जिसका उपयोग इसे संदर्भित करने के लिए किया जा सकता है।
उपनाम सिंटैक्स
एसक्यूएल में उपनाम बनाने के लिए, बस अपने चुने हुए उपनाम के साथ कॉलम या टेबल नाम का पालन करें। आप वैकल्पिक रूप से AS
. का उपयोग कर सकते हैं कॉलम/टेबल नाम और आपके उपनाम के बीच कीवर्ड।
कॉलम के लिए इस तरह:
SELECT Column1 AS Alias1
...
or
SELECT Column1 Alias1
...
या टेबल के लिए इसे पसंद करें:
...
FROM Table1 AS Alias1
...
or
...
FROM Table1 Alias1
...
निम्नलिखित उदाहरण इसे बेहतर ढंग से स्पष्ट करेंगे।
द कॉलम एलियास
संभवतः सबसे अधिक इस्तेमाल किया जाने वाला उपनाम कॉलम उपनाम है। कॉलम उपनाम आपको अपने कॉलम के लिए एक अस्थायी नाम प्रदान करने की अनुमति देता है।
यह आपको उन जगहों पर कॉलम नाम प्रदान करने की भी अनुमति देता है जहां कोई कॉलम नाम मौजूद नहीं है।
निम्नलिखित दो उदाहरण स्तंभ उपनामों के साथ और उनके बिना लिखी गई समान क्वेरी दिखाते हैं।
स्तंभ उपनाम के बिना
यहां एक साधारण SQL क्वेरी है जो नहीं है स्तंभ उपनामों का उपयोग करें।
SELECT
f_name,
l_name
FROM customers;
परिणाम:
+----------+----------+ | f_name | l_name | |----------+----------| | Homer | Connery | | Bart | Pitt | | Nancy | Simpson | | Boris | Trump | +----------+----------+
इस मामले में, मैंने कोई कॉलम उपनाम प्रदान नहीं किया था, और इसलिए वास्तविक अंतर्निहित कॉलम नाम परिणामों में कॉलम हेडर के रूप में प्रस्तुत किए गए थे।
कॉलम उपनाम के साथ
यहाँ वही प्रश्न है, इस समय को छोड़कर मैं स्तंभ उपनामों का उपयोग करता हूँ।
SELECT
f_name AS FirstName,
l_name AS LastName
FROM customers;
परिणाम:
+-------------+------------+ | FirstName | LastName | |-------------+------------| | Homer | Connery | | Bart | Pitt | | Nancy | Simpson | | Boris | Trump | +-------------+------------+
ध्यान दें कि परिणामों में स्तंभ उपनामों का उपयोग स्तंभ शीर्षलेखों के रूप में किया गया था।
कैल्कुलेटेड फ़ील्ड पर कॉलम एलियास
कॉलम उपनाम का उपयोग उन परिकलित फ़ील्ड पर भी किया जा सकता है जहाँ कोई स्तंभ नाम मौजूद नहीं है। मेरा मतलब कंप्यूटेड कॉलम से नहीं है, जहां कॉलम का नाम है, लेकिन उन फ़ील्ड्स पर जहां वैल्यू एक साधारण कॉलम के वैल्यू के अलावा किसी अन्य एक्सप्रेशन से ली गई है।
"कोई कॉलम नाम कैसे हो सकता है?" आप पूछ सकते हैं।
ठीक है, ऐसे कई अवसर हैं जहाँ आप पा सकते हैं कि किसी क्वेरी में कोई कॉलम नाम वापस नहीं किया जा रहा है। क्या आपने कभी देखा है (No column name)
आपके क्वेरी परिणामों के कॉलम हेडर के रूप में?
ऐसी कई स्थितियां हैं जहां ऐसा हो सकता है।
बिना किसी कॉलम के उपनाम
यहां एक क्वेरी का उदाहरण दिया गया है जो कॉलम हेडर नहीं लौटाती है।
SELECT
f_name + ' ' + l_name
FROM customers;
परिणाम:
+--------------------+ | (No column name) | |--------------------| | Homer Connery | | Bart Pitt | | Nancy Simpson | | Boris Trump | +--------------------+
यह उदाहरण प्रत्येक ग्राहक के पहले नाम और अंतिम नाम को जोड़ता है और परिणाम को एक कॉलम के रूप में प्रस्तुत करता है। केवल समस्या यह है कि DBMS को नहीं पता कि कॉलम को क्या कहा जाए।
उपनाम के लिए यह एक उत्तम अवसर है!
कॉलम उपनाम के साथ
यहाँ वही उदाहरण है, सिवाय इसके कि मैं अब परिणाम के लिए एक कॉलम उपनाम निर्दिष्ट करता हूँ।
SELECT
f_name + ' ' + l_name AS FullName
FROM customers;
परिणाम:
+---------------+ | FullName | |---------------| | Homer Connery | | Bart Pitt | | Nancy Simpson | | Boris Trump | +---------------+
इसके बारे में अच्छी बात यह है कि, कोई भी क्लाइंट एप्लिकेशन अब इन परिणामों को ले सकता है और परिकलित फ़ील्ड को इसके उपनाम से संदर्भित कर सकता है।
ध्यान दें कि उपरोक्त उदाहरण SQL सर्वर स्ट्रिंग कॉन्सटेनेशन ऑपरेटर का उपयोग करता है (+
) DB2, Oracle, PostgreSQL और SQLite में, आपको ||
. का उपयोग करना होगा . और MySQL और MariaDB में, CONCAT()
. का उपयोग करें समारोह। हालांकि इसका SQL उपनामों से कोई लेना-देना नहीं है, मैंने सोचा कि मैं इसका उल्लेख करूंगा 🙂
रिक्त स्थान वाले उपनाम
रिक्त स्थान के साथ उपनाम बनाना भी संभव है।
जब आप ऐसा करते हैं, तो उपनाम को दोहरे उद्धरण चिह्नों से घेर लें। कुछ DBMS में, आप वैकल्पिक रूप से अन्य वर्णों का उपयोग कर सकते हैं (जैसे वर्गाकार कोष्ठक []
SQL सर्वर में)।
SELECT
f_name + ' ' + l_name AS "Full Name"
FROM customers;
परिणाम:
+---------------+ | Full Name | |---------------| | Homer Connery | | Bart Pitt | | Nancy Simpson | | Boris Trump | +---------------+
ध्यान रखें कि उपनामों में रिक्त स्थान रखना आमतौर पर अच्छा अभ्यास नहीं माना जाता है। रिक्त स्थान क्लाइंट अनुप्रयोगों के लिए सभी प्रकार की समस्याएं पैदा कर सकते हैं, और इस कारण से, आपको आमतौर पर अपने कॉलम उपनामों में रिक्त स्थान शामिल करने से बचना चाहिए।
AS
को छोड़ना कीवर्ड
जैसा कि बताया गया है, AS
कीवर्ड वैकल्पिक है। इसलिए, हम AS
. के बिना पिछले किसी भी उदाहरण को फिर से लिख सकते हैं कीवर्ड।
यहाँ एक उदाहरण है।
SELECT
f_name FirstName,
l_name LastName
FROM customers;
परिणाम:
+-------------+------------+ | FirstName | LastName | |-------------+------------| | Homer | Connery | | Bart | Pitt | | Nancy | Simpson | | Boris | Trump | +-------------+------------+
हालांकि आप AS
. को छोड़ सकते हैं कीवर्ड, कुछ SQL पेशेवर पठनीयता कारणों से इसे हमेशा शामिल करना पसंद करते हैं।
आप जिस भी सिंटैक्स का उपयोग करना पसंद करते हैं, मैं उसे सुसंगत रखने की सलाह दूंगा। यदि आप AS
. को छोड़ना चुनते हैं कीवर्ड, फिर इसे हर जगह छोड़ दें। अगर आप इसे शामिल करना चुनते हैं, तो इसे हर जगह शामिल करें।
टेबल एलियास
तालिका उपनाम स्तंभ उपनाम के समान है, लेकिन जैसा कि नाम से पता चलता है, तालिका उपनाम तालिकाओं के लिए है।
तालिका उपनाम को सहसंबंध नाम . के रूप में भी जाना जाता है ।
जॉइन करते समय अक्सर टेबल एलियास का इस्तेमाल किया जाता है। यह जटिल प्रश्नों में विशेष रूप से उपयोगी हो सकता है, क्योंकि यह कोड को अधिक संक्षिप्त और अधिक पठनीय रखने में मदद कर सकता है।
नीचे दो उदाहरण हैं; एक तालिका उपनाम के बिना, और एक तालिका उपनाम के साथ।
तालिका उपनाम के बिना उदाहरण
यहां एक क्वेरी का मूल उदाहरण दिया गया है जो दो तालिकाओं के बीच बाईं ओर जुड़ती है।
SELECT
PetTypes.PetType,
COUNT(Pets.PetTypeId) AS Count
FROM Pets
LEFT JOIN PetTypes
ON Pets.PetTypeId = PetTypes.PetTypeId
GROUP BY PetTypes.PetType
ORDER BY Count DESC, PetTypes.PetType;
परिणाम:
+-----------+---------+ | PetType | Count | |-----------+---------| | Dog | 4 | | Cat | 3 | | Bird | 1 | +-----------+---------+
ध्यान दें कि जब भी हमें इसका संदर्भ देने की आवश्यकता होती है, हम प्रत्येक तालिका का नाम बताते हैं।
तालिका उपनाम के साथ उदाहरण
तालिका उपनामों को छोड़कर, यहां वही उदाहरण दिया गया है।
SELECT
pt.PetType,
COUNT(p.PetTypeId) AS Count
FROM Pets AS p
LEFT JOIN PetTypes AS pt
ON p.PetTypeId = pt.PetTypeId
GROUP BY pt.PetType
ORDER BY Count DESC, pt.PetType;
परिणाम:
+-----------+---------+ | PetType | Count | |-----------+---------| | Dog | 4 | | Cat | 3 | | Bird | 1 | +-----------+---------+
स्तंभ उपनामों की तरह, AS
तालिका उपनामों के साथ कीवर्ड वैकल्पिक है। Oracle में, AS
कीवर्ड तालिका उपनामों के साथ भी समर्थित नहीं है (हालाँकि यह स्तंभ उपनामों के साथ समर्थित है)।
इसलिए, हम अपना उदाहरण निम्नलिखित को फिर से लिख सकते हैं।
SELECT
pt.PetType,
COUNT(p.PetTypeId) AS Count
FROM Pets p
LEFT JOIN PetTypes pt
ON p.PetTypeId = pt.PetTypeId
GROUP BY pt.PetType
ORDER BY Count DESC, pt.PetType;
परिणाम:
+-----------+---------+ | PetType | Count | |-----------+---------| | Dog | 4 | | Cat | 3 | | Bird | 1 | +-----------+---------+
किसी भी तरह, वही परिणाम।