مواد پر جائیں

SQL فارمیٹر اور توثیق کار - آن لائن مفت SQL کوئریز فارمیٹ کریں

مفت SQL فارمیٹر اور توثیق کار۔ خود بخود SQL کو مناسب انڈینٹیشن اور کیپیٹلائزیشن کے ساتھ فارمیٹ کریں۔ فوری طور پر سنٹیکس کی غلطیوں کی جانچ کریں۔ MySQL، PostgreSQL، SQL سرور، اوریکل کے ساتھ کام کرتا ہے۔

SQL فارمیٹر اور توثیق کار

خودکار انڈینٹیشن، کلیدی الفاظ کی بڑی حروف، اور نحوی غلطی کی تشخیص کے ساتھ SQL کوئریز کو فارمیٹ اور توثیق کریں۔

فارمیٹ شدہ نتیجہ دیکھنے کے لیے SQL کوئری درج کریں۔
لوڈنگ کیلکولیٹر...
📚

دستاویزات

SQL فارمیٹنگ کیوں اہم ہے

کیا آپ نے کبھی ایسا ڈیٹابیس پروجیکٹ وراثت میں لیا ہے جہاں SQL ایسا لگتا ہے جیسے کسی نے آنکھیں بند کرکے ٹائپ کیا ہو؟ آپ اکیلے نہیں ہیں۔ خراب فارمیٹ کردہ SQL ڈیٹابیس ڈویلپمنٹ میں بگز اور ضائع وقت کے سب سے عام ذرائع میں سے ایک ہے۔

یہ SQL فارمیٹر اور ویلیڈیٹر آپ کو خود بخود گندے کویریز کو صاف کرنے میں مدد کرتا ہے۔ اپنا SQL پیسٹ کریں، اور یہ فوری طور پر مناسب انڈینٹیشن لگاتا ہے، کلیدی الفاظ کو بڑے حروف میں لکھتا ہے، اور سنٹیکس کی خرابیوں کی جانچ کرتا ہے - یہ سب آپ کے براؤزر میں بغیر کسی سرور پر ڈیٹا بھیجے۔ جو عام طور پر 10-15 منٹ دستی فارمیٹنگ میں لگتا ہے، وہ سیکنڈوں میں ہو جاتا ہے۔

میرے ڈیٹابیس ٹیموں کے ساتھ کام کرنے کے تجربے میں، سب سے بڑی وقت بچانے والی چیز صرف فارمیٹنگ نہیں ہے - بلکہ پروڈکشن میں آنے سے پہلے خرابیوں کو پکڑنا ہے۔ ایک غلط رکھا گیا پرینتھیسس یا بند نہ کیا گیا کوٹ گھنٹوں ڈیبگنگ ضائع کر سکتا ہے۔ یہ ٹول ان مسائل کو فوری طور پر پکڑتا ہے، اس سے پہلے کہ آپ اپنے ڈیٹابیس کے خلاف کچھ بھی نفاذ کریں۔

SQL فارمیٹر کا استعمال کیسے کریں

انٹرفیس جان بوجھ کر بہت سادہ ہے — بس پیسٹ کرو اور چلو:

  1. اپنا SQL ان پٹ باکس میں پیسٹ کریں (یا براہ راست ٹائپ کریں اگر آپ شروع سے لکھ رہے ہیں)
  2. خود بخود فارمیٹ ہوتے دیکھیں جیسے آپ ٹائپ کرتے ہیں — کلک کرنے والے کوئی بٹن نہیں، کوئی ترتیبات کنفیگر کرنے کی ضرورت نہیں
  3. توثیق کی غلطیوں کا جائزہ لیں اگر فارمیٹ شدہ آؤٹ پٹ کے نیچے کوئی ظاہر ہوتی ہیں
  4. فارمیٹ شدہ SQL کاپی کریں ایک کلک پر اپنے IDE، دستاویزات، یا ڈیٹا بیس ٹول میں استعمال کرنے کے لیے

کسی بھی براؤزر والے آلے پر کام کرتا ہے۔ فارمیٹنگ مکمل طور پر کلائنٹ سائیڈ پر ہوتی ہے، اس لیے آپ کے کوئی کوئری آپ کی مشین سے باہر نہیں جاتی — جب پروڈکشن ڈیٹا بیس ڈھانچے یا حساس اسکیموں پر کام کر رہے ہوں تو یہ اہم ہے۔

