3 entry daha
  • sql'in olmazsa olmaz parcasindan biridir, hemen hemen her veritabani programinda en az bir sql cumlesinde kullanilir, sorgu icerisinde kosul belirtmek amaciyla kullanilir ornegin veritabanindaki ismi solo olan kayitlari suzmek icin kullanacagimiz sorgu su sekilde olabilir

    select * from [tablo_adi] where [alan_adi]='solo'

    simdi sorgumuzu biraz daha karmasik hale getirip like anahtarini kullanarak joker karakteri ile arama kriterimizi genisletelim.

    select * from [tablo_adi] where [alan_adi] like'%solo%'

    where ile birlikte like kullandigimiz bu ornekte ilk ornegimizden farkli olarak icinde solo joker cumlesi gecen kayitlari seceriz, bu sorgu calistirildiginda sonuc sadece solo kaydi olabilecegi gibi icinde solo dizilimi gecen diger kayitlar da gelecektir.

    simdi biraz daha derine dalip sadece bas harfi 's' olan kayitlari secelim

    select * from [tablo_adi] where left([alan_adi] ,1)='s'

    diger orneklerimizden fakli olarak bu sql cumlesinde left anahtar sozcugunu kullanarak alanin sol 1. karakterinden itibaren belirledigimiz kriterlere uyan kayitlari secmesini istedik. [alan_adi]'ndan , karakteri ile ayirdigimiz 1 rakami soldan kac karakteri kriter araligina sokacagimizi belirtir.

    simdi bu sorgumuzu biraz daha genisletip between kulanarak secimimizde bir aralik belirtelim

    select * from [tablo_adi] where left([alan_adi] ,1) between 'a' and 'd'

    bir onceki ornegimizde birinci karakteri 's' olan kayitlari secmistik between kullanarak bu secimi genislettik ve a,b,c,d ile baslayan tum kayitlari secmesini sagladik

    simdiye kadar kullandigimiz sorgu ifadelerinde donen sonuclar karsimiza karmasik bir duzende gelecekti, cogu zaman bu bizim icin sorun yaratabilir bu nedenle sorgumuzu duzenli bir hale sokmak icin order anahtarini kullanalim ve sorgumuzu tekrar duzenleyelim

    select * from [tablo_adi] where left([alan_adi] ,1) between 'a' and 'd' order by [alan_adi]

    bu ornegimizde order by user_name filtresini kullandik ve secime dahil kayitlarimizin alfabetik olarak listelenmesini sagladik peki ya kayitlarimizin a'dan z'ye degil de z'den a'ya yani tersten filtrelenmesini istersek ne yapmamiz gerekiyor? simdi bunu gorelim.

    order by ile birlikte asc ya da desc kullanarak siralama duzenimizi belirleyebiliriz, daha onceki ornegimizde kayitlari d'den a'ya dogru siralamak icin kullanacagimiz sorgu soyle olmaliydi

    select * from [tablo_adi] where left([alan_adi] ,1) between 'a' and 'd' order by [alan_adi] desc

    simdi istedigimiz oldu artik sectigimiz kayitlar tersten siralandi

    simdi tam tersini a' dan d' ye dogru siralanmasi icin de asc kullanalim

    select * from [tablo_adi] where left([alan_adi] ,1) between 'a' and 'd' order by [alan_adi] asc

    iste bu kadar, elbette sql oldukca derin bir denizdir ve yapabilecekleriniz bunlarla sinirli degil ancak where anahtari ile birlikte kullanacaginiz diger yardimci anahtarlarla neler yapabileceginizi gordunuz.

    (bkz: copy paste degil alin teri)
4 entry daha
hesabın var mı? giriş yap