§

SQL sorgularını biçimlendir

Lehçe
Girinti
Anahtar kelime büyüklüğü
Cümle öncesi satır sonu
§

SQL yapıştırın

§

Biçimlendirilmiş SQL

Trendyol İstanbul'un veri mühendisliği ekibi, dbt projelerinde sql-formatter'ı pre-commit hook olarak çalıştırarak BigQuery deposundaki her sorgunun PR farkı yalnızca mantık değişikliğini yansıtsın diye biçimlendirmeyi zorunlu kılıyor. Bir mühendis 200 satırlık CTE'yi elle biçimlendirip diğeri tek satır olarak yapıştırdığında fark anlamsız gürültüye boğuluyor. Getir'in BigQuery teslimat analitiği ekibi aynı dbt stil rehberini uygulayarak review döngülerini kısaltıyor. Insider'ın B2B SaaS platformu ise Snowflake'teki raporlama sorgularını, KVKK kapsamındaki müşteri verileri dışarı çıkmasın diye tarayıcı tabanlı bu araçla biçimlendiriyor; SQL metni hiçbir zaman ağı terk etmiyor.

SQL biçimlendirme nasıl çalışır

SQL biçimlendirme, sorgudaki her token üzerinde yürüyen ve seçilen lehçe kurallarına göre çevresindeki boşlukları yeniden yayımlayan bir sözcüksel yeniden yazım işlemidir. Sorgu anlambilimi hiçbir zaman değişmez; yalnızca düzen farklılaşır.

  1. Lehçeyi seçin. MySQL backtick'leri, PostgreSQL :: cast'leri, BigQuery noktalı tablo yolları ve T-SQL köşeli parantez tanımlayıcıları — her biri onları tanıyan bir tokenizer gerektirir. Lehçe seçici hangi dilbilgisinin uygulanacağını belirler.
  2. Girdiyi tokenize edin. Biçimlendirici sorguyu bir token akışına böler: anahtar kelimeler (SELECT, JOIN), tanımlayıcılar, değişmezler, operatörler, parantezler ve yorumlar. Dize değişmezleri ve tırnak içindeki tanımlayıcılar dokunulmadan iletilerek lehçeye özgü söz dizimi çalışmaya devam eder.
  3. Düzen kurallarını uygulayın. Üst düzey cümleler (SELECT, FROM, WHERE, GROUP BY, ORDER BY) kendi satırlarında başlar. Seçim listesindeki ve sütun listelerindeki virgülle ayrılmış her ifade, seçilen girinti birimiyle girintilenerek ayrı bir satır alır.
  4. Anahtar kelime büyüklüğünü uygulayın. Anahtar kelime büyüklüğü geçiş düğmesi, tanınan SQL anahtar kelimelerini büyük harfe, küçük harfe yeniden yazar veya giriş büyüklüğünü aynen korur. Tanımlayıcılara hiçbir zaman dokunulmaz — sütun ve tablo adları her zaman yazıldığı gibi çıkar.
  5. Biçimlendirilmiş dizeyi yayımlayın. Token akışı, girinti karakteri (2 boşluk, 4 boşluk veya sekme) ve yapılandırılan satır sonu kuralıyla tek bir dizeye yeniden birleştirilir. Canlı mod, yazarken 200 ms geri bildirim gecikmesiyle tüm işlem hattını yeniden çalıştırır.

SQL neden düzgün yazdırılmalı

  • Pull-request farkı okunabilirliği. 200 satırlık CTE'yi tek satır olarak yeniden yazmak bir kod incelemesini tahmin oyununa dönüştürür. Tutarlı biçimlendirme farkı gerçekten yapılan değişiklikle sınırlar — yeni bir sütun, fazladan bir JOIN, farklı bir WHERE yüklemi — böylece incelemeci boşlukları çözümlemek zorunda kalmadan görebilir.
  • Daha kolay hata ayıklama. Bir sorgu yanlış satır sayısı döndürdüğünde ilk yapılan şey onu satır satır okumaktır. Biçimlendirilmiş SQL her JOIN'i kendi satırına koyar ve WHERE yüklemlerini hizalar; böylece eksik AND veya yanlış OR ilk bakışta ortaya çıkar.
  • Tutarlı takım stili. Çoğu takım bir SQL stil rehberi benimser (dbt Labs, GitLab, Mode Analytics kendi rehberlerini yayımlar) ve her teslim edilen sorgunun buna uymasını ister. Commit öncesi çalıştırılan bir biçimlendirici stil tartışmasını incelemeden çıkarır; geriye yalnızca mantık tartışması kalır.
  • SQL'i belgelerde paylaşmak. Runbook'lar, olay retrospektifleri ve Notion belgelerinin tamamı, yukarıdan aşağıya okunan SQL'den yararlanır. Biçimlendirilmiş SQL, çitlenmiş kod bloğuna temiz yapıştırılır ve PDF dışa aktarmalarında öngörülebilir şekilde yazdırılır; anahtar kelime ortasında garip satır kırılması olmaz.