SQL فارمیٹر کیا کرتا ہے

کلیدی الفاظ کی بڑی حروف

تمام SQL کلیدی الفاظ خود بخود بڑے حروف میں لکھے جاتے ہیں—SELECT، FROM، WHERE، JOIN وغیرہ۔ یہ اکثر ڈیٹابیس ٹیموں کی روایت پر عمل کرتا ہے اور کلیدی الفاظ کو آپ کی ٹیبل اور کالم کے ناموں سے الگ کرتا ہے۔ جب آپ ایک پیچیدہ کوئری میں دیکھ رہے ہوتے ہیں، تو یہ بصری الگاؤ آپ کو کوئری کی ساخت کو ایک نظر میں پہچاننے میں مدد کرتا ہے۔

ذہین انڈینٹیشن

فارمیٹر آپ کے SQL کو محض رینڈم لائن بریک شامل کرنے کے بجائے منطقی ترتیب کی بنیاد پر ڈھالتا ہے۔ مرکزی کلائسز جیسے SELECT اور FROM بائیں مارجن سے شروع ہوتے ہیں۔ JOIN کلائسز FROM کے نیچے انڈینٹ ہوتے ہیں تاکہ یہ ظاہر ہو سکے کہ وہ ٹیبل کے انتخاب کا حصہ ہیں۔ ذیلی کوئریز کو اضافی انڈینٹیشن کی سطحیں ملتی ہیں، جو پیچیدہ منطق کو واضح کرتی ہیں۔

عملی طور پر یہ کیا ہوتا ہے: جب آپ کے پاس متعدد جوائنٹس اور ذیلی کوئریز والی کوئری ہوتی ہے، تو مناسب انڈینٹیشن آپ کو ہر لفظ کو پڑھے بغیر کوئری کی ساخت دیکھنے میں مدد کرتی ہے۔ آپ فوری طور پر دیکھ سکتے ہیں کہ ایک جوائنٹ کہاں ختم ہوتا ہے اور دوسرا شروع ہوتا ہے، یا کہاں ایک ذیلی کوئری آپ کی SELECT فہرست میں استعمال کی جا رہی ہے۔

منطقی لائن بریک

لائن بریک صرف ہر جگہ نہیں، بلکہ جہاں قابل فہم ہونے میں مدد ملتی ہے۔ ہر مرکزی کلائس کو اپنی خود کی لائن ملتی ہے۔ کوما سے الگ کی گئی اشیاء (جیسے SELECT میں کالم کے نام) کو اپنی خود کی لائن اور مناسب انڈینٹیشن ملتی ہے۔ ذیلی کوئریاں بصری طور پر الگ کی جاتی ہیں۔ CASE اسٹیٹمنٹس WHEN، THEN، اور ELSE پر واضح کرنے کے لیے ٹوٹتے ہیں۔

اسپیسنگ صنعت میں استعمال ہونے والی SQL اسٹائل گائیڈ کی روایات پر عمل کرتی ہے، یعنی آپ کا فارمیٹ شدہ SQL دوسرے ڈویلپرز کے لیے مانوس لگے گا۔

SQL اعتبار سنجی: کیا چیک کیا جاتا ہے

ویلیڈیٹر ان غلطیوں کو پکڑتا ہے جو عام طور پر SQL لکھتے وقت نظر انداز ہو جاتی ہیں۔ یہ آپ کے ڈیٹا بیس کے کویری تجزیہ کار کی جگہ نہیں لے سکتا، لیکن یہ عام غلطیوں کو کویری چلانے سے پہلے ہی پکڑ لیتا ہے۔

ساختی غلطیاں

غیر متوازن براکٹس جیسی غلطیاں پیچیدہ کویریز میں عام ہیں۔ ویلیڈیٹر کھلنے اور بند ہونے والے براکٹس کو گن کر فوری طور پر بے میل کو نشان زد کرتا ہے۔ میں نے دیکھا ہے کہ 200 لائن کی کویری میں ایک براکٹ کی کمی سے کیسے پروڈکشن میں مسائل پیدا ہوتے ہیں۔

بند نہ کیے گئے سٹرنگ لٹرلز اس وقت ہوتے ہیں جب آپ سٹرنگ ویلیو پر کلوزنگ کوٹ بھول جاتے ہیں۔ آپ کا ڈیٹا بیس انہیں فوری طور پر مسترد کر دے گا، لیکن یہاں پکڑنے سے ایک راؤنڈ ٹرپ بچ جاتی ہے۔

