من سطر طويل إلى استعلام يسهل مراجعته
قد يظهر SQL المنسوخ من سجلات التطبيق أو من ORM في سطر واحد. يوزع المنسق العبارات على أسطر ويضيف مسافات بادئة للأجزاء المتداخلة، لتتمكن من تتبع الأعمدة وشروط JOIN دون إعادة ترتيب النص يدويًا. تبقى الشيفرة باتجاه من اليسار إلى اليمين داخل الواجهة العربية.
ألصق الاستعلام واختر اللهجة، ثم حدد مسافتين أو أربع مسافات أو علامات جدولة. اختر حالة أحرف الكلمات المحجوزة واضغط تنسيق SQL. تظهر النتيجة في حقل مستقل ويبقى الأصل متاحًا. عند تغيير الإدخال أو الإعدادات تُمسح النتيجة السابقة، لذا أعد التنسيق قبل نسخها.
اختر لهجة قاعدة البيانات الأصلية
تتوفر SQL القياسية وPostgreSQL وMySQL وMariaDB وSQLite وSQL Server (T-SQL) وOracle SQL وBigQuery وSnowflake. يساعد الاختيار الصحيح في التعرف على طرق كتابة المعرّفات والكلمات الخاصة بكل قاعدة بيانات.
تغيير اللهجة لا يحول الاستعلام إلى قاعدة بيانات أخرى، ولا يستبدل الدوال أو يعدّل بنية الجداول. كما أن خيار Oracle SQL لا يعني دعم جميع الإجراءات المخزنة. استخدم اللهجة التي كُتب بها الاستعلام.
التنسيق يساعد على القراءة والمراجعة
فصل WHERE عن HAVING يوضح موضع شروط الصفوف وشروط المجموعات. وتبيّن المسافات البادئة مستويات الاستعلامات الفرعية وCTE. لكن التنسيق لا يحدد إن كانت الشروط تحقق الغرض المطلوب أو إن كانت النتيجة صحيحة.
يؤثر خيار حالة الأحرف في الكلمات المحجوزة التي يتعرف عليها المنسق. تبقى حالة أحرف المعرّفات وأسماء الدوال وأنواع البيانات كما هي، ولا تُملأ المعلمات بقيم. تُحفظ التعليقات، مع احتمال تغيير مواضعها أو مسافاتها. راجع الناتج ضمن سياق قاعدة البيانات قبل استخدامه.
أمثلة على تنسيق SQL
تستخدم الأمثلة بيانات افتراضية وكلمات محجوزة بأحرف كبيرة ومسافتين للمسافة البادئة. عند تحميل مثال في المحرر تُختار لهجته أيضًا.
الربط والتجميع
تجميع الطلبات المدفوعة حسب العميل ثم تصفية المجموع. تظهر شروط الربط وتصفية الصفوف والمجموعات في مواضع منفصلة.
SELECT
c.id,
c.name,
count(o.id) AS order_count,
sum(o.total) AS revenue
FROM
customers c
JOIN orders o ON o.customer_id = c.id
WHERE
o.status = 'paid'
GROUP BY
c.id,
c.name
HAVING
sum(o.total) > 1000
ORDER BY
revenue DESC;العودة إلى المنسق ↑CTE ودالة نافذة
مثال PostgreSQL يستخدم ROW_NUMBER لترتيب طلبات كل عميل داخل CTE. يوضح التنسيق بنية SELECT المتداخلة.
WITH
ranked_orders AS (
SELECT
id,
customer_id,
total,
row_number() OVER (
PARTITION BY
customer_id
ORDER BY
created_at DESC
) AS position
FROM
orders
WHERE
created_at >= date '2024-01-01'
)
SELECT
customer_id,
id,
total
FROM
ranked_orders
WHERE
position = 1
ORDER BY
customer_id;العودة إلى المنسق ↑INSERT والتعليقات
مثال MySQL يتضمن معرّفات محاطة بعلامات اقتباس خلفية وتعليقًا وفاصلة منقوطة داخل قيمة نصية.
-- Fictional seed data
INSERT INTO
`products` (`sku`, `name`, `price`)
VALUES
('DEMO-01', 'Desk lamp; warm light', 29.95),
('DEMO-02', 'Reader''s notebook', 8.50);العودة إلى المنسق ↑الأسئلة الشائعة
كيف أحفظ النتيجة؟
انسخ SQL المنسق أو نزّله باسم formatted.sql. يمكنك أيضًا بدء التنسيق باستخدام Ctrl+Enter أو Command+Enter على macOS.
هل يُرسل الاستعلام إلى خادم؟
تجري المعالجة داخل Web Worker في المتصفح. لا ترسل الأداة الاستعلام إلى واجهة API للتنسيق، ولا تتصل بقاعدة بيانات، ولا تحفظ الإدخال حفظًا دائمًا أو تضعه في عنوان URL.
هل تتحقق الأداة من صحة SQL أو تحسن الأداء؟
لا. ترتّب المسافات والأسطر والكلمات المحجوزة فقط. لا تفحص الجداول أو الأعمدة أو الأنواع أو الصلاحيات أو خطط التنفيذ. استخدم أدوات قاعدة البيانات للتحقق وتحليل الأداء.
هل يمكن تنسيق عدة عبارات معًا؟
نعم، افصل عبارات SQL العادية بفاصلة منقوطة. تبقى الفاصلة المنقوطة داخل سلسلة نصية معروفة جزءًا من البيانات. الفواصل المخصصة والإجراءات المخزنة وأوامر برامج العميل ليست ضمن نطاق الاستخدام المدعوم.
ماذا أفعل عند ظهور خطأ؟
تحقق من اللهجة وتطابق علامات الاقتباس والأقواس. قد لا يتعرف المنسق على صيغ القوالب أو تعبيرات التطبيق المضمنة. الحد 50,000 حرف وتتوقف المهمة بعد عشر ثوانٍ؛ قسّم النصوص الطويلة إلى أجزاء.
هل تبقى التعليقات والعناصر النائبة؟
تُحفظ التعليقات، لكن ترتيبها قد يتغير. لا تستبدل الأداة العناصر النائبة المدعومة في اللهجة المختارة بقيم. وقد تترك تعليقات تعطيل المنسق بعض الأجزاء دون تنسيق.
