SQL biçimlendirici nedir, neden kullanılır?
SQL, veritabanlarıyla konuşmanın ortak dilidir; raporlar, web uygulamaları, muhasebe yazılımları ve veri ambarları aynı SELECT, INSERT ve UPDATE komutlarıyla çalışır. Ne var ki uygulama kayıtlarından (log), bir ORM aracının hata ekranından ya da bir iş arkadaşınızın mesajından kopyaladığınız sorgu çoğu zaman yüzlerce karakterlik tek bir satır hâlinde gelir. Hangi JOIN'in hangi tabloya bağlandığını, WHERE koşulunun nerede bittiğini, GROUP BY'ın hangi sütunları kapsadığını görmek böyle bir metinde gerçekten zordur. SQL biçimlendirici (İngilizce kaynaklarda SQL formatter ya da SQL beautifier) sorguyu ayrıştırır, her ana bölümü kendi satırına alır, sütun listelerini ve koşulları girintiyle hizalar. Sonuçta mantık hatasını fark etmek, sorguyu kod incelemesinde tartışmak ya da belgeye eklemek kolaylaşır.
Bunun tersi de sık gerekir. Bir sorguyu uygulama koduna gömmek, bir yapılandırma dosyasına yazmak ya da sohbet uygulamasında paylaşmak için yorumlardan ve gereksiz boşluklardan arındırılmış kısa bir sürüm istenir. Bu sayfadaki Küçült modu bunu dize değerlerine ve tırnaklı adlara dokunmadan yapar. İki işlem de tamamen tarayıcınızda gerçekleşir; sorgunuz hiçbir sunucuya gönderilmez ve hiçbir veritabanında çalıştırılmaz.
Nasıl kullanılır?
- SQL metnini üstteki kutuya yapıştırın ya da bir
.sqldosyasını kutuya sürükleyip bırakın. Dosya tarayıcınızda okunur, içeriği kutuya yerleşir ve isterseniz orada düzenlemeye devam edebilirsiniz. Denemek için "Örnek SQL" düğmesini de kullanabilirsiniz. - Sorgunun yazıldığı veritabanına uygun lehçeyi seçin: MySQL, MariaDB, PostgreSQL, SQL Server (T-SQL), SQLite, Oracle PL/SQL ya da BigQuery. Emin değilseniz "Standart SQL" ile başlayın; hata alırsanız lehçeyi değiştirin.
- Anahtar kelimelerin büyük mü küçük mü yazılacağını, girinti genişliğini (2 boşluk, 4 boşluk ya da sekme) ve ifadeler arasında kaç boş satır bırakılacağını belirleyin.
- "Biçimlendir" düğmesine basın ya da kutudayken Ctrl+Enter kısayolunu kullanın. Tek satırlık çıktı istiyorsanız "Küçült"e basın. Seçenekleri sonradan değiştirirseniz son işlem kendiliğinden yeniden uygulanır.
- Sonucu "Kopyala" ile panoya alın ya da "
.sqlolarak indir" ile kaydedin. Dosya, Türkçe karakterleri koruyan UTF-8 kodlamasıyla kaydedilir.
Örnek: önce ve sonra
Aşağıdaki tek satırlık sorgu, Standart SQL lehçesi, büyük harfli anahtar kelimeler ve 2 boşluk girinti seçiliyken şu hâle gelir:
select a,b from t where id=1
SELECT
a,
b
FROM
t
WHERE
id = 1
Küçült modunda ise SELECT a -- yorum ile başlayıp alt satırda FROM t ile devam eden bir sorgu, yorum atılarak SELECT a FROM t olur. Tırnak içindeki 'a;b' ya da 'x -- y' gibi değerler ise yorum veya ifade sonu sanılmaz, aynen kalır.
Seçenekler ne işe yarar?
SQL lehçesi. Veritabanları temel SQL'i paylaşsa da tırnaklama ve yorum kuralları farklıdır. MySQL ve BigQuery tablo adlarını ters tırnakla (`siparis`), SQL Server köşeli parantezle ([Sipariş Tarihi]) yazar; PostgreSQL $$ … $$ biçiminde dolar tırnaklı dizeleri, Oracle q'[ … ]' biçimini kullanır; MySQL ve BigQuery # ile başlayan satırları yorum sayar. Doğru lehçe seçildiğinde bu yapılar tek parça olarak tanınır ve içleri bozulmaz.
Anahtar kelimeler. Ekiplerin çoğu SELECT, FROM, WHERE gibi anahtar kelimeleri büyük, tablo ve sütun adlarını küçük yazmayı tercih eder; böylece sorgunun iskeleti bir bakışta seçilir. "Küçük harf" ve "Olduğu gibi koru" seçenekleri de vardır. "Fonksiyon ve veri tipi adlarına da uygula" işaretliyken COUNT, SUM, VARCHAR gibi adlar da aynı kurala uyar; işareti kaldırırsanız yazdığınız gibi kalırlar.
Girinti ve boş satır. 2 boşluk kısa ve yoğun, 4 boşluk daha ferah bir görünüm verir; sekme seçeneği editöründe sekme kullanan ekipler içindir. Birden fazla ifade varsa aralarına 0 ile 3 arasında boş satır koyabilirsiniz.
Sözdizimi renklendirme. Anahtar kelimeler, dizeler, sayılar, yorumlar ve tırnaklı adlar farklı renklerle gösterilir. Renkler yalnızca ekrandadır; kopyalanan ve indirilen metin düz SQL'dir. Çok büyük çıktılarda tarayıcıyı yormamak için renklendirme kendiliğinden kapanır.
Küçült modu nasıl çalışır?
Küçültme, sorgunun anlamını değiştirmemek için temkinli davranır. Tek satırlık (--) ve çok satırlı (/* … */) yorumlar silinir, art arda gelen boşluk ve satır sonları tek boşluğa indirilir; virgül, noktalı virgül ve parantez çevresindeki boşluklar tamamen kaldırılır. Buna karşılık dize değerleri, tırnaklı tablo ve sütun adları ile Oracle ve MySQL'in /*+ … */ optimizer ipuçları ve /*! … */ sürüm yorumları olduğu gibi bırakılır, çünkü bunlar sorgunun nasıl çalışacağını etkiler. İki belirteç hiçbir zaman birbirine yapıştırılmaz; örneğin 5 - -1 ifadesi 5--1 olup yoruma dönüşmez. Bir fonksiyon adı ile açılan parantez arasındaki boşluk da korunur, çünkü MySQL bazı durumlarda bu boşluğu anlamlı sayar.
İstemci komutları da gözetilir: SQL Server betiklerindeki GO satırları, Oracle SQL*Plus betiklerindeki tek başına / satırları ve MySQL'in DELIMITER komutu kendi satırlarında kalır; bunlar tek satıra alınsaydı betik çalışmazdı. MySQL'de -- işaretinin ardından boşluk gelmezse yorum sayılmadığı da hesaba katılır.
Türkçe karakterler ve büyük "İ" sorunu
Türkçe kullanıcıların sık karşılaştığı bir tuzak vardır: birçok programlama ortamında metni Türkçe kurallarla büyütmek, "i" harfini noktalı "İ" yapar. Böylece insert anahtar kelimesi İNSERT olur ve veritabanı bu komutu tanımaz. Bu araç anahtar kelimeleri dilden bağımsız kuralla büyütür; insert her zaman INSERT, where her zaman WHERE olur. Tablo ve sütun adlarınız (müşteri, şehir, kullanıcı) ve tırnak içindeki değerler ('İsmail', 'Iğdır') ise hiç değiştirilmez. Yine de taşınabilirlik için şema adlarında İngilizce karakterleri tercih etmenizi, Türkçe veriler için doğru karakter kümesi (UTF-8) ve harmanlama (collation) ayarını kullanmanızı öneririz.
Gizlilik: sorgunuz çalıştırılmaz ve gönderilmez
Sorgular çoğu zaman tablo adları, iş kuralları ve hatta müşteri adları, telefon numaraları gibi gerçek veriler içerir. Bu yüzden bu araç hiçbir sunucuya bağlanmaz: biçimlendirme, açık kaynaklı sql-formatter kütüphanesinin (sürüm 15.9.0, MIT lisansı) sitemizde barındırılan kopyasıyla, tarayıcınızın içindeki ayrı bir iş parçacığında (Web Worker) yapılır. Sorgu hiçbir veritabanında çalıştırılmaz, sonuçları hesaplanmaz, kayıt altına alınmaz. Araç bir kez internete bağlıyken kullanıldıktan sonra bağlantı olmadan da çalışır; isterseniz uygulama olarak yükleyip çevrimdışı kullanabilirsiniz.
Bir sınırı da açıkça belirtelim: biçimlendirici yalnızca görünümü düzenler. Tablonun var olup olmadığını, sütun türlerinin uyup uymadığını ya da sorgunun doğru sonucu verip vermediğini denetlemez. Biçimlendirilmiş ya da küçültülmüş sorguyu üretim ortamında kullanmadan önce kendi test ortamınızda çalıştırın.
Neden Bilişim Ajans aracı?
- Sorgunuz cihazınızda kalır. Yükleme, kayıt, çerez ya da izleme kodu yoktur; gizli tablo yapıları ve gerçek veriler içeren sorguları da güvenle yapıştırabilirsiniz.
- Lehçe duyarlı küçültme. Dizeler, tırnaklı adlar, optimizer ipuçları ve GO/DELIMITER satırları korunur; tırnak içindeki noktalı virgül ve çift tire bölünmez.
- Türkçe dostu. Anahtar kelime büyütme "İ" tuzağına düşmez; Windows-1254 kodlamalı eski dosyalar da okunur, hatalar Türkçe ve çözüm önerisiyle gösterilir.
- Tamamen ücretsiz. Hesap açma, günlük kota ya da sahte "premium" sınırı yoktur.
Sık sorulan sorular
Sorgum bir sunucuya gönderiliyor ya da çalıştırılıyor mu?
Hayır. Sorgu yalnızca tarayıcınızın belleğinde metin olarak işlenir; hiçbir veritabanına bağlanılmaz, sorgu çalıştırılmaz ve hiçbir ağ isteği yapılmaz. Sayfayı kapattığınızda hiçbir şey saklanmaz.
Hangi SQL lehçelerini destekliyor?
Standart SQL, MySQL, MariaDB, PostgreSQL, SQL Server (T-SQL), SQLite, Oracle PL/SQL ve Google BigQuery ana seçeneklerdir. Ayrıca Snowflake, Amazon Redshift, IBM Db2, Spark SQL ve Trino/Presto da listededir. Lehçe seçimi tırnakların, yorumların ve özel sözdiziminin doğru tanınmasını sağlar.
"Ayrıştırılamadı" hatası alıyorum, ne yapmalıyım?
Önce doğru lehçeyi seçtiğinizden emin olun; örneğin köşeli parantezli adlar yalnızca T-SQL ve SQLite'ta, ters tırnaklı adlar MySQL ve BigQuery'de tanınır. Hata mesajındaki satır ve sütun numarasına bakın; imleç o konuma gider. Kapatılmamış tırnak, eksik parantez ya da yarım kalmış bir ifade en sık nedenlerdir. Girdiniz hiçbir durumda silinmez.
Küçült modu sorgumun anlamını değiştirir mi?
Hayır. Yalnızca yorumlar silinir ve art arda gelen boşluklar teke indirilir; virgül, noktalı virgül ve parantez çevresindeki boşluklar kaldırılır. Dize değerleri, tırnaklı tablo ve sütun adları, /*+ */ optimizer ipuçları ve /*! */ MySQL sürüm yorumları olduğu gibi kalır. GO, / ve DELIMITER satırları kendi satırında bırakılır.
Anahtar kelimeleri büyütünce Türkçe karakterli adlarım bozulur mu?
Hayır. Yalnızca SELECT, FROM gibi anahtar kelimeler dönüştürülür; müşteri, şehir gibi tablo ve sütun adlarınız ile tırnak içindeki değerler olduğu gibi kalır. Büyütme işlemi dilden bağımsızdır: insert her zaman INSERT olur, Türkçe kurala göre İNSERT olmaz. Bir istisna: anahtar kelime ya da veri tipiyle aynı adı taşıyan sütunlar (lehçeye göre date, text, year gibi) anahtar kelime sanılıp büyüyebilir. Büyük/küçük harfe duyarlı bir veritabanında, örneğin harfe duyarlı harmanlamalı SQL Server'da, Olduğu gibi koru seçeneğini kullanın.
Yorumlar biçimlendirmede korunuyor mu?
Evet. Biçimlendir modu tek satırlık (--) ve çok satırlı (/* */) yorumları yerinde tutar. Yorumları silmek istiyorsanız Küçült modunu kullanın.
Birden fazla ifadeyi aynı anda biçimlendirebilir miyim?
Evet. Noktalı virgülle ayrılmış ifadelerin her biri ayrı biçimlendirilir ve aralarına seçtiğiniz sayıda boş satır konur. Tırnak içindeki noktalı virgüller ifade sonu sayılmaz; örneğin 'a;b' tek bir değerdir.
Büyük .sql dosyalarıyla çalışır mı?
Evet, sınır cihazınızın belleğidir. Biçimlendirme ayrı bir iş parçacığında yapıldığı için sayfa donmaz ve işlemi iptal edebilirsiniz. Tarayıcıyı yormamak için 300 KB'tan büyük çıktılarda renklendirme kapatılır; 5 MB üstündeki girdilerde işlemin birkaç saniye sürebileceği, 50 MB üstünde ise tarayıcıyı uzun süre meşgul edebileceği uyarısı gösterilir. Çok büyük döküm dosyalarını parçalara bölmeniz önerilir.
Saklı yordam ve PL/SQL bloklarını biçimlendirebilir mi?
Basit BEGIN … END blokları ve CREATE PROCEDURE ifadeleri biçimlendirilir, ancak yoğun kontrol akışı içeren yordamlarda girintiler beklediğiniz kadar ayrıntılı olmayabilir. MySQL ya da MariaDB lehçesi seçiliyken DELIMITER satırları olduğu gibi kalır ve // ya da $$ gibi özel ayraçlar her ifadenin sonuna korunarak yazılır. Kütüphane sorguyu çalıştırmadığı ve şemanızı bilmediği için sonuç yalnızca görünüm düzenlemesidir; kodu her zaman kendi ortamınızda test edin.
İlgili araçlar
Veritabanı tasarımı, raporlama ya da kurumunuza özel yazılım ihtiyacınız varsa Bilişim Ajans ekibi yardımcı olur.