کلاز کی ترتیب کی غلطیاں اس وقت نشان زد کی جاتی ہیں جب کلاز غلط ترتیب میں آتے ہیں۔ مثال کے طور پر، اگر آپ GROUP BY سے پہلے HAVING یا GROUP BY کے بعد WHERE رکھتے ہیں، تو ویلیڈیٹر آپ کو متنبہ کرتا ہے۔ یہ ISO/IEC 9075 SQL معیار میں بیان کردہ SQL کے معیاری قواعد پر عمل کرتا ہے۔

منطقی غلطیاں

ON شرائط کے بغیر JOIN کلاز غیر ارادی کراس جوائنز بناتے ہیں، جو مقصود سے کہیں زیادہ سطور واپس کرتے ہیں۔ ایک عام سناریو: جب آپ کویری میں تیسرا یا چوتھا جدول شامل کر رہے ہیں اور ON کلاز بھول جاتے ہیں۔ اس چیک کے بغیر، آپ شاید اس وقت تک نہ دیکھیں جب تک کہ آپ کو نتائج میں ہزاروں ڈپلیکیٹ سطور نظر نہ آئیں۔

GROUP BY کے بغیر HAVING زیادہ تر ڈیٹا بیسز میں تکنیکی طور پر غلط SQL ہے۔ HAVING کلاز گروپ کردہ نتائج کو فلٹر کرتی ہے، اس لیے اس کے کام کرنے کے لیے GROUP BY کی ضرورت ہوتی ہے۔ ویلیڈیٹر اس منطقی بے میل کو پکڑتا ہے۔

نامکمل WHERE شرائط اس وقت ہوتی ہیں جب آپ کسی شرط کو ٹائپ کرنا شروع کرتے ہیں لیکن اسے مکمل نہیں کرتے - جیسے کوئی ویلیو کے بغیر WHERE status =۔ یہ کویریز میں ترمیم کرتے وقت آسانی سے نظر انداز ہو سکتی ہیں۔

یہ کیا نہیں پکڑے گا

یہ ویلیڈیٹر صرف نحو اور ساخت پر توجہ مرکوز کرتا ہے، ڈیٹا بیس کی سکیما پر نہیں۔ یہ نہیں جان سکتا کہ:

  • کیا آپ کے جدول یا کالم کے نام آپ کے ڈیٹا بیس میں موجود ہیں
  • کیا آپ متوافق ڈیٹا ٹائپس پر جوائن کر رہے ہیں
  • کیا آپ کی کویری اچھی طرح سے کام کرے گی یا اس میں بہتری کے مسائل ہیں
  • کیا آپ کو ان جداول تک رسائی کی اجازت ہے جن کا آپ سوال کر رہے ہیں

اسے اپنے اصل ڈیٹا بیس پر کویری بھیجنے سے پہلے پہلی بار چیک کے طور پر سمجھیں۔

فارمیٹنگ کے اصول جو اس ٹول کے ذریعے لاگو کیے جاتے ہیں

فارمیٹر مستقل اصول لاگو کرتا ہے جو SQL اسٹائل گائیڈ کی روایات پر مبنی ہیں جن کی پیروی زیادہ تر ڈیٹابیس ٹیمیں کرتی ہیں۔

کلیدی الفاظ بڑے حروف میں لکھے جاتے ہیں

ہر SQL کلیدی لفظ بڑے حروف میں تبدیل ہو جاتا ہے: SELECT، INSERT، UPDATE، DELETE، CREATE، ALTER، DROP۔ اس میں کلاسز (FROM، WHERE، GROUP BY، HAVING، ORDER BY)، جوائن کی قسمیں (JOIN، INNER JOIN، LEFT JOIN)، آپریٹرز (AND، OR، NOT، IN، BETWEEN، LIKE)، اور عام فنکشنز (COUNT، SUM، AVG، CASE، WHEN) شامل ہیں۔

بڑے حروف میں کیوں؟ یہ SQL کی زبان کے عناصر اور آپ کے ڈیٹابیس کے مخصوص ناموں (ٹیبلز، کالم، الائیسز) کے درمیان بصری تمیز پیدا کرتا ہے۔ کوئی کوئری دیکھتے وقت، آپ کی آنکھ فوری طور پر ڈھانچے کو پکڑ لیتی ہے۔

ہر سطح پر دو سپیس کی انڈینٹیشن

