تم توحيد SQL منذ عام 1987 ويتم الحفاظ عليه كـ ايزو/آي إي سي 9075، على الرغم من أن كل محرك يضيف لهجته الخاصة في الأعلى - وهذا هو بالضبط سبب ضرورة تحليل المنسق بدلاً من مطابقة النمط.
أسوأ استفسار اضطررت إلى مراجعته على الإطلاق كان 340 سطرًا حول فكرة منطقية واحدة: تقرير إيرادات لـ Laravel SaaS، مكتوب كواحد DB::select() سلسلة أولية، تم إنشاؤها على مدار ثمانية أشهر بواسطة ثلاثة مطورين كان لكل منهم فكرة مختلفة عن الكتابة بالأحرف الكبيرة وليس لديهم أي فكرة عن فواصل الأسطر. في مكان ما في جدار النص هذا، أ LEFT JOIN لقد أصبح بهدوء INNER JOIN أثناء عملية إعادة البناء، اختفى العملاء الذين لم يتلقوا أي طلبات من التقرير. كان الخطأ كلمة واحدة. استغرق العثور عليه يومًا ونصف - ليس لأن المنطق كان صعبًا، ولكن لأن الاستعلام كان كذلك غير مقروء، والكود غير القابل للقراءة يخفي أخطاءه على مرأى من الجميع.
هنا #39؛s الشيء المتعلق بـ SQL: قاعدة البيانات لا تهتم بالتنسيق الخاص بك. يقرأ المحلل اللغوي select id,name from users where active=1 و SELECT id, name FROM users WHERE active = 1 كما أن نفس العبارة، تنتج نفس خطة التنفيذ، وتعيد نفس الصفوف في نفس الوقت. تنسيق SQL مخصص للبشر فقط - وهذا هو بالضبط سبب استحقاقه '؛s، لأن البشر هم الذين يقومون بمراجعته، وتصحيح أخطائه في الساعة 2 صباحًا، ويرثونه بعد ثلاث وظائف. الاستعلام الذي يمكنك '؛t skim هو استعلام يمكنك '؛t التحقق.
آن منسق SQL يحول أي استعلام - تم لصقه من سجل، أو مخرج تصحيح أخطاء ORM'؛s، أو رسالة Slack '؛s، وهي إجراء مخزن قديم - إلى SQL ذات مسافة بادئة باستمرار، ومغلفة بشكل متسق، وقابلة للمراجعة بنقرة واحدة. يعمل الاستعلام الموجود على Toolz.dev بالكامل في متصفحك، وهو أمر مهم بالنسبة لـ SQL أكثر من أي نص آخر تقريبًا '؛d يتم لصقه في أداة عبر الإنترنت، لأن استعلامات الإنتاج تحمل مخططك وأحيانًا بياناتك.
يغطي هذا الدليل كيفية استخدامه، واتفاقيات التنسيق التي تهم بالفعل (غلاف الكلمات الرئيسية، والمسافة البادئة، وحرب الفاصلة الأبدية)، وسير العمل حيث يدفع المنسق تكاليفه يوميًا.
ليرة تركية؛DR: لصق أي استعلام في Toolz.dev SQL المنسق واسترجع SQL ذات مسافة بادئة باستمرار ومغلفة بالكلمات الرئيسية - فوري ومجاني ومن جانب العميل ولا يوجد تسجيل. لا يغير التنسيق أبدًا ما يفعله الاستعلام أو مدى سرعة تشغيله؛ فهو يغير ما إذا كان الإنسان يستطيع التحقق منه. الاتفاقيات التي تستحق اعتمادها: الكلمات الرئيسية الكبيرة، جملة واحدة في كل سطر، مسافة بادئة تحت كل جملة، واختيار نمط الفاصلة والتوقف عن الجدال حولها. إقرانها مع تنسيق JSON لطبقة API الموجودة أعلى قاعدة البيانات الخاصة بك و أداة فرق النص لمقارنة نسختين من الاستعلام.
الميزات الرئيسية
مسافة بادئة متسقة بنقرة واحدة
الحركة الأساسية لـ formatter'؛s: كل جملة رئيسية - SELECT، FROM، WHERE، GROUP BY، ORDER BY - يبدأ السطر الخاص به، مع وضع مسافة بادئة للأعمدة والشروط والوصلات أسفله. هذا هو "؛ سائق واقتباس؛ يتم مسح قراء SQL ذوي الخبرة من خلال البنية: تجري العين أسفل الحافة اليسرى لقراءة الكلمات الرئيسية للجملة، ثم تغوص في أي جملة مهمة. استعلام منسق مكون من 60 سطرًا مع مراجعات واضحة للبنية أسرع من 6 أسطر غير منسقة، لأن الهيكل يقوم بنصف القراءة بالنسبة لك. كانت قصة الرعب المكونة من 340 سطرًا عبارة عن مراجعة مدتها عشرين دقيقة بهذا الشكل - كان من الممكن أن يكون نوع الانضمام المتغير موجودًا بمفرده على خطه الخاص، وهو خطأ واضح.
تطبيع حالة الكلمة الرئيسية
SELECT مقابل select حقا لا '؛ لا يهم أي قاعدة بيانات - الكلمات الرئيسية SQL غير حساسة لحالة الأحرف وفقًا للمعيار، وكل لهجة تحترم ذلك. ومع ذلك، فهو مهم للغاية لقاعدة التعليمات البرمجية، لأن الغلاف المختلط عبارة عن ضوضاء مرئية تجعل الاستعلامات المتطابقة هيكليًا تبدو مختلفة. الكلمات الرئيسية ذات الأحرف الكبيرة هي التقليد الأقدم، والتي يرجع تاريخها إلى المحررين دون تمييز بناء الجملة، حيث SELECT في القبعات كان تسليط الضوء. ما زلت أكتب أحرفًا كبيرة - الكلمات الرئيسية تظهر مقابل معرفات الأحرف الصغيرة، وهي تبقى على قيد الحياة في كل سياق يقوم بتجريد التمييز: السجلات، والاختلافات، والبريد الإلكتروني ذو النص العادي، والإخراج الطرفي. يتم تطبيع المنسق وفقًا للاتفاقية التي اخترتها، لذا فإن قاعدة التعليمات البرمجية التي كتبها خمسة أشخاص تبدو وكأنها مكتوبة بواسطة شخص واحد.
يتعامل مع ORM وإخراج السجل
الاستعلامات الأكثر احتياجًا إلى التنسيق هي تلك التي لم يكتبها أي إنسان: مخرجات Eloquent وActiveRecord، والانضمامات التي تم إنشاؤها في Doctrine'؛، والوحوش ذات السطر الواحد في سجل الاستعلام البطيء الخاص بك. يصل إخراج ORM كسطر واحد بأسماء مستعارة تم إنشاؤها بواسطة الآلة (t0، t1، laravel_reserved_0)، وقراءته بشكل خام هي كيفية إصابتك بالصداع. استخدامي الوحيد الأكثر شيوعًا للمنسق: احصل على الاستعلام من سجل الاستعلام أو التلسكوب الخاص بـ Laravel'؛ وقم بتنسيقه، وشاهد فعليًا ما قررت ORM القيام به - وهي الخطوة الأولى في كل "؛ لماذا نقطة النهاية هذه بطيئة وحاصل؛ التحقيق، قبل ذلك مباشرة EXPLAIN.
التسامح متعدد اللهجات
Real-world SQL هي عائلة من اللهجات: معرفات MySQL'؛s المقتبسة من علامة الظهر، PostgreSQL'؛s علامات الاقتباس المزدوجة و :: casts، SQL Server'؛s بين قوسين مربعين و TOP، SQLite'؛s كل شيء سهل. يتعامل المنسق المفيد مع كل هذه الأمور دون مطالبتك بإعلان اللهجة أولاً، مع الحفاظ على بناء الجملة الخاص باللهجة بدلاً من "؛ التصحيح والاقتباس؛ هو - هي. يحدد معيار ANSI/ISO SQL (ISO/IEC 9075) النواة المشتركة، لكن لا أحد يكتب SQL قياسيًا خالصًا في الممارسة العملية، والمنسق الذي يتحدث فقط عن المعيار سوف يختنق عند أول علامة خلفية.
يحافظ على الدلالات، مضمونة
يستحق أن يذكر صراحة لأنه '؛s الخوف الذي يوقف الأشخاص: لا يمكن للتنسيق تغيير النتائج. المسافة البيضاء وحالة الكلمات الرئيسية ليست دلالية في SQL - التحذير التاريخي الوحيد هو ذلك سلسلة حرفية تتم مقارنتها بحساسية حالة الأحرف أو لا تعتمد على الترتيب الخاص بك، ولا يلمس المنسق أبدًا الجزء الداخلي من سلاسلك المقتبسة. الإخراج هو نفس العبارة، بايت مقابل بايت حيث البايتات مهمة. يجري EXPLAIN في كلا الإصدارين إذا كنت تريد رؤيته: خطط متطابقة.
جانب العميل، وهو ما يهم هنا بالفعل
SQL هي فئة النص الأكثر حساسية والتي يتم لصقها بشكل روتيني في الأدوات عبر الإنترنت. تكشف الاستعلامات عن المخطط الخاص بك - تحتوي أسماء الجداول وأسماء الأعمدة والعلاقات والاستعلامات المنسوخة من السجلات بشكل متكرر على قيم حرفية: رسائل البريد الإلكتروني الموجودة WHERE الجمل، ونطاقات المعرفات، وأحيانًا شيء لم يكن من المفترض أن يكون موجودًا في سلسلة استعلام على الإطلاق. ال منسق Toolz.dev يعالج كل شيء في متصفحك؛ لا يتم نقل أي شيء. بالنسبة لـ SQL على وجه التحديد، I'؛d استدعاء المعالجة من جانب العميل كمتطلب، وليس ميزة - تحقق من ذلك في علامة تبويب الشبكة ثم استرخ.
كيفية استخدام منسق SQL
الخطوة 1: التقاط الاستعلام
انسخ SQL من مصدره: ملف الترحيل الخاص بك، أو الإجراء المخزن، أو إخراج تصحيح الأخطاء ORM'؛s (DB::listen() أو التلسكوب في لارافيل، ActiveRecord::Base.logger في Rails)، أو سجل الاستعلام البطيء، أو علامة تبويب الاستعلام الخاصة بأداة APM الخاصة بك. إذا جاء من سجل، فقد يكون قد أفلت من علامات الاقتباس أو العناصر النائبة للمعلمات (?، $1) - هذا '؛s جيد، حيث يتعامل المنسقون مع العناصر النائبة، وغالبًا ما تكون رؤيتها بوضوح هي الهدف.
الخطوة 2: اللصق والتنسيق
افتح ال تنسيق SQL، لصق، وتظهر النسخة المنسقة. لا يوجد حفل لهجة، ولا يلزم تكوين للحصول على افتراض جيد. إذا كان استفسارك يتضمن عبارات متعددة مفصولة بفواصل منقوطة، فسيتم تنسيقها كعبارات منفصلة - وهو مفيد لقراءة البرامج النصية للترحيل بالكامل.
الخطوة 3: اقرأها كمراجع
الآن هل يوجد تنسيق للشيء: قم بمسح الحافة اليسرى ضوئيًا. ما هي الجداول المرتبطة، وبأي أنواع الانضمام؟ هل WHERE البند لديه الشروط التي تتوقعها - وهي AND/OR المجموعات بين قوسين بالطريقة التي أنت يفكر هم تجميع؟ (أسبقية المشغل في SQL تضع AND قبل OR، والمزيج غير المقوس بين قوسين هو ثاني أكبر مصدر للأخطاء أراه في المراجعة، مباشرة بعد أنواع الانضمام الخاطئة.) يجعل Formatted SQL كلا الخطأين مرئيين في ثوانٍ.
الخطوة 4: انسخه مرة أخرى - بشكل انتقائي
بالنسبة للاستعلامات الموجهة إلى قاعدة التعليمات البرمجية الخاصة بك، انسخ الإصدار المنسق إلى الترحيل، ->select() التعبير الخام، .sql ملف. لتصحيح الأخطاء لمرة واحدة، لا '؛ تهتم بالتعثر ذهابًا وإيابًا؛ خدمت النسخة المنسقة غرضها لحظة قراءتها. مكان واحد لا للصق SQL المنسق: العودة إلى الأنظمة التي تخزن الاستعلامات كسلاسل تكوين حيث ستظهر الآن أدوات فرق شخص ما & #39؛ جدارًا من تغييرات المسافات البيضاء. تنسيق للقراءة دائمًا؛ إعادة تنسيق الاستعلامات المخزنة فقط عندما تكون أنت و#39؛ مستعدان لامتلاك الفرق.
الخطوة 5: توحيد اتفاقية الفريق
القيمة الأكبر لـ Formatter'؛ هي التركيب: اختر الاصطلاحات التي يمكنك أتمتتها - حالة الكلمة الرئيسية وعرض المسافة البادئة هما العنصران اللذان يتحكم فيهما هذا المنسق مباشرة - قم بتنسيق كل شيء جديد في الطريق إلى قاعدة التعليمات البرمجية، وينخفض احتكاك مراجعة SQL بشكل دائم. اكتب الاختيار في دليل المساهمة الخاص بك. إن الاصطلاح المحدد الذي تم اختياره أقل أهمية بكثير من أي شخص يستخدم نفس الشيء - وهي جملة تنطبق على كل مناقشة تنسيق في البرنامج ولا يصدقها أحد تقريبًا في منتصف المناقشة.
الغوص العميق الفني: الاتفاقيات تستحق إبداء الآراء بشأنها
غلاف الكلمة الرئيسية. الكلمات الرئيسية الكبيرة والمعرفات الصغيرة هي الاصطلاح السائد وتوصيتي. الحجة هي '؛ التقليد - it'؛s المتانة. يختفي تمييز بناء الجملة في السجلات والمحطات الطرفية وتعليقات مراجعة التعليمات البرمجية وإجابات Stack Overflow الملصقة في Slack؛ تسلط الكلمات الرئيسية الكبيرة الضوء على ما ينتقل مع النص. الحجة المضادة (كل شيء بأحرف صغيرة، دع المحرر يسلط الضوء) متماسكة وI'؛ لقد عملت في قواعد التعليمات البرمجية التي استخدمتها بسعادة. ما '؛ هو الخلط، وهو ما تحصل عليه دون أن يفرض المنسق الاختيار.
جملة واحدة في كل سطر، محتويات ذات مسافة بادئة. القاعدة الهيكلية ذات العائد الأعلى. SELECT يبدأ سطرًا؛ يتم وضع مسافة بادئة لأعمدتها أدناه (أو على نفس السطر إذا كانت قصيرة). كل JOIN يحصل على خط خاص به مع ON الحالة مرئية - شروط الانضمام المخفية في خط الوسط هي المكان الذي تختبئ فيه أخطاء الانضمام الخاطئ. WHERE تكدس الشروط واحدًا في كل سطر، ومحاذيًا، مع AND/OR يؤدي كل سطر إلى قراءة البنية المنطقية عموديًا. عند قراءة شروط الاستعلام '؛ كعمود، يكون الشرط المفقود مرئيًا على شكل فجوة في النمطأي عيون الإنسان جيدة بشكل استثنائي في اكتشافها.
حرب الفاصلة. الفواصل الخلفية (بعد كل عمود) تقرأ بشكل طبيعي؛ الفواصل البادئة (قبل كل عمود، عند بداية السطر) تجعل علامات الترقيم هيكلية:
-- Trailing (most common)
SELECT
u.id,
u.email,
o.total
-- Leading (the DBA classic)
SELECT
u.id
, u.email
, o.total
لدى المدافعين عن الفاصلة الرائدة نقطتان جيدتان حقًا: التعليق على أي سطر باستثناء السطر الأول لا يكسر العبارة أبدًا، وتظهر الفاصلة المفقودة على الفور على الهامش الأيسر. لدى المدافعين عن الفاصلة الزائدة واحدة: تبدو مثل كل لغة أخرى تكتبها. أكتب فواصل زائدة وتوقفت عن الشعور بالسوء حيال ذلك - لكن لاحظ أن SQL، على عكس JavaScript أو Python الحديثين، تفعل ذلك لا اغفر فاصلة متدلية بعد العمود الأخير، ولهذا السبب يوجد هذا النقاش على الإطلاق ولماذا يرفض النمط الرئيسي الموت في دوائر DBA. الكشف الكامل: يأخذ منسق Toolz.dev الجانب السائد ويصدر فواصل زائدة - ليس لديه وضع فاصلة بادئة، لذلك إذا كنت أنت '؛ متجر فاصلة بادئة ملتزم، فهذا هو التقليد الوحيد الذي فاز به '؛ إعادة التنسيق بالنسبة لك. اختر نمط المنزل، وقم بتطبيقه باستمرار، واستمر.
ما التنسيق لا يفعل. لا '؛ تحسين. تنسيق SELECT * عبر وصلة مكونة من خمسة جداول توجد مشكلة أداء ذات مسافة بادئة جميلة. التنسيق هو شرط مسبق من أجل التحسين - لا يمكنك التفكير في استعلام لا يمكنك قراءته - ولكن المنطق لا يزال يتطلب ذلك EXPLAIN، فهرس الوعي ومعرفة بياناتك وشكل #39؛s. أفكر في خط الأنابيب على النحو التالي: التنسيق، القراءة، EXPLAIN، ثم تحسين. تخطي الخطوة الأولى لا '؛ يجعلك أسرع؛ فهو يجعل الخطوات من الثانية إلى الرابعة أبطأ. يطبق نفس التخصص طبقة واحدة في واجهة برمجة التطبيقات، ولهذا السبب دليل منسق JSON يقدم حجة متطابقة هيكليا حول الحمولات.
التعليقات تبقى على قيد الحياة. على عكس التصغير، يحافظ التنسيق على التعليقات - -- تعليقات الخط و /* */ الكتل تأتي من خلال سليمة. استخدمها. أ -- deliberately LEFT JOIN: include customers with no orders التعليق الموجود أعلى الانضمام هو أرخص تأمين ضد الأخطاء تمت كتابته على الإطلاق، وهو '؛s التعليق الذي تحتاجه قصة الرعب المكونة من 340 سطرًا.
حالات الاستخدام الشائعة
مراجعة الكود
Sql غير المنسق في طلب السحب هو مراجعة '؛ سيحدث - تنزلق عيون المراجع '؛ من جدار النص وتهبط الموافقة على أي حال. يعد تنسيق الاستعلام قبل فتح العلاقات العامة أمرًا أساسيًا مع مكافأة قابلة للقياس: تصبح أنواع الانضمام ومجموعات الشروط وقوائم الأعمدة مرئية بشكل فردي، مما يعني أنها تصبح قابلة للمراجعة بشكل فردي. كل خطأ SQL حقيقي I'؛ تم القبض عليه في المراجعة - الانضمام الخاطئ، غير المقوس OR، ال DELETE النصف المفقود WHERE الجملة - لقد اشتعلت لأن الاستعلام تم تنسيقه بشكل جيد بما يكفي لقراءة سطر بسطر.
تصحيح أخطاء الاستعلامات التي تم إنشاؤها بواسطة ORM
تعد ORMs رائعة حتى تصبح نقطة النهاية بطيئة، وعند هذه النقطة تحتاج إلى رؤية SQL الفعلي - ويكون مخرج ORM دائمًا خطًا كثيفًا واحدًا. قم بتنسيقه وتظهر القصة: N+1 الذي أخطأ التحميل المتلهف، وتم إضافة تعريف العلاقة بصمت، و ORDER BY على عمود غير مفهرس. في عمل لارافيل، هذه طقوس عدة مرات أسبوعيًا: التلسكوب، النسخ، تنسيق، جفل، أصلح الكود البليغ، كرر. المنسق لا '؛ يشخص أي شيء بنفسه؛ فهو يجعل الاستعلام مقروءًا بدرجة كافية أنت يستطيع.
علم الآثار على الاستفسارات التراثية
يحتوي عليها كل نظام طويل العمر: الإجراء المخزن من عام 2015، وعرض التقارير الذي لا يجرؤ أحد على لمسه، والاستعلام المضمن في ملف تكوين مع تنسيق المؤلف الأصلي '؛s (أي لا شيء). قبل تعديل SQL القديم، قم بتنسيقه وقراءته من طرف إلى طرف - you'؛ ستجد بشكل روتيني الشروط التي يمكن '؛ تكون صحيحة على الإطلاق، وتنضم إلى الجداول التي لم تعد تتلقى عمليات الكتابة، وتنطق افتراضات الفريق '؛ الحالية تتعارض. تنسيق المنعطفات الأولى والاقتباس؛ استعلام واقتباس قديم مخيف؛ في "؛ استعلام طويل ولكن مقروء، "؛ وهي مشكلة مختلفة وأفضل.
مقارنة إصدارات الاستعلام
عندما تتغير أرقام التقرير '؛s بين الإصدارات، يكون السؤال هو "؛ ما الذي تغير في الاستعلام، "؛ وتتطلب الإجابة التمييز بين نسختين - وهو ما يعمل فقط إذا تم تنسيقهما بشكل متطابق أولاً. قم بتنسيق كليهما بنفس الإعدادات، ثم قم بتشغيلهما من خلال أداة فرق النص: يختفي الضجيج ويقف الخطان المتغيران بمفردهما. وجد هذا التسلسل الدقيق خطأ الانضمام الداخلي الخاص بي، في النهاية. أنا الآن أفعل ذلك قبل يوم ونصف من الارتباك بدلا من بعده.
التدريس والتوثيق
تتم قراءة SQL في البرامج التعليمية والكتب التدريبية والمستندات الداخلية عدة مرات أكثر مما تتم كتابته، من قبل قراء أقل دراية بالمخطط من المؤلف. من الأسهل التعلم من الأمثلة المنسقة التي تحتوي على كلمات رئيسية كبيرة وبنية مفهوم واحد لكل سطر - حيث يتم تدريس البنية جنبًا إلى جنب مع المحتوى. عندما أكتب وثائق تحتوي على استعلامات مضمنة، يمر كل واحد عبر المنسق أولاً؛ يخبر SQL غير المنسق في المستندات القارئ أن المؤلف لم يفعل '؛ ولا تتوقع من أي شخص أن يقرأها بالفعل.
مقارنة اتفاقيات التنسيق
| اختيار الاتفاقية | الخيار أ | الخيار ب | رأيي |
|---|---|---|---|
| حالة الكلمة الرئيسية | SELECT (أحرف كبيرة) |
select (أحرف صغيرة) |
الأحرف الكبيرة - تبقى في السياقات دون تسليط الضوء عليها |
| حالة المعرف | snake_case | تعريفات جدول المطابقة | مطابقة التعريفات؛ لا تحارب المخطط أبدًا |
| الفواصل | زائدة (id,) |
الرائدة (, id) |
زائدة، ولكن القيادة يمكن الدفاع عنها - فقط اختر واحدة |
| تخطيط الجملة | جملة واحدة في كل سطر | خط واحد مدمج | واحد في كل سطر لأي شيء الماضي تافه |
AND/OR موضع |
يقود كل سطر شرط | زائدة الخط السابق | الرائدة - يقرأ المنطق عموديًا |
| شروط الانضمام | ON على خطها الخاص أو على خط مع JOIN |
مدفون خط الوسط | مرئية مع الانضمام، دائما |
| عرض المسافة البادئة | 2 مساحات | 4 مساحات | إما؛ أعشاش SQL أقل من JSON، لذا 4 جيد هنا |
لا يحتوي أي من هذه الصفوف على إجابة خاطئة، وهذا '؛ هو الفخ على وجه التحديد - نظرًا لأنه يمكن الدفاع عن كل خيار، تعيد الفرق التقاضي بشأنه إلى الأبد ما لم يتخذ المنسق القرار ميكانيكيًا. الخطوة الفائزة مملة: اختر كل شيء وقم بتكوينه وتنسيقه وقضاء وقت الوسيطة المستصلحة في الأشياء التي تؤثر على خطة التنفيذ. بالنسبة لبقية مجموعة الأدوات اليومية حول هذه المجموعة، راجع دليل أدوات الترميز والأوسع مجموعة أدوات مطور الويب.
أسئلة وأجوبة
ماذا يفعل منسق SQL؟
يقوم منسق SQL بإعادة كتابة المسافة البيضاء للاستعلام '؛ وفواصل الأسطر وغلاف الكلمات الرئيسية في بنية متسقة وقابلة للقراءة - كل جملة على السطر الخاص بها، والشروط والأعمدة ذات مسافة بادئة، والكلمات الرئيسية تم تطبيعها إلى حالة واحدة. معنى البيان '؛ لم يمس: يتجاهل موزعو SQL التنسيق تمامًا، وبالتالي فإن الاستعلام المنسق يُرجع نتائج متطابقة بخطة تنفيذ متطابقة. التغيير مخصص فقط للبشر الذين يقومون بمراجعة الاستعلام وتصحيح أخطائه والحفاظ عليه.
هل يؤدي تنسيق SQL إلى تغيير أداء الاستعلام؟
لا تعد المسافة البيضاء وحالة الكلمات الرئيسية دلالية في SQL - تقوم قاعدة البيانات بتوزيع كلا الإصدارين في نفس التمثيل الداخلي وتنتج نفس خطة التنفيذ، والتي يمكنك التحقق منها عن طريق التشغيل EXPLAIN على كل. التنسيق هو الشرط المسبق لأداء العمل بدلاً من أداء العمل نفسه: يمكنك '؛ سبب الفهارس وترتيب الانضمام في استعلام يمكنك '؛ قراءة.
هل يجب أن تكون كلمات SQL الرئيسية بأحرف كبيرة أم صغيرة؟
كلاهما صالح - الكلمات الرئيسية لـ SQL غير حساسة لحالة الأحرف وفقًا للمعيار - لذا فهذه اتفاقية سهولة القراءة وليست قاعدة صحة. الكلمات الرئيسية الكبيرة (SELECT، FROM، WHERE) يظل الخيار الأكثر شيوعًا لأنه يعمل بمثابة تمييز مدمج في السياقات التي تقوم بتجريد الألوان: السجلات، والفرق، والمحطات الطرفية، والرسائل النصية العادية. أيًا كان اختيارك، فإن الاتساق عبر قاعدة التعليمات البرمجية مهم أكثر بكثير من الاختيار نفسه.
ما هي الفواصل البادئة في SQL ولماذا يستخدمها الأشخاص؟
يضع نمط الفاصلة البادئة الفاصلة في بداية كل سطر عمود (, email) بدلا من نهاية السابق. يحب المدافعون ذلك لأن التعليق على أي عمود باستثناء الأول لا ينتج عنه خطأ في بناء الجملة، والفواصل المفقودة مرئية على الفور على الهامش الأيسر - مزايا حقيقية، حيث أن SQL لا '؛ لا تتحمل الفاصلة المتدلية بعد العمود الأخير بالطريقة التي تفعلها JavaScript الحديثة. تظل الفواصل الزائدة أكثر شيوعًا؛ إما يعمل إذا تم تطبيقه باستمرار.
هل يمكنني تنسيق SQL الذي تم إنشاؤه بواسطة ORM مثل Eloquent أو ActiveRecord؟
نعم، وهو '؛ أحد أفضل استخدامات المنسق - يصل مخرج تصحيح أخطاء ORM كخط واحد كثيف بأسماء مستعارة تم إنشاؤها بواسطة الآلة، والتنسيق هو الخطوة الأولى لتشخيص نقاط النهاية البطيئة ومشاكل N+1. التقط الاستعلام من تسجيل ORM'؛s (Laravel Telescope، ActiveRecord logs)، والصقه في تنسيق SQL، واقرأ ما بناه ORM بالفعل قبل الوصول إليه EXPLAIN.
هل يعمل المنسق مع بناء جملة MySQL وPostgreSQL وSQL Server؟
نعم - يتعامل المنسقون العمليون مع اللهجات الرئيسية '؛ المراوغات، والحفاظ على علامات MySQL الخلفية، ومعرفات PostgreSQL ذات علامات الاقتباس المزدوجة و :: القوالب والأقواس المربعة لـ SQL Server بدلاً من إعادة كتابتها. يحدد معيار ANSI SQL النواة المشتركة، ولكن لا توجد قاعدة بيانات إنتاج تتحدث عن SQL قياسي خالص، لذا فإن التسامح مع اللهجة يعد شرطًا لكي يكون المنسق مفيدًا في الاستعلامات الحقيقية.
هل من الآمن لصق استعلامات الإنتاج في منسق SQL عبر الإنترنت؟
فقط من جانب العميل، لأن SQL حساسة بشكل غير عادي: تعرض الاستعلامات مخططك، وغالبًا ما تحتوي الاستعلامات المنسوخة من السجلات على قيم حرفية مثل رسائل البريد الإلكتروني أو المعرفات WHERE شروط. ال Toolz.dev SQL المنسق يعالج كل شيء في متصفحك دون نقل أو تخزين أي شيء - تحقق منه بنفسك من خلال مشاهدة علامة تبويب الشبكة أثناء اللصق. تجنب التنسيقات المستندة إلى الخادم لأي شيء من الإنتاج.
هل يحافظ التنسيق على تعليقات SQL؟
نعم كلاهما -- تعليقات الخط و /* */ تمر التعليقات المحظورة سليمة، على عكس التصغير الذي يحذفها. وهذا يجعل التنسيق آمنًا للاستعلامات المشروحة والإجراءات المخزنة حيث تحمل التعليقات نية. استخدم ذلك: تعليق من سطر واحد يشرح بشكل متعمد LEFT JOIN أو أن الحالة غير العادية هي أرخص حماية ضد المطور التالي "؛fixing"؛ شيء كان '؛t مكسور.



