SQL क्या है, और डायलेक्ट क्यों मायने रखता है?
SQL रिलेशनल डेटाबेस की क्वेरी भाषा है, जो रूपरेखा में मानकीकृत है पर PostgreSQL, MySQL, SQLite, SQL Server और Oracle में डायलेक्ट अंतरों — क्वोटिंग नियम, फ़ंक्शन, LIMIT बनाम TOP, डेट लिटरल — के साथ लागू है। फ़ॉर्मेटर कीवर्ड, इंडेंटेशन और लाइन ब्रेक को सामान्य करता है ताकि लंबी क्वेरी पढ़ी और रिव्यू की जा सके; वैलिडेटर स्टेटमेंट को पार्स करके डेटाबेस तक पहुँचने से पहले सिंटैक्स एरर ढूँढता है।
सुरक्षा नोट: जनरेट किए गए INSERT या IN-क्लॉज़ स्टेटमेंट फ़िक्सचर और माइग्रेशन के लिए हैं। एप्लिकेशन कोड में वैल्यू पैरामीटराइज़्ड क्वेरी से गुज़रनी चाहिए — यूज़र इनपुट से स्ट्रिंग जोड़कर SQL बनाना ही SQL इंजेक्शन का रास्ता है।
SQL मिनिफ़ायर कैसे इस्तेमाल करें
- समेटने के लिए SQL पेस्ट करें।
- डायलेक्ट चुनें और तय करें कि कमेंट रखने हैं या नहीं।
- एक लाइन का नतीजा कॉपी करें।
SQL मिनिफ़ायर की खूबियाँ
- किसी भी SQL को एक ही लाइन में समेटता है
- -- और /* */ कमेंट हटाता है, या उन्हें इनलाइन ब्लॉक कमेंट में बदल देता है
- स्ट्रिंग लिटरल, कोट किए identifier और पैरामीटर ज्यों के त्यों रखता है
- डायलेक्ट-अवेयर टोकनाइज़ेशन (MySQL के # कमेंट, SQL Server के [bracket], PostgreSQL के $$ कोट)
- बचे हुए byte और प्रतिशत दिखाता है
SQL मिनिफ़ायर का उदाहरण
कमेंट वाली क्वेरी को मिनिफ़ाई करना
इनपुट:
-- active users
SELECT id,
name /* display */
FROM users
WHERE active = 1;आउटपुट:
SELECT id, name FROM users WHERE active=1;SQL मिनिफ़ायर के बारे में अक्सर पूछे जाने वाले सवाल
क्या स्ट्रिंग लिटरल और कमेंट सुरक्षित तरीक़े से संभाले जाते हैं?
हाँ। मिनिफ़ायर SQL को टोकनाइज़ करता है, इसलिए कोट की गई स्ट्रिंग के अंदर का व्हाइटस्पेस बना रहता है और कमेंट हटा दिए जाते हैं (या आपके चुनने पर /* */ ब्लॉक में बदल दिए जाते हैं)।
कमेंट क्यों रखें?
कुछ टीमें मॉनिटरिंग टूल के लिए कमेंट को क्वेरी टैग की तरह इस्तेमाल करती हैं (जैसे /* app:checkout */)। उन्हें एक लाइन में ब्लॉक रूप में बनाए रखने के लिए "Keep comments" चुनें।
क्या मिनिफ़ाई किया SQL अब भी वैध रहता है?
हाँ। जहाँ दो टोकन आपस में जुड़ सकते हैं वहाँ एक स्पेस रखा जाता है, इसलिए कीवर्ड, identifier और ऑपरेटर अलग बने रहते हैं।
यह किस काम आता है?
JSON कॉन्फ़िग, लॉग लाइन, URL पैरामीटर और कोड स्ट्रिंग में SQL रखने के लिए — और जहाँ भी एक लाइन संभालना आसान हो।
संदर्भ
- PostgreSQL Documentation: SQL SyntaxPostgreSQL में SQL की लेक्सिकल संरचना: आइडेंटिफ़ायर, क्वोटिंग, स्ट्रिंग कॉन्स्टेंट और एस्केपिंग।
- SQL As Understood By SQLiteSQLite द्वारा स्वीकृत SQL व्याकरण, स्टेटमेंट दर स्टेटमेंट, सिंटैक्स डायग्राम के साथ।
- SQL InjectionSQL इंजेक्शन कैसे काम करता है और स्ट्रिंग जोड़ने के बजाय पैरामीटराइज़्ड क्वेरी ही बचाव क्यों हैं।