মূল বিষয়বস্তুতে যান

SQL ফরমেটার এবং ভ্যালিডেটর - অনলাইনে বিনামূল্যে SQL কোয়েরি ফরমেট করুন

বিনামূল্যে SQL ফরমেটার এবং ভ্যালিডেটর। স্বয়ংক্রিয়ভাবে সঠিক ইন্ডেন্টেশন এবং বড় অক্ষরে SQL ফরমেট করুন। তাৎক্ষণিকভাবে সিনট্যাক্স ত্রুটি পরীক্ষা করুন। MySQL, PostgreSQL, SQL সার্ভার, Oracle এর সাথে কাজ করে।

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 লেখার সময় এড়িয়ে যায়। এটি আপনার ডেটাবেসের কোয়েরি বিশ্লেষকের জায়গা নেবে না, কিন্তু কোয়েরি চালানোর আগে সাধারণ ভুলগুলি ধরে ফেলবে।

কাঠামোগত ত্রুটিসমূহ

অসমান বন্ধনী জটিল কোয়েরিতে, যেখানে নেস্টেড সাবকোয়েরি থাকে, এটি অত্যন্ত সাধারণ। ভ্যালিডেটর খোলা এবং বন্ধ বন্ধনীর গণনা করে মিসম্যাচগুলি তৎক্ষণাৎ চিহ্নিত করে। আমি দেখেছি ২০০ লাইনের কোয়েরিতে একটি বন্ধনী বাদ পড়ার কারণে উৎপাদন সংক্রান্ত ঘটনা ঘটেছে—এটি সেগুলি শীঘ্রই ধরে ফেলে।

বন্ধ হয়নি এমন স্ট্রিং লিটারাল ঘটে যখন আপনি স্ট্রিং মূল্যের শেষের কোটেশন ভুলে যান। আপনার ডেটাবেস এগুলি তৎক্ষণাৎ প্রত্যাখ্যান করবে, কিন্তু এখানে ধরে ফেলা রাউন্ড ট্রিপ বাঁচায়।

ক্লজ অর্ডারিংয়ের সমস্যা চিহ্নিত হয় যখন ক্লজগুলি ক্রমে থাকে না। উদাহরণস্বরূপ, যদি আপনি HAVING-কে GROUP BY-এর আগে বা WHERE-কে GROUP BY-এর পরে রাখেন, তাহলে ভ্যালিডেটর আপনাকে সতর্ক করবে। এটি 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 = অসম্পূর্ণ এবং অবৈধ। ভ্যালিডেটর এই আংশিক শর্তগুলি ফ্ল্যাগ করে।

HAVING-এর জন্য GROUP BY প্রয়োজন: HAVING ক্লজ গ্রুপ করা ফলাফল ফিল্টার করে, তাই এটি শুধুমাত্র তখনই সার্থক যখন আপনার GROUP BY থাকে। GROUP BY ছাড়া HAVING ব্যবহার করা একটি যৌক্তিক ত্রুটি যা বেশিরভাগ ডাটাবেস প্রত্যাখ্যান করে।

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 = অসম্পূর্ণ (তুলনার মান নেই)
  3. খালি GROUP BY ক্লজ (কোনো কলাম নির্দিষ্ট করা হয়নি)
  4. HAVING count > 10 অপরিভাষিত কলাম নির্দেশ করে

SQL ফরমেটার কখন ব্যবহার করবেন

কোড পর্যালোচনার সময়

কখনো কি একটি ৫০-লাইনের 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 (Python) বা 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 Style Guide বিস্তৃতভাবে গৃহীত কনভেনশন প্রদান করে, এবং এই ধরনের টুলগুলি স্বয়ংক্রিয়ভাবে সেই মানগুলি বাস্তবায়ন করে।

কোড উদাহরণ

উদাহরণ ১: মৌলিক 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

উদাহরণ ২: 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

উদাহরণ ৩: সাবকোয়েরি সহ জটিল কোয়েরি

বিনা ফর্ম্যাটের:

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// JavaScript 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 Server-এর সাথে কাজ করে?

হ্যাঁ, এটি মেজর ডাটাবেসগুলোর মধ্যে সাধারণ SQL সিনট্যাক্স পরিচালনা করে—PostgreSQL, MySQL, SQL Server (T-SQL), Oracle, SQLite, এবং MariaDB। ফর্মেটার মূল SQL-এ ফোকাস করে যা সর্বত্র কাজ করে: SELECT, JOIN, WHERE, GROUP BY, ইত্যাদি।

