/*Temel Select İşlemleri*/
--Personel tablosundaki tüm listeyi getirir
SELECT * FROM Personel
--Sadece istenilen sütündaki verileri gösterir.
SELECT Tcno, isim, soyisim, maas FROM Personel
--Bölüm tablosundaki tüm verileri listeler
SELECT * FROM Bolum
--Sıralama (Alfabetik veya rakamsal sıralama)
SELECT * FROM Personel ORDER BY Maas ASC --DESC
--Önce isme sonra aynı isimde olanları soyisime göre sıralar.
SELECT isim, soyisim FROM Personel ORDER BY isim DESC , soyisim DESC
--Koşullu sorgu için WHERE anahtar kelimesi kullanılır.
--Maaşı binlira olanları getirir.
SELECT * FROM Personel WHERE Maas=1000
--Maaşı 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<500 AND isim='kadir'
--İsminde ğ harfi olanlar
SELECT * FROM Personel WHERE isim LIKE '%ğ%'
--İsmi k ile başlayanlar
SELECT * FROM Personel WHERE isim LIKE 'k%'
--İsmi r ile bitenler
SELECT * FROM Personel WHERE isim LIKE '%r'
--İkinci karakteri ‘h’ ve beşinci karakteri ‘t’ olan kayıtları getirir.
SELECT * FROM Personel WHERE isim LIKE '_h__t'
--BAŞ HARFİ A VEYA K OLANLARI GETİRİR
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 soyisim LIKE '[s-z]%' AND soyisim LIKE '%a'
--Takma sütun adı as'le verilir. Birden fazla kelime içeriyorsa tırnak arasına yazılmalı
SELECT isim AS Adlar, Maas AS 'Maaşlar Geliri' FROM Personel
--Sütunları birleştirir.
SELECT isim + ' ' + soyisim AS AdSoyad FROM Personel
--Soy ismi boş olanları getirir.
SELECT * FROM Personel WHERE soyisim IS NULL
--Doğum tarihi boş olanları göstermesin
SELECT * FROM Personel WHERE DogumTarihi IS NOT NULL --and soyisim 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 TcNo DESC
--Kayıtların %50sini ve soyadı ayan'dan farklı olanları getirir.
SELECT TOP 50 PERCENT * FROM Personel WHERE Soyisim <> 'Barlık' ORDER BY TcNo 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 PersonelWHERE 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 WHERE isim='Ahmet'
--İlk 3 harfi kad olan tüm verileri getirir.
SELECT * FROM Personel WHERE LEFT(isim,3)='kad'
--Soyisminin son harfi y olanları getirir.
SELECT * FROM Personel WHERE RİGHT(soyisim,1)='y'
/*Sistem Tanımlı Fonksiyonlar ile İşlemler*/
--Herhangi bir sütundaki veri sayısını getirir.
SELECT COUNT(TcNo) FROM Personel
--NULL olanları saymaz
SELECT COUNT(DogumTarihi) FROM Personel
--Toplam sayıyı getirir.
SELECT COUNT(*) FROM Personel WHERE isim<>'Uğur'
--Toplam Maaşı Getirir.
SELECT SUM(Maas) FROM Personel WHERE maas BETWEEN 1000 AND 2000
--Ortalama Maaşı getirir.
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
--4tane 'a' yeni 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 TcNo,İsim, Len(isim) AS 'İsim Uzunluğu' ,soyisim, Len(soyisim) AS 'Soyisim Uzunluğu' FROM Personel
--Eğer cast edilmezse iki farklı tür birleştirilemez
--cast değişken tülerini değiştirmek için kullanılır.
SELECT CAST(Tcno as varchar) + ' ' + isim AS 'Olcakmi' FROM Personel
--Yazı tipindeki verileri bölme. 2.parametre
--başlangıç harfinin sırası
--3.parametre kaç harf göstericeğini sorar.
SELECT SUBSTRİNG(isim,1,1) FROM Personel
--Soyisimlerin başındaki boşluklar silinir.
SELECT LTRİM(soyisim) FROM Personel
--Soyismin sonundaki boşlukları siler.
SELECT RTRİM(soyisim) FROM Personel
/*Gruplama İşlemleri*/
--Kesinlikle kullanılmaz yanlış bir ifadedir.
SELECT Adi,Soyadi FROM Personel GROUP BY BolumNo
--having group by ile kullanılır.
--yani grouplama işleminden sonra da bir koşul konulacaksa
--having kullanılır.
SELECT BolumNo, COUNT(*) AS 'Çalışan Sayısı',
SUM(Maas) AS 'Toplam Maaş' --,AVG(Maas) AS 'Ortalama Maaş'
FROM Personel
WHERE Maas<2500
GROUP BY BolumNo
HAVİNG BolumNo IN(1,2,5) -- AVG(Maas)>1000
ORDER BY AVG(Maas) ASC