SQL Top Sorgusu ile İlk X Kaydı Listeleme
Veritabanı meraklılarına uzun süreden sonra yeniden merhaba :)
Malum yazılımcı olarak iş yoğunluğumuz fazla olunca artık makale yazmaya bile fırsat bulmakta zorlanıyorum ama hazır boş bir zaman yakalamışken bir SQL makalesi yazayım dedim :)
Önceki veritabanı dersimizde where sözcüğü ile select sorgularında kısıtlamalar yaparak verileri listeliyorduk ancak sadece where kısıtlaması ile milyonlarca datayı tek bir seferde çekmek hem bilgisayara eziyet hem gözlerimize eziyet olurdu.
Dolayısıyla tüm verileri çekmek yerine ilk X kadar veriyi çekmek daha kolay bir veritabanı sorgulaması olacaktır,tabi ileride yeniden bu konulara daha ileri teknikler kullanarak döneceğimiz için birazdan anlatacaklarım oldukça basit gelebilir :)
SQL'de select ile çekilen verilerin misal ilk 100 kaydı alabilmek için "TOP" deyimi kullanılır ve bu deyim yanında listeden gelen kaç veriyi görüntülemek istediğimizi sayısal olarak ifade ederiz.
Format olarak :
Select Top 100 From Tablo
şeklindedir ancak bu sorguyu çalıştırdığımızda hata alırız çünkü ilk 100 kaydı getir dedik ancak select sorgusu çalıştıracağımız için hangi kolonları ya da yıldız (*) işaretini yazmadık.Bu yüzden Top 100 dedikten sonra ister * işareti koyarak tüm tabloları:
Select Top 100 * From Tablo
şeklinde çağırabilir ya da sadece belli kolonların olduğı ilk 100 kaydı:
Select Top 100 Kolon1,Kolon2,Kolon3... From Tablo
ile listeleyebiliriz.
Örnek olarak BakkalDB veritabanımızın müşterilerini basit bir select sorgusu ile listeleyelim:
Gördüğünüz gibi 75 müşteriyi listeledik ancak kurumsal bir firmada binlerce müşteriyi tek seferde çağırmak yerine neden parça parça çağırmıyoruz?
Bu örneğimizde ise 75 müşterini sadece ilk 10 adedini çağıralım:
Artık ilk 10 müşteriyi çağırdık,şimdi ise tüm kayıtları değil sadece adı ve soyadını görüntüleyerek ilk 10 müşteriyi listeleyim:
Böylece 75 kayıt içerisinde oldukça basit bir filtreleme yapmadık ve dikkat ederseniz where koşulunu bile kullanmadık :)
Hazır where koşulu demişken adı "Kemal" olan ilk 10 kayıttaki müşteriyi çağıralım,burada yapacağımız şey normal bir select koşulundaki gibi top deyimi içeren sorgumuzun sonuna bildiğimiz where koşulunu yazmak olacak:
İlk 10 müşteri içerisinde adı "Kemal" olan müşterimiz mekanı cennet olsun Kemal Sunal oluyor.SQL top sorgusu ile bahsedeceklerim şimdilik bu kadarla sınırlı kalıyor ve oldukça kolay bir işleyiş tarzı var ancak özellikle karmaşık sorgularda kullanıldığı yerler olduğu için ve sonraki SQL makalelerimizde yeniden keşfedeceğimiz için mantığını bilmekte yarar var :)
Makalemize son noktayı koymadan önce bir önceki SQL makalemde veritabanı script yolunun yanlış olduğunu ve indirilemediğini gördüm,dosyayı yeniden siteye yükledim ve buradan indirebilirsiniz:
https://www.serkanayyildiz.com/images/uploaded/23-11-2013-13-25-20/script.zip
Bir sonraki makalemizde görüşmek üzere hoşçakalın :)
Malum yazılımcı olarak iş yoğunluğumuz fazla olunca artık makale yazmaya bile fırsat bulmakta zorlanıyorum ama hazır boş bir zaman yakalamışken bir SQL makalesi yazayım dedim :)
Önceki veritabanı dersimizde where sözcüğü ile select sorgularında kısıtlamalar yaparak verileri listeliyorduk ancak sadece where kısıtlaması ile milyonlarca datayı tek bir seferde çekmek hem bilgisayara eziyet hem gözlerimize eziyet olurdu.
Dolayısıyla tüm verileri çekmek yerine ilk X kadar veriyi çekmek daha kolay bir veritabanı sorgulaması olacaktır,tabi ileride yeniden bu konulara daha ileri teknikler kullanarak döneceğimiz için birazdan anlatacaklarım oldukça basit gelebilir :)
SQL'de select ile çekilen verilerin misal ilk 100 kaydı alabilmek için "TOP" deyimi kullanılır ve bu deyim yanında listeden gelen kaç veriyi görüntülemek istediğimizi sayısal olarak ifade ederiz.
Format olarak :
Select Top 100 From Tablo
şeklindedir ancak bu sorguyu çalıştırdığımızda hata alırız çünkü ilk 100 kaydı getir dedik ancak select sorgusu çalıştıracağımız için hangi kolonları ya da yıldız (*) işaretini yazmadık.Bu yüzden Top 100 dedikten sonra ister * işareti koyarak tüm tabloları:
Select Top 100 * From Tablo
şeklinde çağırabilir ya da sadece belli kolonların olduğı ilk 100 kaydı:
Select Top 100 Kolon1,Kolon2,Kolon3... From Tablo
ile listeleyebiliriz.
Örnek olarak BakkalDB veritabanımızın müşterilerini basit bir select sorgusu ile listeleyelim:
Gördüğünüz gibi 75 müşteriyi listeledik ancak kurumsal bir firmada binlerce müşteriyi tek seferde çağırmak yerine neden parça parça çağırmıyoruz?
Bu örneğimizde ise 75 müşterini sadece ilk 10 adedini çağıralım:
Artık ilk 10 müşteriyi çağırdık,şimdi ise tüm kayıtları değil sadece adı ve soyadını görüntüleyerek ilk 10 müşteriyi listeleyim:
Böylece 75 kayıt içerisinde oldukça basit bir filtreleme yapmadık ve dikkat ederseniz where koşulunu bile kullanmadık :)
Hazır where koşulu demişken adı "Kemal" olan ilk 10 kayıttaki müşteriyi çağıralım,burada yapacağımız şey normal bir select koşulundaki gibi top deyimi içeren sorgumuzun sonuna bildiğimiz where koşulunu yazmak olacak:
İlk 10 müşteri içerisinde adı "Kemal" olan müşterimiz mekanı cennet olsun Kemal Sunal oluyor.SQL top sorgusu ile bahsedeceklerim şimdilik bu kadarla sınırlı kalıyor ve oldukça kolay bir işleyiş tarzı var ancak özellikle karmaşık sorgularda kullanıldığı yerler olduğu için ve sonraki SQL makalelerimizde yeniden keşfedeceğimiz için mantığını bilmekte yarar var :)
Makalemize son noktayı koymadan önce bir önceki SQL makalemde veritabanı script yolunun yanlış olduğunu ve indirilemediğini gördüm,dosyayı yeniden siteye yükledim ve buradan indirebilirsiniz:
https://www.serkanayyildiz.com/images/uploaded/23-11-2013-13-25-20/script.zip
Bir sonraki makalemizde görüşmek üzere hoşçakalın :)
tşk
Hocam ben ilk 10 kaydı gizlemek diğerlerini göstermek istiyorum ne yapmalıyım acaba?
Merhaba Raşit; Select * from Tablo offset 10 rows sorgu formatını kullanabilirsin.