SQL Temel Select Sorguları

tarafından
32
SQL Temel Select Sorguları

Genelde MSSQL’ de kullanılan sorgular.Ancak birçoğu SQL sorgular olduğu için örneğin top ifadesi MSSQL de çalışırken MySQL de çalışmayacaktır. Onun yerine LIMIT ifadesi kullanılmaktadır. Çalışmayan olursa google da örneğin bu durum için mysql top kullanımı yazarsanız karşınıza limitin nasıl kullanılacağı çıkacaktır.

Personel tablosundaki tüm listeyi getirir

SELECT * FROM Personel

Sadece istenilen sütundaki verileri gösterir.

SELECT Tc, Ad, Soyad
FROM Personel

Sıralama (Alfabetik veya rakamsal sıralama)
Asc küçükten büyüğe desc tam tersi

SELECT * FROM Personel
ORDER BY Ad ASC --DESC

Önce isme sonra aynı isimde olanları soy isime göre sıralar.

SELECT Ad, Soyad FROM Personel
ORDER BY isim DESC , soyisim DESC

Koşullu sorgu için WHERE anahtar kelimesi kullanılır.
Maaşı bin lira olanları getirir.

SELECT * FROM Personel
WHERE Maas=1000

Maaşı 500 ve 500den küçük olanları getirir.

SELECT * FROM Personel
WHERE Maas<=500

Maaşı 500den küçük olanları ve ismi kadir olanı getirir.

SELECT * FROM Personel
WHERE Maas

İsminde m harfi olanlar

SELECT * FROM Personel
WHERE isim LIKE '%m%'

İsmi k ile başlayanlar

SELECT * FROM Personel
WHERE isim LIKE 'k%'

İsmi r ile bitenler

SELECT * FROM Personel
WHERE isim LIKE '%r'

Üçüncü karakteri ‘h’ ve altıncı karakteri ‘t’ olan kayıtları getirir.

SELECT * FROM Personel
WHERE isim LIKE '__h__t'

Baş harfi ‘a’ veya ‘k’ olanları getirir.

SELECT * FROM Personel
WHERE isim LIKE '%[ak]%'

Soy ismi ‘s’ ile ‘z’ arasındaki tüm harflerden herhangi biriyle başlayanları getirir.

SELECT * FROM Personel
WHERE Soyad LIKE '[s-z]%' AND Soyad LIKE '%a'

Takma sütun adı as’le verilir.
Birden fazla kelime içeriyorsa tırnak arasına yazılmalıdır.

SELECT isim AS Adlar, Maas AS 'Maaşlar Geliri'
FROM Personel

Sütunları birleştirir.

SELECT isim + ' ' + soyisim AS AdSoyad
FROM Personel

Soyadı boş olanları getirir.

SELECT * FROM Personel
WHERE Soyad IS NULL

Doğum tarihi boş olanları göstermesin

SELECT * FROM Personel
WHERE DogumTarihi IS NOT NULL --and Soyad is NULL

Maaşı 1000 ile 2000 arasında olanlar

SELECT * FROM Personel
WHERE Maas BETWEEN 1000 AND 2000

Baş harfi ‘k’ ile ‘z’ arasında olanları getirir.

SELECT * FROM Personel
WHERE isim BETWEEN 'k' AND 'z'

İstenilen sayı kadar veri getirme

SELECT TOP 3 * FROM Personel
ORDER BY Tc DESC

Kayıtların %50sini ve soyadı Kılıç’dan farklı olanları getirir.

SELECT TOP 50 PERCENT * FROM Personel
WHERE Soyad <> 'Kılıç'
ORDER BY Tc ASC

Tanımladığım 3 bölümde çalışan elemanları listele

SELECT * FROM Personel
WHERE BolumNo=1 OR BolumNo=2 OR BolumNo=4
SELECT * FROM Personel
WHERE BolumNo IN(1,2,4)

Zamlı maaşları göster

SELECT Maas AS 'Asıl Maaş', Maas+1000 AS 'Zamlı Maaş'
FROM Personel

İsme göre aynı olanları eler

SELECT DISTINCT isim FROM Personel

İlk 3 harfi ‘meh’ olan tüm verileri getirir.

SELECT * FROM Personel
WHERE LEFT(Ad,3)='meh'

Soyadının son harfi ‘y’ olanları getirir.

SELECT * FROM Personel
WHERE RIGHT(Soyad,1)='y'

Herhangi bir sütundaki veri sayısını getirir.

SELECT COUNT(Tc) FROM Personel

NULL olanları saymaz

SELECT COUNT(DogumTarihi) FROM Personel

Toplam sayıyı getirir. İsmi ‘Mehmet’ olanlar hariç.

SELECT COUNT(*) FROM Personel
WHERE isim<>'Mehmet'

Toplam Maaşı Getirir. 1000 ve 2000 arasında olan maaşları. Sayıyı değil toplamı döndürür.

SELECT SUM(Maas) FROM Personel
WHERE maas BETWEEN 1000 AND 2000

Ortalama Maaşı getirir. 2 türlü yapabilirsiniz.

SELECT SUM(Maas)/COUNT(*) FROM Personel
SELECT AVG(Maas) FROM Personel

BolumNosu en büyük olan kaydı getirir.

SELECT MAX(BolumNo) FROM Personel

Bolumnosu en küçük olan kaydı getirir.

SELECT MIN(BolumNo) FROM Personel

4 tane ‘a’ yerine tek ‘a’ yazar. Yani veriyi değiştirip gösterir.

SELECT isim AS Ad, REPLACE(soyisim,'aaaa','a') AS Soyad
FROM Personel

Len o sütunun karakter uzunluğunu getirir.

SELECT Tc,Ad, Len(Ad) AS 'İsim Uzunluğu' ,Soyad,
Len(Soyad) AS 'Soyad Uzunluğu' FROM Personel

Eğer cast edilmezse iki farklı tür birleştirilemez. Cast değişken türlerini değiştirmek için kullanılır.

SELECT CAST(Tc as varchar) + ' ' + Ad AS 'Olcakmi'
FROM Personel

Yazı tipindeki verileri bölme. 2.parametre başlangıç harfinin sırası. 3.parametre kaç harf gösterileceğini sorar.

SELECT SUBSTRİNG(Ad,1,1) FROM Personel

Soy isimlerin başındaki boşluklar silinir.

SELECT LTRİM(Soyad) FROM Personel

Soy ismin sonundaki boşlukları siler.

SELECT RTRİM(Soyad) FROM Personel

Gruplama İşlemleri

BolumNo ya göre gruplama yapma.

SELECT COUNT(*) AS 'Personel Sayısı',BolumNo 
FROM Personel
GROUP BY BolumNo

Having group by ile kullanılır.
Yani gruplama işleminden sonra da bir koşul konulacaksa having kullanılır. Bölüm numarasına göre personelleri grupla ancak maaşları 3000 liranın üstünde olanları.

SELECT BolumNo, AVG(maas) 
FROM Personel 
GROUP BY BolumNo HAVING AVG(maas) > 3000