SQL क्या है, और डायलेक्ट क्यों मायने रखता है?
SQL रिलेशनल डेटाबेस की क्वेरी भाषा है, जो रूपरेखा में मानकीकृत है पर PostgreSQL, MySQL, SQLite, SQL Server और Oracle में डायलेक्ट अंतरों — क्वोटिंग नियम, फ़ंक्शन, LIMIT बनाम TOP, डेट लिटरल — के साथ लागू है। फ़ॉर्मेटर कीवर्ड, इंडेंटेशन और लाइन ब्रेक को सामान्य करता है ताकि लंबी क्वेरी पढ़ी और रिव्यू की जा सके; वैलिडेटर स्टेटमेंट को पार्स करके डेटाबेस तक पहुँचने से पहले सिंटैक्स एरर ढूँढता है।
सुरक्षा नोट: जनरेट किए गए INSERT या IN-क्लॉज़ स्टेटमेंट फ़िक्सचर और माइग्रेशन के लिए हैं। एप्लिकेशन कोड में वैल्यू पैरामीटराइज़्ड क्वेरी से गुज़रनी चाहिए — यूज़र इनपुट से स्ट्रिंग जोड़कर SQL बनाना ही SQL इंजेक्शन का रास्ता है।
SQL VALUES जनरेटर कैसे इस्तेमाल करें
- हेडर पंक्ति वाला तालिका डेटा पेस्ट करें।
- आउटपुट स्टाइल और डायलेक्ट चुनें।
- VALUES सूची या derived table कॉपी करें।
SQL VALUES जनरेटर की खूबियाँ
- CSV/TSV पंक्तियों से (v1, v2), (v3, v4) tuple
- कॉलम alias के साथ derived table और CTE आउटपुट
- झटपट seeding के लिए INSERT स्टेटमेंट आउटपुट
- टाइप-अवेयर लिटरल (संख्या, boolean, NULL, कोट किया टेक्स्ट)
- डायलेक्ट-विशिष्ट सिंटैक्स: MySQL का ROW(), Oracle का SELECT … FROM DUAL
SQL VALUES जनरेटर का उदाहरण
JOIN के लिए derived table
इनपुट:
sku,price
MT-100,89.9
MT-220,249आउटपुट:
SELECT * FROM (
VALUES
('MT-100', 89.9),
('MT-220', 249)
) AS v (sku, price)SQL VALUES जनरेटर के बारे में अक्सर पूछे जाने वाले सवाल
VALUES सूची से मैं क्या कर सकता हूँ?
इसे मल्टी-रो INSERT के मुख्य भाग की तरह, JOIN में inline टेबल की तरह (SELECT * FROM (VALUES …) AS v(a, b)), MERGE स्रोत की तरह, या बिना टेबल बनाए क्वेरी टेस्ट करने के लिए CTE की तरह इस्तेमाल करें।
कौन-से आउटपुट स्टाइल हैं?
सादे tuple, कॉलम alias वाला derived table, एक CTE (WITH v AS …) और पूरा INSERT स्टेटमेंट। MySQL ROW(…) सिंटैक्स इस्तेमाल करता है और Oracle, UNION ALL के साथ SELECT … FROM DUAL।
टाइप का अनुमान कैसे लगता है?
हर कॉलम जाँचा जाता है: पूर्णांक और दशमलव बिना कोट रहते हैं, boolean डायलेक्ट के अपने रूप में बदलते हैं, खाली या NULL सेल NULL बनते हैं और बाक़ी सब कोट किया टेक्स्ट होता है।
संदर्भ
- PostgreSQL Documentation: SQL SyntaxPostgreSQL में SQL की लेक्सिकल संरचना: आइडेंटिफ़ायर, क्वोटिंग, स्ट्रिंग कॉन्स्टेंट और एस्केपिंग।
- SQL As Understood By SQLiteSQLite द्वारा स्वीकृत SQL व्याकरण, स्टेटमेंट दर स्टेटमेंट, सिंटैक्स डायग्राम के साथ।
- SQL InjectionSQL इंजेक्शन कैसे काम करता है और स्ट्रिंग जोड़ने के बजाय पैरामीटराइज़्ड क्वेरी ही बचाव क्यों हैं।