مرکزی کلاسز جیسے SELECT اور FROM بائیں مارجن سے شروع ہوتی ہیں۔ JOIN کلاسز FROM کے نیچے دو سپیس انڈینٹ ہوتی ہیں تاکہ یہ ظاہر ہو کہ وہ ٹیبل کے انتخاب کا حصہ ہیں۔ سب کوئریز ہر نیسٹنگ سطح کے لیے مزید دو سپیس انڈینٹ ہوتی ہیں۔ یہ ایک بصری ہائیرارکی بناتا ہے جو منطقی ڈھانچے سے میل کھاتا ہے۔

کوما سے الگ کی گئی فہرستیں (مثال کے لیے SELECT میں کالم کے نام) ہر ایک کو اپنی لائن اور مستقل انڈینٹیشن دی جاتی ہے۔ جب آپ کے پاس SELECT کی فہرست میں 15 کالم ہوں، تو یہ مخصوص کالموں کو دیکھنا آسان بناتا ہے۔

WHERE کلاسز میں شرائط عمودی طور پر ردیف ہوتی ہیں۔ جب آپ کے پاس متعدد AND یا OR شرائط ہوں، تو ردیف منطقی ڈھانچے کو فوری طور پر واضح کرتا ہے۔

پہلے اور بعد: فرق دیکھیں

فارمیٹنگ سے پہلے:

1select u.id, u.name, o.order_date from users u join orders o on u.id = o.user_id where o.status = "completed" group by u.id order by u.name;
2

فارمیٹنگ کے بعد:

1SELECT
2  u.id,
3  u.name,
4  o.order_date
5FROM users u
6  JOIN orders o ON u.id = o.user_id
7WHERE
8  o.status = "completed"
9GROUP BY
10  u.id
11ORDER BY
12  u.name;
13

توثیق کے اصول: کیا پکڑا جاتا ہے

توثیق کار ساخت کی سلامت اور بنیادی منطقی ہم آہنگی کی جانچ کرتا ہے۔ یہاں دیکھیں کہ وہ کیا دیکھتا ہے:

ساخت کی جانچیں

متوازن بریکٹ: کھلنے والے اور بند ہونے والے بریکٹ کو مماثل ہونا چاہیے۔ نیسٹڈ ذیلی استعلاموں میں اکثر بریکٹ کی متعدد سطحیں ہوتی ہیں، اور ان کی گنتی میں غلطی SQL کی سب سے عام خطاؤں میں سے ایک ہے۔ توثیق کار ان کی گنتی آپ کے لیے کرتا ہے۔

صحیح طریقے سے بند کیے گئے سٹرنگز: ہر کھلنے والے اقتباس (سنگل یا ڈبل) کو ایک بند کرنے والے اقتباس کی ضرورت ہوتی ہے۔ یہ واضح لگتا ہے، لیکن جب آپ متعدد سٹرنگ لٹرلز کے ساتھ ایک پیچیدہ استعلام لکھ رہے ہوتے ہیں، تو ایک کو چھوڑ دینا آسان ہے۔

درست کلاز کی ترتیب: SQL میں خاص ترتیب کی ضروریات ہوتی ہیں۔ SELECT FROM سے پہلے آتا ہے، جو WHERE سے پہلے آتا ہے، جو GROUP BY سے پہلے آتا ہے، جو HAVING سے پہلے آتا ہے، جو ORDER BY سے پہلے آتا ہے۔ ان کو ترتیب سے باہر رکھنے سے فوری طور پر نحوی غلطیاں ہوتی ہیں۔ توثیق کار SQL معیار کی بنیاد پر اس ترتیب کی جانچ کرتا ہے۔

منطقی ہم آہنگی کی جانچیں

ON شرط کے ساتھ JOIN: ہر JOIN کو ایک ON یا USING کلاز کی ضرورت ہوتی ہے جو یہ بتاتی ہے کہ جدولیں کیسے متعلق ہیں۔ اس کے بغیر، آپ کو کراس جوائن ملتا ہے - ایک جدول کی ہر قطار دوسری جدول کی ہر قطار کے ساتھ جوڑی جاتی ہے۔ یہ شاذ ہی وہ ہوتا ہے جو آپ چاہتے ہیں اور عام طور پر ON کلاز کے غائب ہونے کا اشارہ کرتا ہے۔

