SQL क्वेरी को कैसे फ़ॉर्मेट करें

· 7 मिनट पढ़ने का समय

अव्यवस्थित SQL बग्स पेश करने के सबसे तेज़ तरीकों में से एक है। जब एक क्वेरी बिना इंडेंटेशन के एक लंबी लाइन है, तो यह देखना मुश्किल है कि कौन सी शर्तें किन जॉइन्स पर लागू होती हैं, सबक्वेरी कहाँ शुरू होती हैं और कहाँ समाप्त होती हैं, या लॉजिक सही है या नहीं। ब्राउज़र-आधारित फॉर्मेटर पूरा काम स्थानीय रूप से संभालता है, आपकी क्वेरीज़ को सर्वर पर अपलोड किए बिना।

फॉर्मेटिंग क्यों मायने रखती है

SQL कैसे फॉर्मेट करें

  1. अपना SQL पेस्ट करें: फॉर्मेटर में एक मिनिफाइड या अव्यवस्थित क्वेरी दर्ज करें। यह SELECT, INSERT, UPDATE, DELETE, CREATE TABLE, और सबक्वेरीज़ और जॉइन्स वाली जटिल क्वेरीज़ को संभालता है।
  2. विकल्प कॉन्फ़िगर करें: इंडेंटेशन आकार चुनें और क्या कीवर्ड्स को अपरकेस में करना है। ये सेटिंग्स आपके प्रोजेक्ट की स्टाइल गाइड से मेल खाती हैं।
  3. परिणाम कॉपी करें: फॉर्मेट किया गया SQL आपके संपादक, डेटाबेस क्लाइंट या दस्तावेज़ीकरण में वापस पेस्ट करने के लिए तैयार है।

अच्छी फॉर्मेटिंग कैसी दिखती है

select u.name, o.total from users u join orders o on u.id = o.user_id where o.total > 100 and u.active = 1 order by o.total desc जैसी क्वेरी बन जाती है:

SELECT
  u.name,
  o.total
FROM users u
JOIN orders o
  ON u.id = o.user_id
WHERE o.total > 100
  AND u.active = 1
ORDER BY o.total DESC

प्रत्येक खंड अपनी लाइन पर शुरू होता है। शर्तें उनके मूल खंड के तहत इंडेंट हैं। जॉइन्स और उनकी ON शर्तें स्पष्ट रूप से जोड़ी गई हैं।

SQL फॉर्मेटिंग सम्मेलनों का संक्षिप्त इतिहास

SQL को 1974 में IBM शोधकर्ताओं डोनाल्ड चेम्बरलिन और रेमंड बॉयस द्वारा बनाया गया था, जिसे मूल रूप से SEQUEL (Structured English Query Language) कहा जाता था। मूल नाम में «QL» ने भाषा के अंग्रेजी की तरह पढ़ने के इरादे को दर्शाया। शुरू से ही, इस मानव-पठनीय डिज़ाइन ने एक सम्मेलन का संकेत दिया: अपने खंडों को इंडेंट करें ताकि वे ऊपर से नीचे तक वाक्यों की तरह पढ़े जा सकें।

1980 और 1990 के दशक के अधिकांश समय के लिए, SQL को टेक्स्ट संपादकों में हाथ से लिखा जाता था और फॉर्मेटिंग व्यक्तिगत थी। कुछ दुकानों ने «नदी शैली» (जहाँ प्रत्येक कीवर्ड वर्चुअल कॉलम के दाईं ओर लंबवत रूप से संरेखित होता है) को अपनाया, अन्य ने «मिस्र शैली» (कर्ली-ब्रेस-समान-लाइन समकक्ष) का उपयोग किया, और अधिकांश ने बस वही उपयोग किया जो लेखक को पसंद था।

पहला व्यापक रूप से उपयोग किया जाने वाला SQL फॉर्मेटर Apex SQL Formatter (2000) था, उसके बाद Devart का SQL Complete (2002) और Red Gate का SQL Prompt (2003)। इन उपकरणों ने SQL Server और Oracle डेवलपर्स को IDE-स्तरीय फॉर्मेटिंग लाई। 2010 तक हर प्रमुख IDE (SSMS, DataGrip, DBeaver) में बिल्ट-इन SQL फॉर्मेटिंग थी, और ऑनलाइन फॉर्मेटर एड-हॉक सफाई के लिए मानक बन गए।

