SQL Biçimlendirici

Bir günlükten ya da bir ORM'den kopyalanmış tek satırlık bir SQL ifadesini yapıştırın; biçimlendirici onu tutarlı anahtar kelime büyük/küçük harf düzeniyle girintili tümcelere bölsün, SELECT, FROM, WHERE, GROUP BY önüne satır sonları koysun ve projeksiyondaki sütunları hizalasın. MySQL, PostgreSQL, SQL Server, Oracle, SQLite ve BigQuery lehçelerini destekler, her birinin biraz farklı anahtar kelimeleri ve ayrılmış kelimeleri vardır.

Biçimlendirme nasıl çalışır

  1. 1

    SQL'inizi yapıştırın

    Tek satırlık yığın, Hibernate'ten küçültülmüş çıktı, her neyse. `;` ile ayrılan birden çok ifadenin tümü biçimlendirilir.

  2. 2

    Lehçe ve stili seçin

    Lehçe anahtar kelime listesini denetler; stil ise virgül yerleşimini (baştan mı sondan mı), girinti genişliğini ve anahtar kelimelerin büyük/küçük harfini denetler.

  3. 3

    Belirteçler ayrıştırılır, regex ile değiştirilmez

    Bir belirteçleyici; dizeleri, yorumları, parantezleri ve alt sorguları doğru ele alır. Dize değişmezleri aynen korunur.

  4. 4

    Biçimlendirilmiş çıktıyı kopyalayın

    Doğrulanmış SQL: aynı anlam, daha temiz düzen.

Öncesi ve sonrası

Öncesi:

SELECT u.id,u.name,COUNT(o.id) AS orders FROM users u LEFT JOIN orders o ON o.user_id=u.id WHERE u.created_at>='2024-01-01' GROUP BY u.id,u.name HAVING COUNT(o.id)>5 ORDER BY orders DESC LIMIT 50;

Sonrası (baştan virgül, büyük harf anahtar kelimeler, 2 boşluk girinti):

SELECT
    u.id
  , u.name
  , COUNT(o.id) AS orders
FROM users u
LEFT JOIN orders o
  ON o.user_id = u.id
WHERE u.created_at >= '2024-01-01'
GROUP BY u.id, u.name
HAVING COUNT(o.id) > 5
ORDER BY orders DESC
LIMIT 50;

Önemli stil seçimleri

  • Büyük harf ile küçük harf anahtar kelimeler. BÜYÜK HARF gelenekseldir ve gözle taranabilir. Küçük harf, sözdizimi vurgulamalı modern kod düzenleyicilerinde daha temizdir.
  • Baştan ile sondan virgül. Baştan ( , col), tek bir sütunu yorum satırına almayı kolaylaştırır. Sondan (col,), metinde daha doğal okunur.
  • GROUP BY’da virgül yerleşimi. Uzun tümcelerde genellikle satır başına bir, kısalarda satır içi.
  • JOIN girintisi. ON’un bir sonraki satırda (asılı girinti) ya da aynı satırda olması. Uzun koşullar asılı girintiden faydalanır.
  • Alt sorgular. Yalnızca açılış parantezini değil, tüm alt sorguyu girintileyin.

Lehçeye özgü tuzaklar

  • MySQL ters tırnakları ile tanımlayıcılar için PostgreSQL çift tırnakları.
  • WITH CTE’leri, MS SQL, WITH’ten önce ; gerektirir; biçimlendirici bunu halleder.
  • Pencere fonksiyonları, uzun OVER (...) tümceleri, satıra sarılmış PARTITION BY ve ORDER BY’dan faydalanır.
  • BigQuery’nin belirteçleyicinin bozmaması gereken ARRAY_AGG, STRUCT ve tablo son ekleri (*_yyyymmdd) vardır.
  • Oracle’ın (+) dış-birleştirme sözdizimi vardır, biçimlendirici onu korur ama eski olarak işaretler.

Biçimlendiricinin yapmadığı şeyler

  • Hataları düzeltmek, geçersiz bir JOIN geçersiz kalır.
  • SELECT *’ı genişletmek, sütun listeleri şemadan çıkarılmaz.
  • Sorguları optimize etmek, yalnızca düzen, yürütme planları değil.
  • Alt sorguları CTE olarak yeniden yazmak, bu farklı bir konu.

Sık Sorulan Sorular

Hayır, tamamen kozmetiktir. Boşluk, satır sonları ve virgül yerleşimi yer değiştirir, ancak anahtar kelimeler, operatörler, değişmezler ve tanımlayıcılar aynen korunur.

Desteklenir, CREATE TABLE, ALTER, CREATE PROCEDURE, tetikleyiciler. Biçimlendirici, blok yapılarını (BEGIN ... END) ve yordamların içindeki satır devamlarını halleder.

Bozulmamalı, bozulursa muhtemelen bir lehçe uyumsuzluğudur. Lehçeyi değiştirmeyi deneyin. Lütfen sürekli başarısızlıkları bildirin; onları hata olarak ele alırız.

Flink SQL ve Cassandra CQL benzer görünür ama ana akım biçimlendiricilerin bozduğu lehçeye özgü anahtar kelimeleri vardır. Dikkatli kullanın ve çıktının çalıştığını doğrulayın.

İlgili Araçlar

Araç diğer dillerde mevcuttur