مکمل WHERE شرائط: WHERE کلاز کو مکمل پریڈیکیٹس کی ضرورت ہوتی ہے۔ کسی قدر کے بغیر WHERE status = incomplete اور غیر معتبر ہے۔ توثیق کار ان جزوی شرائط کو پکڑتا ہے۔

HAVING کو GROUP BY کی ضرورت ہے: HAVING کلاز گروپ کردہ نتائج کو فلٹر کرتا ہے، اس لیے یہ صرف تب معنی رکھتا ہے جب آپ کے پاس GROUP BY ہو۔ HAVING کا استعمال GROUP BY کے بغیر ایک منطقی غلطی ہے جسے زیادہ تر ڈیٹابیسز مسترد کر دیتے ہیں۔

GROUP BY اجتماعی اصول: جب آپ COUNT() یا SUM() جیسے اجتماعی فنکشنز استعمال کرتے ہیں، تو آپ کی SELECT فہرست میں کوئی بھی غیر اجتماعی کالم GROUP BY میں ظاہر ہونا چاہیے۔ یہ ایک بنیادی SQL تقاضا ہے جسے توثیق کار چیک کرتا ہے۔

عام غلطیوں کی مثال جو پکڑی جاتی ہیں

یہاں SQL ہے جس میں متعدد مسائل ہیں جنہیں توثیق کار پکڑے گا:

1SELECT user_id, COUNT(*) FROM orders
2JOIN users
3WHERE status =
4GROUP BY
5HAVING count > 10;
6

پکڑی گئی مسائل:

  1. JOIN users میں ON شرط غائب (کراس جوائن بنائے گا)
  2. WHERE status = incomplete (کوئی موازنہ قدر نہیں)
  3. خالی GROUP BY کلاز (کوئی کالم نہیں بتایا گیا)
  4. HAVING count > 10 غیر متعینہ کالم کا حوالہ دیتا ہے

جب اس SQL فارمیٹر کا استعمال کرنا ہے

کوڈ ریویو کے دوران

کیا آپ نے کبھی ایک 50 لائن کے SQL کوئری کو ایک لائن میں لکھا ہوا دیکھا ہے؟ یہ بہت مشکل ہوتا ہے۔ کوڈ ریویو میں کوئریز جمع کرانے سے پہلے، انہیں فارمیٹر سے گزاریں۔ آپ کے ریویورز آپ کا شکریہ ادا کریں گے، اور وہ ڈھانچے کو سمجھنے کی بجائے لاجک پر توجہ دے سکیں گے۔

پل ریکوئسٹ میں ڈیٹا بیس کی تبدیلیوں کو ریویو کرتے وقت، شرکا کو ان کے SQL کو پہلے فارمیٹ کرنے کے لیے کہیں۔ جب ڈھانچہ مستقل ہو تو لاجک کی غلطیوں کو دیکھنا آسان ہو جاتا ہے۔

پروڈکشن مسائل کی ڈیبگنگ

جب آپ پروڈکشن میں ناکام ہونے والی کوئری کی تفتیش کر رہے ہوں، اسے صحیح طریقے سے فارمیٹ کرنے سے ڈھانچہ واضح نظر آتا ہے۔ میں نے لامتعداد کوئریز ڈیبگ کی ہیں جہاں مسئلہ فوری طور پر واضح ہو گیا جب SQL کو صحیح طریقے سے فارمیٹ کیا گیا۔ - ایک غائب جوائن شرط، غلط WHERE کلاز گروپنگ، یا غلط جگہ پر ایک سب کوئری۔

کوئری کو اپنے لاگز سے کاپی کریں، یہاں پیسٹ کریں، اور آپ فوری طور پر دیکھ لیں گے کہ کیا ڈھانچے میں کوئی مسئلہ ہے۔

جنریٹ کردہ SQL کے ساتھ کام کرنا

ORMs (آبجیکٹ-ریلیشنل میپرز) جیسے Hibernate، Entity Framework، یا SQLAlchemy خود بخود SQL جنریٹ کرتے ہیں۔ کبھی کبھی آپ کو دیکھنے کی ضرورت ہوتی ہے کہ وہ اصل میں کیا کوئری پیدا کر رہے ہیں۔ جنریٹ کردہ SQL عام طور پر ایک طویل لائن میں ہوتا ہے جس میں کوئی فارمیٹنگ نہیں ہوتی۔ یہ ٹول ORM سے جنریٹ کردہ کوئریز کو پڑھنے کے قابل بناتا ہے تاکہ آپ ان کو سمجھ سکیں اور بہتر بنا سکیں۔

