Bir SQL ifadesinin anatomisi
SQL, İngilizceye benzeyen bir dildir. Bir sorgu ifadelerden (statement), ifadeler de yan cümlelerden (clause) oluşur: SELECT ..., FROM ..., WHERE ....
-- Bu bir yorum satırıdır; motor bu satırı okumaz SELECT name, price -- hangi sütunlar? FROM products /* hangi tablo? */ WHERE category = 'Kitap' -- hangi satırlar? ORDER BY price DESC; -- hangi sırayla? (; ifadenin sonu)
Kurallar
| Kural | Açıklama |
|---|---|
| Büyük/küçük harf | Anahtar kelimelerde fark etmez: select = SELECT. Okunabilirlik için anahtar kelimeleri BÜYÜK, tablo ve sütunları küçük yazmak yaygındır. |
| Boşluk ve satır | Boşluk ve satır sonu fark etmez; uzun sorguları her yan cümle ayrı satırda olacak şekilde yaz. |
| Noktalı virgül | İfadenin sonunu gösterir. Birden fazla ifade çalıştırırken zorunludur; tek ifadede çoğu araç affeder. |
| Metin sabiti | Tek tırnak: 'Kitap'. Metnin içinde tek tırnak varsa iki kez yazılır: 'Ali''nin'. |
| Tanımlayıcı | Boşluk veya ayrılmış kelime içeren tablo/sütun adları için: SQL Server [ad], PostgreSQL ve Oracle "ad", MySQL ve BigQuery `ad`. |
| Yorum | Tek satır -- ..., çok satır /* ... */. MySQL'de # de kullanılır. |
| Sayılar | Ondalık ayırıcı noktadır: 12.5. Binlik ayırıcı yazılmaz. |
Çift tırnak tuzağıPostgreSQL ve Oracle'da
WHERE city = "İzmir" yazarsan motor “İzmir” adında bir sütun arar ve hata verir. Metinler her zaman tek tırnaklıdır.Mantıksal yazım sırası
Yan cümleler şu sırayla yazılır (hepsi zorunlu değildir): SELECT → FROM → JOIN → WHERE → GROUP BY → HAVING → ORDER BY → LIMIT. Sırayı karıştırmak (WHERE'i GROUP BY'dan sonra yazmak gibi) sözdizimi hatası verir.
SELECT category, COUNT(*) AS urun FROM products WHERE price > 500 GROUP BY category HAVING COUNT(*) >= 3 ORDER BY urun DESC;
Biçimlendir düğmesiEditördeki Biçimlendir düğmesi sorgunu bu kurallara göre otomatik düzenler.