ডাটাবেস-নির্দিষ্ট বৈশিষ্ট্যগুলি সম্পূর্ণ ভাবে ফর্ম্যাট হতে পারে না। উদাহরণস্বরূপ, PostgreSQL-এর অ্যারে সিনট্যাক্স বা SQL Server-এর বিশেষ ফাংশনগুলি বিশেষ ফর্মেটিংয়ের সুযোগ পাবে না, কিন্তু ফর্মেটার ভেঙে যাবে না। কোয়েরিটি তবুও আগের চেয়ে বেশি পঠনীয় হবে।

আমার SQL কোড কি কোনো সার্ভারে পাঠানো হয়?

না। সবকিছু আপনার ব্রাউজারেই ঘটে। আপনার SQL পেস্ট করুন, এবং এটি স্থানীয়ভাবে ফর্ম্যাট হবে যে কোনো নেটওয়ার্ক অনুরোধ ছাড়াই। আপনার কোয়েরিগুলি কখনোই আপনার মেশিন ছাড়ে না।

এটি তখন গুরুত্বপূর্ণ যখন আপনি উৎপাদন ডাটাবেস স্কিমা বা গোপনীয় ব্যবসায়িক যুক্তি নিয়ে কাজ করছেন। কোনো সংবেদনশীল তথ্য লগ বা অন্য কারও সার্ভারে সংরক্ষিত হওয়ার ঝুঁকি নেই।

ভ্যালিডেটর কি সমস্ত SQL ত্রুটি ধরতে পারে?

বিল্কুল নয়। এটি কাঠামোগত এবং সিনট্যাক্স সমস্যাগুলি ধরে—অসম্পূর্ণ বন্ধনী, বন্ধ হয়নি এমন কোট, ভুল ক্রমে থাকা ক্লজ। শুধুই তাই।

এটি জানবে না যে আপনার টেবিলের নাম ভুল, ডেটা টাইপ অসঙ্গত, বা আপনার কোয়েরি ১০ মিনিট নিবে। সেজন্য আপনার প্রকৃত ডাটাবেস লাগবে। এই ভ্যালিডেটারকে SQL-এর জন্য বানান পরীক্ষা বলে ভাবুন, পুরো কোয়েরি বিশ্লেষক নয়।

SQL ফর্ম্যাট করার কী দরকার যখন ডাটাবেস তা যেভাবেই চালায়?

ডাটাবেসগুলি ফর্মেটিংয়ে যত্ন করে না—তারা কোয়েরিটি যেভাবেই পার্স করে। কিন্তু মানুষ যত্ন করে। যখন আপনার ব্যর্থ কোয়েরি ডিবাগ করতে, বিদ্যমান কোয়েরি পরিবর্তন করতে, বা অন্যের SQL পর্যালোচনা করতে হয়, সঠিক ফর্মেটিং ৩০ সেকেন্ড বনাম ৩০ মিনিটের পার্থক্য তৈরি করে।

ফর্ম্যাটেড SQL আপনাকে যুক্তি ত্রুটিগুলি চিহ্নিত করতে সাহায্য করে। যখন কাঠামোটি পরিষ্কার, আপনি দেখতে পারবেন যে টেবিলগুলি ভুলভাবে যুক্ত হয়েছে কি না বা শর্তগুলি ভুল জায়গায় রাখা হয়েছে কি না।

আমি কি ইন্টেনশন বা কীওয়ার্ড শৈলী কাস্টমাইজ করতে পারি?

বর্তমানে নয়। ফর্মেটার মানক সম্মেলন ব্যবহার করে: আপারকেস কীওয়ার্ড, দুই-স্পেস ইন্টেনশন, পৃথক লাইনে ক্লজ। এগুলি SQL Style Guide অনুসরণ করে যা বেশিরভাগ দল ব্যবহার করে।

যদি আপনার কাস্টম ফর্মেটিংয়ের (ভিন্ন ইন্টেনশন প্রস্থ, লোয়ারকেস কীওয়ার্ড) প্রয়োজন হয়, তাহলে আপনার কনফিগারেবল কমান্ড-লাইন টুল যেমন sqlformat বা ফর্মেটিং সেটিংস সহ IDE প্রয়োজন হবে।