SQL سکھانا اور سیکھنا

اگر آپ SQL سیکھ رہے ہیں یا سکھا رہے ہیں، یہ فارمیٹر آپ کو صحیح کوئری ڈھانچے کو سمجھنے میں مدد کرتا ہے۔ جب آپ ایک کام کرنے والی کوئری پیسٹ کرتے ہیں اور دیکھتے ہیں کہ یہ کیسے فارمیٹ ہوتی ہے، تو آپ کنونشنز سیکھتے ہیں۔ جب آپ ایک خراب کوئری پیسٹ کرتے ہیں اور توثیق کی غلطیاں دیکھتے ہیں، تو آپ سمجھتے ہیں کہ یہ کیوں کام نہیں کرتی۔

ڈیٹا بیس سسٹمز کے درمیان منتقلی

مختلف ڈیٹا بیسز (PostgreSQL، MySQL، SQL Server) کے پاس تھوڑے مختلف SQL لہجے ہوتے ہیں۔ سسٹمز کے درمیان کوئریز منتقل کرتے وقت، صحیح فارمیٹنگ آپ کو ان لہجے کی خاص سنٹیکس کو دیکھنے میں مدد کرتی ہے جس میں تبدیلی کی ضرورت ہو سکتی ہے۔ فارمیٹر مستقل SQL کنونشنز پر عمل کرتا ہے جو زیادہ تر اہم ڈیٹا بیسز میں کام کرتے ہیں۔

اس SQL فارمیٹر کے متبادل

ڈیٹابیس-مخصوص آئی ڈی ای

DataGrip، SQL سرور مینجمنٹ اسٹوڈیو، یا MySQL ورک بینچ جیسے ٹولز میں بلٹ-ان فارمیٹر ہوتے ہیں۔ یہ طاقتور ہوتے ہیں اور براہ راست آپ کے ڈیٹابیس کنکشنز کے ساتھ انٹیگریٹ ہوتے ہیں۔

معاوضہ: انہیں انسٹال کرنے اور سیٹ اپ کرنے کی ضرورت ہوتی ہے۔ DataGrip انفرادی صارفین کے لیے $199/سال میں آتا ہے۔ SSMS مفت ہے لیکن صرف Windows کے لیے۔ اگر آپ کو بغیر کچھ انسٹال کیے فوری فارمیٹنگ چاہیے، یا آپ متعدد ڈیٹابیس سسٹمز پر کام کرتے ہیں، تو براؤزر پر مبنی ٹول زیادہ عملی ہے۔

ایڈیٹر ایکسٹینشنز

اگر آپ VS Code یا Sublime Text میں SQL لکھتے ہیں، تو SQL Beautify یا SqlBeautifier جیسی ایکسٹینشنز فارمیٹنگ کو آپ کے ایڈیٹر میں لاتی ہیں۔ یہ اچھی طرح کام کرتا ہے جب آپ فعال طور پر کوئری لکھ رہے ہوں اور اپنے ورک فلو کے حصے کے طور پر فوری فارمیٹنگ چاہتے ہیں۔

محدودیت: ایکسٹینشنز کو کنفیگر کرنے کی ضرورت ہوتی ہے، اور وہ آپ کے مخصوص ایڈیٹر سے جڑی ہوتی ہیں۔ جب SQL ٹیم کے ساتھ شیئر کرتے ہیں یا دستاویزات میں کوئریز پوسٹ کرتے ہیں، تو ایک معیاری ویب فارمیٹر یہ سنتشت کرتا ہے کہ ہر کوئی ایک جیسی فارمیٹنگ دیکھے۔

کمانڈ لائن فارمیٹرز

sqlformat (پائتھن) یا sql-formatter-cli (Node.js) جیسے ٹولز کو CI/CD پائپ لائنز میں انٹیگریٹ کیا جا سکتا ہے تاکہ ورژن کنٹرول میں SQL کو خودکار طور پر فارمیٹ کیا جا سکے۔ یہ ایک ٹیم میں مستقل رویے کو یقینی بناتا ہے۔

خودکار ورک فلو کے لیے بہتر استعمال کیا جاتا ہے بجائے اد-ہوک فارمیٹنگ کے۔ اگر آپ صرف چند کوئریز کو صاف کر رہے ہیں یا SQL سیکھ رہے ہیں، تو کمانڈ لائن ٹولز غیر ضروری پیچیدگی شامل کرتے ہیں۔