2017 में फॉर्मेटर पारिस्थितिकी तंत्र sql-formatter (npm) के साथ बदल गया, एक ओपन-सोर्स JavaScript लाइब्रेरी जो आज इस सहित अधिकांश ब्राउज़र-आधारित SQL फॉर्मेटर्स को पावर करती है। आधुनिक फॉर्मेटर्स बोली अंतर (MySQL बैकटिक्स, PostgreSQL विंडो फ़ंक्शंस, SQL Server स्क्वायर ब्रैकेट्स) को संभालते हैं और सुसंगत, कॉन्फ़िगर करने योग्य आउटपुट का उत्पादन करते हैं।

प्रमुख कंपनियों द्वारा उपयोग की जाने वाली SQL स्टाइल गाइड्स

अधिकांश पेशेवर कोडबेस कई प्रकाशित SQL स्टाइल गाइड्स में से एक का अनुसरण करते हैं:

स्टाइल गाइडउत्पत्तिमुख्य सम्मेलन
Mozilla SQL StyleMozillaअपरकेस कीवर्ड्स, snake_case नाम, 2-स्पेस इंडेंट
GitLab SQL StyleGitLab Data Teamअपरकेस कीवर्ड्स, लोअरकेस नाम, 4-स्पेस इंडेंट, अग्रणी अल्पविराम
Holistics SQL StyleHolisticsअपरकेस कीवर्ड्स, snake_case, 2 स्पेस, अनुगामी अल्पविराम
Simon Holywell SQLव्यक्तिगत/लोकप्रिय«नदी» संरेखण, अपरकेस कीवर्ड्स
dbt SQL Styledbt Labsलोअरकेस कीवर्ड्स (आधुनिक बोली), snake_case, अग्रणी अल्पविराम
PostgreSQL Wiki StylePostgreSQL समुदायलोअरकेस कीवर्ड्स, snake_case, K&R-शैली इंडेंटेशन

यदि आप एक नया प्रोजेक्ट शुरू कर रहे हैं, तो स्थापित गाइड्स में से एक चुनें। यदि आप एक मौजूदा कोडबेस में शामिल हो रहे हैं, तो जो पहले से है उसका अनुसरण करें। एक प्रोजेक्ट के भीतर स्थिरता किसी भी विशिष्ट शैली से अधिक महत्वपूर्ण है।

सामान्य फॉर्मेटिंग विकल्प

बोली अंतर

SQL फॉर्मेटर्स को बोली-विशिष्ट सिंटैक्स को संभालने की आवश्यकता है:

बोलीविशिष्ट विशेषताएं
PostgreSQLविंडो फ़ंक्शन, LATERAL JOINS, डॉलर-उद्धृत स्ट्रिंग्स ($$), CTE-गहन शैली
MySQL/MariaDBबैकटिक पहचानकर्ता, LIMIT क्लॉज़ सिंटैक्स, REPLACE INTO
SQL Server (T-SQL)स्क्वायर ब्रैकेट पहचानकर्ता, TOP क्लॉज़, OUTPUT क्लॉज़, MERGE
Oracle (PL/SQL)DUAL तालिका, ROWNUM, पदानुक्रमित CONNECT BY, डॉट-प्रत्यय पैकेज कॉल
SQLiteसीमित प्रकार प्रणाली, REPLACE/UPSERT, एकल-फ़ाइल डेटाबेस
Snowflakeसंस्करण डेटा प्रकार, QUALIFY क्लॉज़, COPY INTO
BigQueryबैकटिक पहचानकर्ता, ARRAY/STRUCT प्रकार, EXCEPT/REPLACE कॉलम सूची
RedshiftPostgreSQL-व्युत्पन्न लेकिन विशिष्ट DDL, S3 से COPY

एक अच्छा फॉर्मेटर बोली संकेत का पता लगाता है या स्वीकार करता है, फिर उन सिंटैक्स को संभालता है जिन्हें अन्य बोलियाँ अस्वीकार करेंगी।

सामान्य चूक

सुझाव

