SQL फ़ॉर्मैटर
क्वेरी पेस्ट करें, अपना डेटाबेस चुनें, और हर क्लॉज़ एक लाइन में इंडेंट होकर वापस पाएं।
पूरी तरह आपके ब्राउज़र में चलता है
- इनपुट
- 0
- आउटपुट
- 0
- बदलाव
- 0%
लगभग 10 MB तक का इनपुट। यह सिर्फ़ लेआउट बदलता है: यह आपका SQL चलाता नहीं, उसे किसी स्कीमा से जाँचता नहीं और ऑप्टिमाइज़ भी नहीं करता।
SQL क्वेरी को कैसे फ़ॉर्मैट करें
- क्वेरी को बॉक्स में पेस्ट करें, या यह देखने के लिए कि यह कैसे काम करता है, नमूना डालें दबाएं।
- डायलेक्ट में अपना डेटाबेस चुनें, फिर कीवर्ड केस और इंडेंट का साइज़ सेट करें।
- फ़ॉर्मैट की हुई क्वेरी आपके टाइप करते ही नीचे दिखती है। उसे कॉपी करें, या
.sqlफ़ाइल के रूप में डाउनलोड करें।
SQL को पढ़ने लायक बनाना
डेटाबेस क्वेरी को एक ही तरह पढ़ता है, चाहे वह एक लाइन में हो या चालीस में, इसीलिए लॉग, ORM और मॉनिटरिंग टूल से पेस्ट की गई क्वेरी अक्सर एक अटूट स्ट्रिंग के रूप में आती हैं। फ़ॉर्मैटिंग हर मुख्य क्लॉज़ (SELECT, FROM, WHERE, GROUP BY, ORDER BY) को अपनी लाइन पर रखती है और उसके नीचे कॉलम, शर्तें और सबक्वेरी इंडेंट करती है, ताकि आप एक नज़र में क्वेरी की बनावट देख सकें और छूटी हुई जॉइन शर्त पकड़ सकें।
लेआउट आपके चुने डायलेक्ट के हिसाब से बनता है, क्योंकि डेटाबेस के बीच शब्द और चिह्न अलग होते हैं। price::numeric जैसा PostgreSQL कास्ट, $1 जैसा क्रमांकित पैरामीटर, MySQL का बैकटिक वाला नाम, Oracle का CONNECT BY क्लॉज़ और SQL Server का TOP 10 एक डायलेक्ट में मान्य हैं और दूसरे में सिंटैक्स एरर। बाउंड पैरामीटर के प्लेसहोल्डर (?, $1, :name, @name) पहचाने जाते हैं और जस के तस छोड़ दिए जाते हैं।
कीवर्ड के केस का क्वेरी के चलने पर कोई असर नहीं पड़ता, इसलिए यह पूरी तरह टीम की अपनी शैली है। जो फ़ॉर्मैटर व्याकरण समझता है, वह इसे सुरक्षित रूप से बदल सकता है, क्योंकि वह जानता है कि कौन-से शब्द कीवर्ड हैं और कौन-से कॉलम के नाम या कोट के अंदर का टेक्स्ट।
सुझाव
- बदलाव से पहले और बाद की क्वेरी की तुलना कर रहे हैं? दोनों को एक ही सेटिंग से फ़ॉर्मैट करें और टेक्स्ट की तुलना करें में मिलाएं।
- क्या क्वेरी JSON कॉलम लौटाती है? कोई मान JSON फ़ॉर्मैट और वैलिडेट करें में पेस्ट करके पढ़ें।
- लंबी स्क्रिप्ट में किसी टेबल का नाम बदलना है? फ़ॉर्मैट करने से पहले खोजें और बदलें यह कर देता है।
अक्सर पूछे जाने वाले सवाल
क्या मेरा SQL अपलोड होता है?
नहीं। फ़ॉर्मैटिंग का कोड इसी साइट से दी जाने वाली एक स्क्रिप्ट है जो पहली बार क्वेरी पेस्ट करने पर लोड होती है; क्वेरी खुद आपके ब्राउज़र में रहती है और किसी सर्वर पर नहीं भेजी जाती।
डायलेक्ट क्यों मायने रखता है?
हर डेटाबेस अपना सिंटैक्स जोड़ता है। PostgreSQL में :: कास्ट और $1 पैरामीटर हैं, SQL Server में [bracketed] नाम और TOP हैं, MySQL और MariaDB नामों को बैकटिक में लिखते हैं, और BigQuery के ऐरे और स्ट्रक्ट के अपने रूप हैं। सही डायलेक्ट चुनने से पार्सर आपकी क्वेरी स्वीकार कर पाता है। जब पक्का न हो तो Standard SQL सुरक्षित विकल्प है, लेकिन वेंडर के अतिरिक्त सिंटैक्स पर वह ज़्यादा सख़्त है।
जो क्वेरी मेरे डेटाबेस में ठीक चलती है, उस पर एरर क्यों दिखता है?
फ़ॉर्मैटर सिर्फ़ लाइनों को दोबारा इंडेंट नहीं करता, बल्कि पूरा स्टेटमेंट पढ़ता है, इसलिए बिना बंद किया ब्रैकेट या कोट उसे रोक देता है, और किसी दूसरे डायलेक्ट का सिंटैक्स भी। संदेश में वह लाइन और कॉलम बताया जाता है जहाँ वह रुका, और सबसे आम इलाज है सही डायलेक्ट चुनना।
क्या फ़ॉर्मैट करने से क्वेरी का काम बदलता है?
सिर्फ़ व्हाइटस्पेस बदलता है और, अगर आप चाहें, कीवर्ड का केस। स्ट्रिंग लिटरल, कोट किए गए नाम और संख्याएं अपना टेक्स्ट रखती हैं, इसलिए UPPER CASE चुनने पर भी कोट के अंदर का 'select' छोटे अक्षरों में ही रहता है।
क्या कई स्टेटमेंट एक साथ फ़ॉर्मैट कर सकते हैं?
हाँ। सेमीकोलन से अलग किए गए हर स्टेटमेंट को फ़ॉर्मैट किया जाता है, और उनके बीच एक खाली लाइन रखी जाती है।
कीवर्ड का कौन-सा केस इस्तेमाल करूँ?
दोनों चलते हैं; यह शैली की पसंद है और डेटाबेस इसे अनदेखा करते हैं। अपरकेस कीवर्ड पुरानी परिपाटी है और सादे टेक्स्ट में क्लॉज़ को उभारते हैं। जिन कोडबेस में पहले से इसी शैली में लिंटर या ORM का आउटपुट है, वहाँ लोअरकेस आम है। जैसा टाइप किया वैसा रखें विकल्प आपके कैपिटलाइज़ेशन को छेड़ता नहीं।