SQL فارمیٹنگ کیسے معیاری عمل بن گیا

SQL 1970 کی دہائی میں IBM میں تیار کیا گیا تھا، لیکن فارمیٹنگ کی روایات بہت بعد میں ظاہر ہوئیں۔ ابتدائی SQL کارکردگی کے لحاظ سے موثر تھا لیکن غیر متحد - ہر ڈویلپر نے کوئری کو مختلف طریقے سے فارمیٹ کیا۔

موڑ 1990 کی دہائی میں آیا جب ڈیٹابیس سنگل-ڈویلپر پروجیکٹس سے ٹیم پر مبنی ترقی کی طرف منتقل ہوئے۔ تنظیموں نے مستقل رکھنے کے لیے داخلی SQL اسٹائل گائیڈز بنانا شروع کیا۔ جب آپ کے پاس ایک ہی ڈیٹابیس پر پانچ ڈویلپر کام کر رہے تھے، تو پڑھنے کے قابل SQL تعاون کے لیے ضروری ہو گیا۔

2000 کی دہائی میں ORMs آئے جنہوں نے خود بخود SQL تیار کیا۔ ان ٹولز نے کام کرنے والا لیکن بدصورت SQL پیدا کیا - سب کچھ ایک لائن میں، کوئی انڈینٹیشن نہیں۔ اس نے خود کار فارمیٹرز کی مانگ پیدا کی جو جنریٹ کردہ SQL کو انسانی طور پر پڑھنے کے قابل بنا سکیں۔

2010 کی دہائی میں ویب ڈویلپمنٹ کے پختہ ہونے کے ساتھ آن لائن SQL فارمیٹرز ظاہر ہوئے۔ ٹولز انسٹال کرنے یا IDE پلگ ان کو کنفیگر کرنے کے بجائے، ڈویلپر براؤزر میں SQL فارمیٹ کر سکتے تھے۔ اس نے SQL سیکھنے والے مبتدی سے لے کر تجربہ کار ڈویلپرز تک سب کے لیے مناسب فارمیٹنگ تک رسائی کو عام کر دیا۔

آج، SQL فارمیٹنگ کو بنیادی عمل سمجھا جاتا ہے، جیسا کہ دوسری پروگرامنگ زبانوں میں کوڈ فارمیٹنگ۔ Simon Holywell کا SQL اسٹائل گائیڈ وسیع طور پر اپنایا گیا معاہدہ فراہم کرتا ہے، اور اس طرح کے ٹولز ان معیارات کو خود بخود نافذ کرتے ہیں۔

کوڈ کی مثالیں

مثال 1: بنیادی SELECT کوئری

غیر فارمیٹ شدہ:

1select id, first_name, last_name, email from customers where status = 'active' order by last_name, first_name;
2

فارمیٹ شدہ:

1SELECT
2  id,
3  first_name,
4  last_name,
5  email
6FROM
7  customers
8WHERE
9  status = 'active'
10ORDER BY
11  last_name,
12  first_name;
13

مثال 2: JOIN کوئری

غیر فارمیٹ شدہ:

1select c.id, c.name, o.order_date, o.total_amount from customers c left join orders o on c.id = o.customer_id where o.order_date >= '2023-01-01' and o.status != 'cancelled' order by o.order_date desc;
2

فارمیٹ شدہ:

1SELECT
2  c.id,
3  c.name,
4  o.order_date,
5  o.total_amount
6FROM
7  customers c
8  LEFT JOIN orders o ON c.id = o.customer_id
9WHERE
10  o.order_date >= '2023-01-01'
11  AND o.status != 'cancelled'
12ORDER BY
13  o.order_date DESC;
14

مثال 3: ذیلی کوئری کے ساتھ پیچیدہ کوئری

غیر فارمیٹ شدہ:

1select d.department_name, (select count(*) from employees e where e.department_id = d.id) as employee_count, (select avg(salary) from employees e where e.department_id = d.id) as avg_salary from departments d where d.active = true having employee_count > 0 order by avg_salary desc;
2

فارمیٹ شدہ:

