SQL, Structured Query Language (Yapılandırılmış Sorgu Dili) ifadesinin kısaltmasıdır. İlişkisel veritabanlarında veri okumak, eklemek, güncellemek ve silmek için kullanılır. Bu işlemlerin en sık yapılanı veri okumaktır ve bunun komutu SELECT‘tir.
Örnek Tablo
Aşağıdaki örneklerde kullanicilar adında bir tablo olduğunu varsayalım:
id | ad | sehir | yas
1 | Ahmet | Ankara | 25
2 | Elif | İzmir | 31
3 | Mehmet | Ankara | 42
4 | Zeynep | Antalya | 28
Tablo satırlardan (kayıt) ve sütunlardan (alan) oluşur.
Tüm Veriyi Çekmek
SELECT * FROM kullanicilar;
* tüm sütunlar anlamına gelir. Gerçek projelerde yalnızca ihtiyacınız olan sütunları yazmak daha doğrudur.
Belirli Sütunları Seçmek
SELECT ad, sehir FROM kullanicilar;
Sonuçta yalnızca ad ve sehir sütunları gelir.
WHERE ile Filtreleme
SELECT ad FROM kullanicilar WHERE sehir = 'Ankara';
Bu sorgu Ahmet ve Mehmet’i döndürür. Metin değerleri tek tırnak içinde yazılır. Karşılaştırma için kullanabileceğiniz işleçler şunlardır:
=eşittir<>veya!=eşit değildir>,<,>=,<=büyük ve küçük karşılaştırmalarıBETWEEN 20 AND 30iki değer arasındaLIKE 'A%'belirli bir kalıba uyan metinlerIN ('Ankara', 'İzmir')listedeki değerlerden biri
Koşulları AND ve OR ile birleştirebilirsiniz:
SELECT ad, yas FROM kullanicilar
WHERE sehir = 'Ankara' AND yas > 30;
ORDER BY ile Sıralama
SELECT ad, yas FROM kullanicilar ORDER BY yas DESC;
ASC küçükten büyüğe (varsayılan), DESC büyükten küçüğe sıralar.
LIMIT ile Kayıt Sayısını Sınırlamak
SELECT ad FROM kullanicilar ORDER BY yas DESC LIMIT 2;
En yaşlı iki kullanıcıyı getirir. MySQL ve PostgreSQL LIMIT kullanır. SQL Server’da bunun karşılığı TOP‘tur.
COUNT ile Sayım
SELECT COUNT(*) FROM kullanicilar WHERE sehir = 'Ankara';
Sonuç 2 olur. AVG, SUM, MIN ve MAX gibi diğer toplama fonksiyonları da benzer şekilde kullanılır.
GROUP BY ile Gruplamak
SELECT sehir, COUNT(*) AS kisi_sayisi
FROM kullanicilar
GROUP BY sehir;
Her şehir için kaç kullanıcı olduğunu verir. AS ile sütuna takma ad verilir.
Güvenlik Notu
Web uygulamalarında kullanıcıdan gelen değeri sorgu metnine doğrudan eklemeyin. Her zaman hazırlanmış ifadeler (prepared statements) kullanın. Aksi halde uygulamanız SQL injection açığına maruz kalır.
Özet
Bir sorgunun genel sırası şöyledir: SELECT hangi sütunlar, FROM hangi tablo, WHERE hangi kayıtlar, GROUP BY nasıl gruplanacak, ORDER BY nasıl sıralanacak, LIMIT kaç kayıt. Bu yapıyı bir kez oturttuğunuzda karmaşık sorgular da aynı mantığın uzantısı olarak görünür.


Yorumlar
Henüz yorum yok. İlk yorumu siz yazın.