गोपनीयता और गोपनीय क्वेरीज़

SQL फॉर्मेटर पूरी तरह से आपके ब्राउज़र में चलता है। आप जो क्वेरीज़ पेस्ट करते हैं, मध्यवर्ती प्रसंस्करण, और फॉर्मेट किया गया आउटपुट सभी आपके डिवाइस पर रहते हैं। कुछ भी सर्वर पर अपलोड नहीं किया जाता, लॉग नहीं किया जाता, या किसी के साथ साझा नहीं किया जाता।

यह महत्वपूर्ण है क्योंकि SQL क्वेरीज़ में अक्सर अत्यंत संवेदनशील जानकारी होती है: तालिका नाम जो उत्पाद आर्किटेक्चर को प्रकट करते हैं, कॉलम नाम जो व्यावसायिक तर्क और मेट्रिक्स को उजागर करते हैं, WHERE क्लॉज़ में वास्तविक ग्राहक ID, संग्रहीत प्रक्रियाओं में आंतरिक API एंडपॉइंट्स, परीक्षण डेटा में SSN और क्रेडिट कार्ड नंबर, HR क्वेरीज़ में कर्मचारी मुआवजा, एनालिटिक्स क्वेरीज़ में वित्तीय आंकड़े, मार्केटिंग क्वेरीज़ में ग्राहक ईमेल पते। क्लाउड SQL फॉर्मेटर्स अपने अनुरोध लॉग में प्रत्येक क्वेरी को लॉग करते हैं, कभी-कभी «सेवा सुधार» के लिए उन्हें बनाए रखते हैं, और वास्तविक उल्लंघनों में शामिल रहे हैं जहाँ चिपकाई गई उत्पादन क्वेरीज़ ने संवेदनशील स्कीमा और डेटा लीक किया। ब्राउज़र-आधारित फॉर्मेटर में शून्य एक्सपोज़र है: क्वेरी कभी आपकी मशीन नहीं छोड़ती।

ब्राउज़र-आधारित फॉर्मेटिंग पृष्ठ लोड होने के बाद ऑफ़लाइन भी काम करती है, हवाई जहाज़ों पर, इंटरनेट एक्सेस के बिना सुरक्षित वातावरण में, या कहीं भी जहाँ आप किसी तृतीय पक्ष सेवा में डेटाबेस क्वेरी पेस्ट नहीं कर सकते या नहीं करना चाहिए, क्वेरीज़ को फॉर्मेट करने के लिए उपयोगी।

अक्सर पूछे जाने वाले प्रश्न

क्या SQL कीवर्ड बड़े अक्षरों में लिखे जाने चाहिए?

SQL कीवर्ड (SELECT, FROM, WHERE) को बड़े अक्षरों में और तालिका या कॉलम नामों को छोटे अक्षरों में लिखना व्यापक रूप से अनुसरण किया जाने वाला सम्मेलन है। यह क्वेरी को दृश्य रूप से पढ़ना आसान बनाता है। अधिकांश शैली गाइड इसकी अनुशंसा करती हैं, लेकिन कोई भी डेटाबेस इंजन इसे थोपता नहीं है।

क्या फ़ॉर्मेटिंग क्वेरी के निष्पादन को बदलती है?

नहीं। रिक्त स्थान और इंडेंटेशन का SQL निष्पादन पर कोई प्रभाव नहीं होता। फ़ॉर्मेटिंग पूरी तरह मानव पठनीयता के लिए है। एक मिनीफ़ाई और एक इंडेंट की गई क्वेरी समान परिणाम उत्पन्न करती हैं।

कौन सा इंडेंटेशन आकार उपयोग करें?

दो या चार स्पेस दोनों सामान्य हैं। चुनें कि आपकी टीम क्या उपयोग करती है और सुसंगत रहें। अधिकांश SQL फ़ॉर्मेटर इसे कॉन्फ़िगर करने की अनुमति देते हैं।

क्या मेरा SQL किसी सर्वर पर भेजा जाता है?

नहीं। फ़ॉर्मेटिंग पूरी तरह आपके ब्राउज़र में होती है। आपकी क्वेरी कभी आपके डिवाइस से बाहर नहीं जातीं।