1SELECT
2  d.department_name,
3  (
4    SELECT
5      COUNT(*)
6    FROM
7      employees e
8    WHERE
9      e.department_id = d.id
10  ) AS employee_count,
11  (
12    SELECT
13      AVG(salary)
14    FROM
15      employees e
16    WHERE
17      e.department_id = d.id
18  ) AS avg_salary
19FROM
20  departments d
21WHERE
22  d.active = TRUE
23HAVING
24  employee_count > 0
25ORDER BY
26  avg_salary DESC;
27

پروگراماٹک SQL فارمیٹنگ

یہاں مختلف پروگرامنگ زبانوں میں SQL فارمیٹنگ کی مثالیں ہیں:

1// جاوا اسکرپٹ SQL فارمیٹنگ مثال sql-formatter لائبریری کا استعمال کرتے ہوئے
2const sqlFormatter = require('sql-formatter');
3
4function formatSQL(sql) {
5  return sqlFormatter.format(sql, {
6    language: 'sql',
7    uppercase: true,
8    linesBetweenQueries: 2,
9    indentStyle: 'standard'
10  });
11}
12
13const rawSQL = "select id, name from users where status='active'";
14const formattedSQL = formatSQL(rawSQL);
15console.log(formattedSQL);
16

اکثر پوچھے جانے والے سوالات

کیا یہ SQL فارمیٹر PostgreSQL، MySQL اور SQL سرور کے ساتھ کام کرتا ہے؟

جی ہاں، یہ مرکزی ڈیٹابیس میں مشترک معیاری SQL سنٹیکس کو ہینڈل کرتا ہے - PostgreSQL، MySQL، SQL سرور (T-SQL)، اوراکل، SQLite، اور MariaDB۔ فارمیٹر بنیادی SQL پر توجہ کرتا ہے جو ہر جگہ کام کرتا ہے: SELECT، JOIN، WHERE، GROUP BY وغیرہ۔

ڈیٹابیس کی مخصوص خصوصیات شاید مکمل طور پر فارمیٹ نہ ہوں۔ مثال کے طور پر، PostgreSQL کی array سنٹیکس یا SQL سرور کے مخصوص فنکشنز کو خاص فارمیٹنگ نہیں ملے گی، لیکن وہ فارمیٹر کو نہیں توڑیں گے۔ کوئری پھر بھی پہلے سے زیادہ قابل فہم ہوگی۔

کیا میری SQL کوڈ کسی سرور پر بھیجی جاتی ہے؟

نہیں۔ سب کچھ آپ کے براؤزر میں ہوتا ہے۔ اپنی SQL پیسٹ کریں، اور یہ مقامی طور پر فارمیٹ ہو جائے گی بغیر کسی نیٹ ورک درخواست کے۔ آپ کی کوئریز کبھی آپ کے مشین سے باہر نہیں جاتیں۔

یہ اہم ہے جب آپ پروڈکشن ڈیٹابیس اسکیما یا مالکانہ کاروباری منطق پر کام کر رہے ہوں۔ حساس معلومات کے الگ ہونے یا کسی دوسرے کے سرور پر محفوظ ہونے کا کوئی خطرہ نہیں ہے۔

کیا ویلیڈیٹر تمام SQL غلطیاں پکڑ سکتا ہے؟

بالکل نہیں۔ یہ صرف ڈھانچے اور سنٹیکس کی مسائل پکڑتا ہے - گمشدہ براکٹس، بند نہ کی گئی کوٹس، غلط ترتیب میں کلاسز۔ بس اتنا۔

یہ یہ نہیں جان سکتا کہ آپ کے ٹیبل کے نام غلط ہیں، ڈیٹا ٹائپس غیر متوافق ہیں، یا آپ کی کوئری 10 منٹ چلے گی۔ اس کے لیے، آپ کو اپنا اصل ڈیٹابیس چاہیے۔ اس ویلیڈیٹر کو SQL کے لیے اسپیل چیک سمجھیں، مکمل کوئری تجزیہ کار نہیں۔

(باقی ترجمہ جاری رہے گا...)

حوالے اور مزید مطالعہ

اپنے SQL کو فارمیٹ کرنا شروع کریں

قابل فہم SQL ڈیبگنگ کو تیز، کوڈ ریویو کو آسان اور تعاون کو ہموار بناتا ہے۔ اپنا کوئری اوپر پیسٹ کریں تا کہ اسے صنعت کے معیار کے مطابق فارمیٹ کیا جا سکے - کوئی انسٹالیشن نہیں، کوئی کنفیگریشن نہیں، کوئی ڈیٹا آپ کے براؤزر سے باہر نہیں جاتا۔