Yaygın uygulamalar

SQL biçimlendirme; analitik mühendislik, arka uç geliştirme ve operasyonlarda, bir sorgunun onu yazmayan biri tarafından okunması gerektiği her durumda karşımıza çıkar.

  • Analitik mühendislik: dbt projesindeki pre-commit hook her model dosyasını yeniden biçimlendirerek PR farklarının yalnızca mantık değişikliklerine odaklanmasını sağlar, boşluk karışıklığına değil.
  • Veritabanı yönetimi: tek satırlık yavaş sorgu günlüğü girişini yapıştırın, biçimlendirin ve olay retrospektifini yazarken birleştirme sırasını inceleyin.
  • Belgeleme: Looker explore veya Tableau workbook'tan bir sorguyu alın, runbook için biçimlendirin ve nöbet rotasyonu için kopyalanabilir örnek olarak gömin.

Uygulamalı bir örnek

SELECT u.id,u.email,COUNT(o.id) 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.email ORDER BY u.id; ifadesini lehçe PostgreSQL, girinti 2 boşluk ve anahtar kelime büyüklüğü BÜYÜK olarak ayarlanmış şekilde giriş bölmesine yapıştırın. Çıktı SELECT, FROM, LEFT JOIN, WHERE, GROUP BY ve ORDER BY ifadelerini kendi satırlarına yerleştirir; seçim listesindeki ve group-by listesindeki her sütun kendi girintili satırını alır; ON yüklemi ise ait olduğu JOIN anahtar kelimesinden bir girinti daha derin durur.

FAQ

Hangi SQL lehçeleri destekleniyor?

Lehçe açılır menüsü şunları kapsar: Standart SQL, MySQL, PostgreSQL, SQLite, MariaDB, Transact-SQL (SQL Server / Azure SQL), BigQuery, Snowflake ve Redshift. Temel sql-formatter kütüphanesi ayrıca DuckDB, Spark SQL, Hive, Trino, Db2, N1QL, PL/SQL, ClickHouse, TiDB ve SingleStoreDB'yi de tanır — tam hedef listede olmasa bile en yakın lehçeyi seçmek makul çıktı üretir. Tanımlayıcılar, dize değişmezleri ve lehçeye özgü operatörler (PostgreSQL @>, BigQuery SAFE. önekleri) aynen korunur.

Bu araç SQL'imi doğruluyor mu?

Hayır. Biçimlendirici sözcüksel bir yeniden yazıcıdır, ayrıştırıcı değil. Girdiyi tokenize eder, düzen kurallarını uygular ve sonucu yayımlar; sorgunun anlambilimsel olarak geçerli olup olmadığını, başvurulan tabloların var olup olmadığını ya da söz diziminin seçilen lehçede yasal olup olmadığını kontrol etmez. Gerçek doğruluk kontrolü için biçimlendirilmiş çıktıyı gerçek veritabanından (veya SQLFluff gibi bir SQL linter'dan) geçirin.

Anahtar kelimelerim neden büyük harfe dönüştürülüyor?

Anahtar kelime büyüklüğü açılır menüsü varsayılan olarak BÜYÜK'e ayarlıdır; bu, yayımlanan çoğu SQL stil rehberinin (dbt Labs, Mode, GitLab) benimsediği kuraldır. Takımınız select / from ifadelerini küçük harfle yazıyorsa küçük seçeneğine geçin; çıktının yazdığınız büyüklüğü korumasını istiyorsanız Koru seçeneğini kullanın. Tanımlayıcılar hiçbir zaman etkilenmez — yalnızca tanınan anahtar kelime kümesi yeniden yazılır.

Sorgum herhangi bir yere yükleniyor mu?

Hayır. Yerleşik sql-formatter kütüphanesi tarayıcınızda çalışır, biçimlendirme makinenizde yerel olarak gerçekleşir ve sorgu metni ağa hiçbir zaman çıkmaz. Bu sayfanın yaptığı tek giden istek, tools.ultim8soft.com'daki her sayfanın yaptığı ortak analitik ve reklam istekleriyle aynıdır; SQL metni bunların hiçbirinin parçası değildir.

Biçimlendirici işi üstlendiğinde SQL'i düzgün yazdırmak bir stil tartışması olmaktan çıkar. Araç tamamen tarayıcınızda çalışır, sorgu sayfayı terk etmez ve sql-formatter npm paketine güç veren lehçe farkında tokenizer yeniden yazım işlemini gerçekleştirir.