এটি ১০০০-লাইনের স্টোর্ড প্রসিডিউর সাথে কাজ করবে?

এটি বড় কোয়েরিগুলি ফর্ম্যাট করবে, যদিও খুব জটিল স্টোর্ড প্রসিডিউর (১০০০+ লাইন) প্রক্রিয়া করতে কয়েক সেকেন্ড নিতে পারে। ফর্মেটার আপনি যে SQL পেস্ট করবেন তা পরিচালনা করবে, দৈর্ঘ্য নির্বিশেষে।

বিশাল স্টোর্ড প্রসিডিউরের জন্য, আপনি তাদের ছোট অংশে বিভক্ত করতে পারেন বা ব্যবহার করতে পারেন ডাটাবেস-নির্দিষ্ট IDE যা বড় ফাইলগুলির জন্য অনুকূলিত।

ফর্মেটিং কি আমার কোয়েরি চালানোর উপায় পরিবর্তন করে?

না। ফর্মেটিং শুধুমাত্র হোয়াইটস্পেস যোগ করে এবং বড় হাতের অক্ষর পরিবর্তন করে। আপনার ডাটাবেস উভয়কেই উপেক্ষা করে। ফর্ম্যাটেড কোয়েরি সম্পূর্ণ একই ফলাফল দিবে এবং একই পারফরম্যান্সে চলবে যেভাবে আনফর্ম্যাটেড সংস্করণ চলে।

একমাত্র ব্যতিক্রম: যদি ভ্যালিডেটর প্রকৃত সিনট্যাক্স ত্রুটি পায় (অসম্পূর্ণ বন্ধনী, ইত্যাদি), সেগুলি সংশোধন করলে আচরণ পরিবর্তন হবে—কিন্তু শুধুমাত্র "চলে না" থেকে "সঠিকভাবে চলে"।

এটি কোন SQL স্ট্যান্ডার্ড অনুসরণ করে?

ফর্মেটার SQL-92 সম্মেলন অনুসরণ করে SQL:1999 এবং পরবর্তী স্ট্যান্ডার্ডের সাধারণ বৈশিষ্ট্যগুলির সাথে। এটি বেশিরভাগ ডেভেলপাররা দৈনিক লিখে এমন SQL কভার করে—SELECT কোয়েরি, জয়েন, সাবকোয়েরি, CASE স্টেটমেন্ট, উইন্ডো ফাংশন।

SQL:2016 বা SQL:2019-এর খুব নতুন SQL বৈশিষ্ট্যগুলি সনাক্ত নাও হতে পারে, কিন্তু তারা ফর্মেটারকে ভাঙবে না। আপনি শুধু মৌলিক ফর্মেটিং পাবেন বিশেষ পরিচালনার পরিবর্তে।

আমি কি এটি Oracle PL/SQL বা SQL Server T-SQL-এর জন্য ব্যবহার করতে পারি?

মৌলিক কোয়েরির জন্য, হ্যাঁ। প্রক্রিয়াগত কোডের জন্য (PL/SQL ব্লক, নিয়ন্ত্রণ প্রবাহ সহ T-SQL স্টোর্ড প্রসিডিউর), ফর্মেটিংটি সীমিত হবে। টুলটি SELECT, INSERT, UPDATE, DELETE স্টেটমেন্ট এবং তাদের ক্লজগুলিতে ফোকাস করে।

যদি আপনি ডাটাবেস-নির্দিষ্ট প্রক্রিয়াগত কোডে ব্যাপকভাবে কাজ করছেন, তাহলে আপনার ডাটাবেসের মূল IDE (Oracle-এর জন্য SQL Developer, SQL Server-এর জন্য SSMS) পুরো সিনট্যাক্স বুঝে বেহতর ফর্মেটিং প্রদান করবে।

রেফারেন্স এবং আরও পড়ার জন্য

SQL ফরম্যাটিং শুরু করুন

পঠনযোগ্য SQL ডিবাগিং দ্রুত করে, কোড পর্যালোচনা সহজ করে এবং সহযোগিতা আরও মসৃণ করে। আপনার ক্যুয়ারি ব্রাউজারের মধ্যে পেস্ট করুন যাতে এটি শিল্প-মানসম্মত কনভেনশন অনুসারে ফরম্যাট হয়—কোনো ইনস্টলেশন নয়, কোনো কনফিগারেশন নয়, কোনো ডেটা আপনার ব্রাউজার ছাড়ছে না।