منسق SQL

تنسيق استعلامات ⁦SQL⁩

اقرأ الاستعلام الطويل بوضوح أكبر. اختر لهجة قاعدة البيانات لتنظيم الأعمدة وشروط الربط والاستعلامات الفرعية، مع إبقاء النص الأصلي للمقارنة.

محرر الاستعلاماتتنسيق داخل المتصفح · دون تنفيذ ⁦SQL⁩
تحميل مثال
٢١٣ / ٥٠٬٠٠٠ حرف

02 ⁦SQL⁩ بعد التنسيق

يبقى الاستعلام الأصلي دون تغيير

من سطر طويل إلى استعلام يسهل مراجعته

قد يظهر ⁦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⁩ حرف وتتوقف المهمة بعد عشر ثوانٍ؛ قسّم النصوص الطويلة إلى أجزاء.

هل تبقى التعليقات والعناصر النائبة؟

تُحفظ التعليقات، لكن ترتيبها قد يتغير. لا تستبدل الأداة العناصر النائبة المدعومة في اللهجة المختارة بقيم. وقد تترك تعليقات تعطيل المنسق بعض الأجزاء دون تنسيق.

SQL Formatter · GitHub

العودة إلى المنسق