SQL #Ders 11 | Top Operatörü
SQL dersimizin bu yeni serisinde TOP fonksiyonunu göreceğiz. TOP fonksiyonu ile herhangi bir sorgu sonucunun istediğimiz kadarını veya istediğimiz bir biçimde limit belirleyerek gösterimini sağlayacağız. TOP fonksiyonu hayatımıza MS SQL 2005 ile birlikte girmiştir. Geçmişten günümüze bazı değişim veya gelişimlere uğramıştır, örneğin TOP fonksiyonu daha önceleri sadece SELECT komutu ile birlikte kullanılırken MS SQL 2012 ile birlikte INSERT, UPDATE, DELETE komutları ile birlikte de kullanılabilmektedir. Ayrıca TOP anahtar kelimesi yaygın olarak ORDER BY ile birlikte kullanılmaktadır. TOP fonksiyonu ile kullanılan bir diğer komut ise PERCENT komutudur. PERCENT kullanım şekli olarak tablodaki kayıtların yüzde(%) olarak gösterimini sağlamaktadır.
Örnek Öğrenci Tablomuz:
RID | Ad | Soyad | Yas |
---|---|---|---|
1 | Ahmet | Tarık | 10 |
2 | Mehmet | Yılmaz | 8 |
3 | Ali | Hakkı | 14 |
4 | Veli | Aydın | 12 |
TOP Operatörünün SELECT İle Kullanımı
Bu script örneğinde sorgumuz bize tablodaki kayıtlardan ilk 2 adet kaydı getirecektir.
Örnek Script:
SELECT TOP 2 * FROM ogrenci;
Ekran Çıktısı:
RID | Ad | Soyad | Yas |
---|---|---|---|
1 | Ahmet | Tarık | 10 |
2 | Mehmet | Yılmaz | 8 |
TOP Operatörünün PERCENT İle Kullanımı
Bu scirpt örneğinde ise komutumuz bize tablonun ilk baştaki kayıtlardan yüzdelik olarak yazdığımız değer kadar olan kaydı getirecek. Örneğin 4 öğrenci kaydımız mevcut. Biz burada TOP fonksiyonundan sonra 50 PERCENT yazdığımızda bize tablodaki kayıt adedinin %50’sini yarısı yani 2 adet öğrencinin kaydını getirecektir. Veya TOP 75 PERCENT yazsaydık kayıtların %75’ini alacağı için 4 adet öğrencide 3’ünü bizlere getirecektir.
Örnek Script
SELECT TOP 50 PERCENT AD FROM ogrenci;
Ekran Çıktısı:
RID | Ad | Soyad | Yas |
---|---|---|---|
1 | Ahmet | Tarık | 10 |
2 | Mehmet | Yılmaz | 8 |
TOP Operatörünün INSERT İle Kullanımı
Bu örneğimizde ise komutumuz bize tablonun ilk baştaki kayıtlardan belirtmiş olduğumuz adet kadar yeni kayıt ekler. Örnek tablomuza göre listenin başındaki Ahmet adındaki öğrenciden tablonun altına 1 adet daha kayıt ekledi. Eğer TOP 2 yazsaydık Ahmet ve Mehmet adındaki öğrencilerden 1’er adet daha tablomuzun altına ekleyecekti, burada gireceğimiz sayı veya rakam tablodaki kayıt adedini geçmemelidir. Tablodaki sayı adedini geçseniz bile bir sorun olmayacaktır ancak tablodaki sayı adedi kadar alta ekleme yapacaktır.
Örnek Script
INSERT TOP(1) INTO dbo.ogrenci(Ad,Soyad,Yas)
SELECT Ad, Soyad, Yas FROM ogrenci
Ekran Çıktısı:
RID | Ad | Soyad | Yas |
---|---|---|---|
1 | Ahmet | Tarık | 10 |
2 | Mehmet | Yılmaz | 8 |
3 | Ali | Hakkı | 14 |
4 | Veli | Aydın | 12 |
5 | Ahmet | Tarık | 10 |
TOP Operatörünün UPDATE İle Kullanımı
Bu örneğimizde ise komutumuz bize tablonun ilk baştaki kayıtlardan belirtmiş olduğumuz adet kadarını güncellememize olanak tanır. Örnek tablomuza göre listenin başındaki Ahmet ve Mehmet adındaki öğrencilerimizin yaşlarını 1 yaş yükseltmek istiyoruz diyelim. Bu durumda uygulayacağımız örnek aşağıdaki gibidir.
Örnek Script
UPDATE TOP(2) dbo.ogrenci SET Yas = Yas + 1;
Ekran Çıktısı:
RID | Ad | Soyad | Yas |
---|---|---|---|
1 | Ahmet | Tarık | 11 |
2 | Mehmet | Yılmaz | 9 |
3 | Ali | Hakkı | 14 |
4 | Veli | Aydın | 12 |
5 | Ahmet | Tarık | 10 |
TOP Operatörünün DELETE İle Kullanımı
Bu örneğimizde ise komutumuz bize tablonun ilk baştaki kayıtlardan belirtmiş olduğumuz adet kadarını silebilmemizi sağlıyor. Örnek tablomuza göre listenin başındaki Ahmet adındaki öğrencimizden 2 adet kayıt var biz bunlardan baştakini silmek istiyoruz. Bu durumda uygulayacağımız örnek aşağıdaki gibidir.
Örnek Script
DELETE TOP(1) ogrenci;
Ekran Çıktısı:
RID | Ad | Soyad | Yas |
---|---|---|---|
1 | Mehmet | Yılmaz | 9 |
2 | Ali | Hakkı | 14 |
3 | Veli | Aydın | 12 |
4 | Ahmet | Tarık | 10 |
Bu dersimizde bu kadardı. Script örneklerini yazarken kullanımlarımda bir birlerinden ufak tefek farklılar olacak şekilde yazdım mesela birinde parantezler yok birinde dbo. yok birinde noktalı virgül yok gibi bazı değişikler olmasına rağmen kodlar aynı şekilde çalışmaktadır. Burada bunlara da dikkat çekebilmek için birbirlerinden farklı olarak yazdım. Bir sonraki dersimizde görüşmek üzere…