Sql de sorgu yaparken bazı zamanlarda karakter karsılastırması yapmak gerekebilir. bu durumlarda like kullanarak sorgu yapmak gerekebilir.ornegın isimlerin bulundugu bı tabloda a harfiyle baslayan isimleri bulmak gibi yada web sitelerinde bulunan arama yap bolumu oraya girdiginiz herhangi bir ifadeyi iceren veritabanında bulunan butun bılgıleri getrıyor.iste bu ozellik 'LIKE' sozcuguyle yapılabilir.
ornegin:
Select ad from kisiler where ad like 'A%';
seklinde bır sorgu kisiler tablosundaki adı a ile baslayan kisilerin adlarını getirmekte.
Like deyimi ile kullanılan deyimler bize sorgu yaparken kolaylık saglamaktadır.
karakterleri acıklayacak olursak:
LIKE '%A%': icerinde A harfi bulunduran kayıtlar.
LIKE 'A%' : a ile baslayan tum kayıtlar.
LIKE '_A%': 2.harfi a ile baslayan kayıtlar.
LIKE '_[ABCD]%' : 2. harfiA yada B yadaC yada D olan kayıtlar.
LIKE '_[^DEF] % ' : 2.hari D yada E yada F olmayan kayıtlar.
sekilde kullanarak ıstedıgımız sorguyu yapabılıyoruz.Ayrıca like deyiminde sorgulama "=" kulanmadan yapılmaktadır.
sql server etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
sql server etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
19 Temmuz 2010 Pazartesi
6 Temmuz 2010 Salı
Sql iç içe select yapısı
Verıtabanında bazen bir tablodan cektıgımız bılgıler le baska bır tablodakı bilgileri sorgulamak isteyebılırız.
bu tur sorgular ıc ıce sorgularla yapılabılır.
ornegin elimizde 2 tablo birinde ogrenci tablo su dieride bu bu ogrencilerin notlarını ıceren bır tablo olsun.
ogrenci tablosu
not tablosu sekıldeki gibi olsun.
ornegın notu 60 uzerinde olan ogrencilerin bılgılerı ıstenırse
yapılacak sorgu sekıldekı gıbı olur:
select * from ogrenci where ogr_id
in(select ogr_id from notlar where ogr_not>60) istedigimiz sorguyu yapmıs olduk.
2 sql sorgusunu 'in ' kalıbıyla baglamıs olduk.kin kullanılma amacı içteki sorguda buldugumuz degerleri 2 sorguda butun tabloda tek tek sorgulamasıdır.' NOT IN' kalıbı içtekı sorgudan gelen degerleri ilk sorguda sorgulanmamsını saglar.
ayrıca ıce ıce cumlerde ANY,ALLkalıblarıda kullanılır
select * from notlar
where ogr_not>any(select *from notlar2 where not1>12)
icteki donguden donen degerlerin herhangı bırınden buyuk degeler getiren bı cumlecıktır.
ALL aynı sekılde kullanılmakta fakat any tam tersi olarak calısır.
select * from ogrenci where exists (select * from notlar where ogr_not=99) sekıllınde kullanılır.eger icerdeki sorgudan hıc kayıt donmezse birinci sorgu calısmaz.
bu tur sorgular ıc ıce sorgularla yapılabılır.
ornegin elimizde 2 tablo birinde ogrenci tablo su dieride bu bu ogrencilerin notlarını ıceren bır tablo olsun.
ogrenci tablosu
not tablosu sekıldeki gibi olsun.
ornegın notu 60 uzerinde olan ogrencilerin bılgılerı ıstenırse
yapılacak sorgu sekıldekı gıbı olur:
select * from ogrenci where ogr_id
in(select ogr_id from notlar where ogr_not>60) istedigimiz sorguyu yapmıs olduk.
2 sql sorgusunu 'in ' kalıbıyla baglamıs olduk.kin kullanılma amacı içteki sorguda buldugumuz degerleri 2 sorguda butun tabloda tek tek sorgulamasıdır.' NOT IN' kalıbı içtekı sorgudan gelen degerleri ilk sorguda sorgulanmamsını saglar.
ayrıca ıce ıce cumlerde ANY,ALLkalıblarıda kullanılır
select * from notlar
where ogr_not>any(select *from notlar2 where not1>12)
icteki donguden donen degerlerin herhangı bırınden buyuk degeler getiren bı cumlecıktır.
ALL aynı sekılde kullanılmakta fakat any tam tersi olarak calısır.
EXİSTS ve NOT EXİST
bu kalıplar 1 ve 0 dondurur. yani içerdeki sorgudan donen herhangı bır deger varsa dıstakı sorgunun calısmasını saglar yoksa dıstakı dongu calısmaz.select * from ogrenci where exists (select * from notlar where ogr_not=99) sekıllınde kullanılır.eger icerdeki sorgudan hıc kayıt donmezse birinci sorgu calısmaz.
5 Temmuz 2010 Pazartesi
Sql Server View Kullanımı
View sanal tablo olarak adlandırabılırız.Bu tablo veri tabanında aslında bulunmamaktadır ancak gercek bir tablo gıbı sorgulanmaktadır.View kullanıldıgı baslıca yerler: kullanıcıların bazı kritik tabloların sadece belli satır ve sutunları gormesi istendıgınde kullanılabılır.
Ayrıca ilişkisel veri tabanlarında tabloları bırlestirmek ıcın surekli inner joın kullanmaktansa view kullanmak veri tabanı performans artırır.
View olusturmak için:
Create view view_adı(view_sutun1,viewsutun2)
bır bankanın hesap tablosu sekıldeki gibi olsun.
bu bılgılerin herkes tarafından gorunmesı guvenlık acıgına neden olur.bunun yerıne bir sanal tablo yani view olusturuyoruz.ornegın sadece hesap_no ve hesap sahıbının bılgılerı gorunsun ıstıyorsak.
create view bılgıler
as select hesap_no,hesap_sahıbı_ad,hesap_sahıbı_soyad
from hesap ..
view kullanarak veri tabanın tablolara erısımı yetkılere gore belırleyıp kımın hangı bılgılere ulasacagını belirleyebılırz.
olustural bır view sılmek ıcın:
drop view view_adi
yazarak sılebılıırz
View bir dezavantajı gercek anlamda birer tablo olmadıkları ıcın vıew uzerınde ekleme veya guncelleme yaparken cesıtlı kısıtlamalar vardır.
Ayrıca ilişkisel veri tabanlarında tabloları bırlestirmek ıcın surekli inner joın kullanmaktansa view kullanmak veri tabanı performans artırır.
View olusturmak için:
Create view view_adı(view_sutun1,viewsutun2)
as
select tablo tablo_sutun1,tablo_sutun2
from tablo
where tablo_sutun3=veri
seklınde kullanılır.bır ornekle acıklarsak.bır bankanın hesap tablosu sekıldeki gibi olsun.
bu bılgılerin herkes tarafından gorunmesı guvenlık acıgına neden olur.bunun yerıne bir sanal tablo yani view olusturuyoruz.ornegın sadece hesap_no ve hesap sahıbının bılgılerı gorunsun ıstıyorsak.
create view bılgıler
as select hesap_no,hesap_sahıbı_ad,hesap_sahıbı_soyad
from hesap ..
komutları ıle bılgıler adında bı view tablosu olusturduk. bu tablonun son hali:
view kullanarak veri tabanın tablolara erısımı yetkılere gore belırleyıp kımın hangı bılgılere ulasacagını belirleyebılırz.
olustural bır view sılmek ıcın:
drop view view_adi
yazarak sılebılıırz
View bir dezavantajı gercek anlamda birer tablo olmadıkları ıcın vıew uzerınde ekleme veya guncelleme yaparken cesıtlı kısıtlamalar vardır.
Kaydol:
Kayıtlar (Atom)




