Ortak çekirdek, farklı aksanlar
SELECT/FROM/WHERE/JOIN/GROUP BY her yerde aynıdır. Farklar en çok şu alanlarda çıkar:
| İşlem | PostgreSQL | MySQL | SQL Server | Oracle | BigQuery |
|---|---|---|---|---|---|
| İlk N satır | LIMIT n | LIMIT n | TOP n | FETCH FIRST n ROWS ONLY | LIMIT n |
| Metin birleştir | || | CONCAT() | + / CONCAT() | || | CONCAT() / || |
| NULL yerine | COALESCE | IFNULL | ISNULL | NVL | IFNULL |
| Ay başı | DATE_TRUNC('month', d) | DATE_FORMAT(d,'%Y-%m-01') | DATETRUNC(month, d) | TRUNC(d, 'MM') | DATE_TRUNC(d, MONTH) |
| Tarih ekle | d + INTERVAL '7 day' | DATE_ADD(d, INTERVAL 7 DAY) | DATEADD(day, 7, d) | d + 7 | DATE_ADD(d, INTERVAL 7 DAY) |
| Otomatik ID | IDENTITY/SERIAL | AUTO_INCREMENT | IDENTITY(1,1) | IDENTITY/sequence | yok (GENERATE_UUID) |
| Büyük/küçük harf duyarsız arama | ILIKE | varsayılan duyarsız | collation'a bağlı | UPPER() ile | LOWER() ile |
| Prosedürel dil | PL/pgSQL | SQL/PSM | T-SQL | PL/SQL | Scripting |
Ambar dünyasına özgü özellikler
- QUALIFY (Snowflake, BigQuery, Teradata, DuckDB): Pencere fonksiyonu sonucuna göre CTE yazmadan filtreler.
QUALIFY ROW_NUMBER() OVER (...) = 1 - ARRAY / STRUCT ve UNNEST (BigQuery): İç içe veri tipleri.
- Partition ve clustering: Tabloyu tarihe göre bölüp sadece ilgili bölümleri taramak.
Bu uygulamadaHer kod kutusunun üstündeki SQL türü sekmeleri ve alıştırmalardaki “Diğer SQL türlerinde gör” düğmesi, bir sorgunun altı SQL türündeki yazılışını ve çıktısını yan yana görmeni sağlar. Bir SQL türünde geçersiz olan sözdizimini (ör. SQL Server'da LIMIT) yazarsan o SQL türünün vereceği hatayı alırsın. Motor SQLite olduğu için her fark yakalanamaz: yazım hataları ve sık anlam hataları (WHERE'de takma ad, gruplanmamış sütun, koşul toplamı, LIKE harf duyarlılığı) denetlenir; karmaşık sorgularda gerçek motorun vereceği hata burada çıkmayabilir. Yakalanmayan örnekler: SQL Server'da
SELECT "abc" burada metin döner, gerçek motorda QUOTED_IDENTIFIER açıkken sütun adı sayılır. MySQL'de SELECT DISTINCT category ... ORDER BY price burada satır döndürür, sql_mode ayarına göre gerçek motorda hata verebilir. BigQuery'de '5' + 1 burada 6 verir, gerçek motorda farklı davranabilir. 0.1 + 0.2 = 0.3 burada her türde “eşit değil” çıkar, çünkü motor ondalığı kayan nokta tutar; gerçek motorda sabitin türüne bağlıdır. Önemli bir sorguyu gerçek motorunda da dene.Taşınabilir SQL yazmakStandart fonksiyonları (COALESCE, CASE, CAST, pencere fonksiyonları, CTE) tercih et. Lehçeye özgü fonksiyonları tek bir view veya makroda topla.