none
View Kullanımı RRS feed

  • Soru

  • Merhaba,

    Bu konu hakkında sadece mantığını öğrenmek istiyorum. Biz bir tane view oluşturduğumuzda database de artık bu mevcut ve istediğimizde kullanabiliyoruz. Okuduğum yazılarda içerisinde bilgileri tutmazlar yazıyor. Ama ben o editlediğim de içinde bilgiler mevcut.. Bilgi barındırmaz derken farklı bir şey mı kastediliyor? Bir de biz view' ı oluşturmuş olduğumuz tabloya insert yaptığımızda bunu view' e de aktarıyor mu?

    Cevaplar için şimdiden teşekkürler :)

    25 Haziran 2014 Çarşamba 14:54

Yanıtlar


  • 1- View'lar dışarıdan parametre almazlar. Procedure gibi değillerdir.

    2- View'ı select * from ViewIsmi şeklinde çağırabilirsiniz ve bunun içeriğinde de 1'den fazla tabloyu birleştirerek tek bir tabloymuş gibi çekebilirsiniz. 

    3- Birden fazla birleşmiş olarak gelen view'ınıza where koşulları ekleyebilirsiniz. Sabit olarak tanımlayıp başka procedure, function gibi yerlerde tablo gibi kullanabilirsiniz.

    "Bir de biz view' ı oluşturmuş olduğumuz tabloya insert yaptığımızda bunu view' e de aktarıyor mu" 

    Cevap

    View'a insert yapamazsınız. O bir tablo değildir. Ancak View içeriğindeki tabloya insert yaparsanız, Tekrar o view'ı çağırdığınızda size insert ettiğiniz kaydı tabiki gösterecektir.

    " Bilgi barındırmaz derken farklı bir şey mı kastediliyor? "

    Cevap

    View sadece tabloymuş gibi kullanılır. Yani amaç sadece select'tir. Dolayısı ile bir view'a sadece select çekebilirsiniz. Insert / update / delete gibi bir işlem yapamazsınız. Sadece View'da belirtiğiniz tablolara yapabilirsiniz. Bilgi barındırmazdan kasıt, sanırım kayıt barındırmaz olacaktı.

    "Okuduğum yazılarda içerisinde bilgileri tutmazlar yazıyor. Ama ben o editlediğim de içinde bilgiler mevcut"

    Cevap

    Sizin orada gördüğünüz sadece tablo eşleştirmeleri. Tablo içerisindeki kayıtlar değil. Onları ancak select çektiğinizde görürsünüz.


    İletişim

    • Yanıt Olarak İşaretleyen Arzu Fırat 25 Haziran 2014 Çarşamba 15:20
    25 Haziran 2014 Çarşamba 15:03
  • (Barış ozur dilerim ama senin yazdiklarina da duzeltme yapmam gerekti)

    View, temel olarak, bir SQL ile tanimlanan sanal bir tablo. Ornek:

    select * from FaturaBaslik where year(Tarih) = 2000

    diye bir SQL ile sadece 2000 yilina ait faturalari getiren sanal bir tablo yaratabiliriz (tam syntaxinda "create view v2000Yili as select ..." gibi). Bunu yaptiktan sonra bu view bizim icin bir tablo gibi (icerigine gore kisitlamalari var). Ornegin:

    select * from v2000Yili

    dersek:

    select * from FaturaBaslik where year(Tarih) = 2000

    demis gibi oluyoruz.

    Icinde bilgi tutmaz'dan kasit bu view'un aslinda bir SQL ifadesi olmasi ve sanal olarak sana bilgi tutuyormus gibi icindekileri o sirada bir select ile getirmesi. Ancak, bilgi tutmazlar yuzde yuz dogru degil. Genel olarak o sekilde kullanilsalar da, 2008 sonrasinda (versiyonu yanlis hatirliyor olabilirim) indexli viewlar geldi (persistent view diye de biliniyor). Detaylarini SQL server yardim da okuyabilirsin.

    Temel olarak bir SQL ifadesinden olustugu icin, sen o view'un olusturuldugu tablo(lar)ya insert edince view'a da insert etmis oluyorsun.

    Dogrudan view ile select disinda islemler de yapabilirsin, ANCAK, bunu yapabilecegin view tek bir tablo kullanmali (multiple tablo ile inserte SQL server izin vermiyor, izin veren database(ler) var).

    View'lar hakkinda cok detayli bilgi SQL server yardimlarinda var. Ben sahsen (ustune basarak soyluyorum "sahsen") view'lari hic sevemedim ve kullanmiyorum. Onun yerine bazi durumlarda TVF - (Table Valued Parameter) function kullaniyorum, o kadar.  

    • Yanıt Olarak İşaretleyen Arzu Fırat 25 Haziran 2014 Çarşamba 15:37
    25 Haziran 2014 Çarşamba 15:27

Tüm Yanıtlar


  • 1- View'lar dışarıdan parametre almazlar. Procedure gibi değillerdir.

    2- View'ı select * from ViewIsmi şeklinde çağırabilirsiniz ve bunun içeriğinde de 1'den fazla tabloyu birleştirerek tek bir tabloymuş gibi çekebilirsiniz. 

    3- Birden fazla birleşmiş olarak gelen view'ınıza where koşulları ekleyebilirsiniz. Sabit olarak tanımlayıp başka procedure, function gibi yerlerde tablo gibi kullanabilirsiniz.

    "Bir de biz view' ı oluşturmuş olduğumuz tabloya insert yaptığımızda bunu view' e de aktarıyor mu" 

    Cevap

    View'a insert yapamazsınız. O bir tablo değildir. Ancak View içeriğindeki tabloya insert yaparsanız, Tekrar o view'ı çağırdığınızda size insert ettiğiniz kaydı tabiki gösterecektir.

    " Bilgi barındırmaz derken farklı bir şey mı kastediliyor? "

    Cevap

    View sadece tabloymuş gibi kullanılır. Yani amaç sadece select'tir. Dolayısı ile bir view'a sadece select çekebilirsiniz. Insert / update / delete gibi bir işlem yapamazsınız. Sadece View'da belirtiğiniz tablolara yapabilirsiniz. Bilgi barındırmazdan kasıt, sanırım kayıt barındırmaz olacaktı.

    "Okuduğum yazılarda içerisinde bilgileri tutmazlar yazıyor. Ama ben o editlediğim de içinde bilgiler mevcut"

    Cevap

    Sizin orada gördüğünüz sadece tablo eşleştirmeleri. Tablo içerisindeki kayıtlar değil. Onları ancak select çektiğinizde görürsünüz.


    İletişim

    • Yanıt Olarak İşaretleyen Arzu Fırat 25 Haziran 2014 Çarşamba 15:20
    25 Haziran 2014 Çarşamba 15:03
  • Teşekkür ederim Barış Bey :)  aslında en çok en son cevapladığınız yerde takılmıştım şimdi halloldu. Onun view'le değil sql çalışması ile ilgili bi cevabı oluştu kafamda sadece biraz daha düşünmek yetiyormuş :) Düşündürdüğünüz için de ayrıca teşekkürler :)
    25 Haziran 2014 Çarşamba 15:25
  • (Barış ozur dilerim ama senin yazdiklarina da duzeltme yapmam gerekti)

    View, temel olarak, bir SQL ile tanimlanan sanal bir tablo. Ornek:

    select * from FaturaBaslik where year(Tarih) = 2000

    diye bir SQL ile sadece 2000 yilina ait faturalari getiren sanal bir tablo yaratabiliriz (tam syntaxinda "create view v2000Yili as select ..." gibi). Bunu yaptiktan sonra bu view bizim icin bir tablo gibi (icerigine gore kisitlamalari var). Ornegin:

    select * from v2000Yili

    dersek:

    select * from FaturaBaslik where year(Tarih) = 2000

    demis gibi oluyoruz.

    Icinde bilgi tutmaz'dan kasit bu view'un aslinda bir SQL ifadesi olmasi ve sanal olarak sana bilgi tutuyormus gibi icindekileri o sirada bir select ile getirmesi. Ancak, bilgi tutmazlar yuzde yuz dogru degil. Genel olarak o sekilde kullanilsalar da, 2008 sonrasinda (versiyonu yanlis hatirliyor olabilirim) indexli viewlar geldi (persistent view diye de biliniyor). Detaylarini SQL server yardim da okuyabilirsin.

    Temel olarak bir SQL ifadesinden olustugu icin, sen o view'un olusturuldugu tablo(lar)ya insert edince view'a da insert etmis oluyorsun.

    Dogrudan view ile select disinda islemler de yapabilirsin, ANCAK, bunu yapabilecegin view tek bir tablo kullanmali (multiple tablo ile inserte SQL server izin vermiyor, izin veren database(ler) var).

    View'lar hakkinda cok detayli bilgi SQL server yardimlarinda var. Ben sahsen (ustune basarak soyluyorum "sahsen") view'lari hic sevemedim ve kullanmiyorum. Onun yerine bazi durumlarda TVF - (Table Valued Parameter) function kullaniyorum, o kadar.  

    • Yanıt Olarak İşaretleyen Arzu Fırat 25 Haziran 2014 Çarşamba 15:37
    25 Haziran 2014 Çarşamba 15:27
  • Hocam yanıtınız için çoook teşekkür ediyorum :) Araştıracağım değindiğiniz konuları..
    • Yanıt Olarak İşaretleyen Arzu Fırat 25 Haziran 2014 Çarşamba 15:35
    • Yanıt İşaretini Geri Alan Arzu Fırat 25 Haziran 2014 Çarşamba 15:37
    25 Haziran 2014 Çarşamba 15:35
  • Hocam estafurullah. Şu birden fazla tablo içeren view'a insert'a izin veren database'lere verebileceğiniz bir ornek varmı ?
    Hocam yanıtınız için çoook teşekkür ediyorum :) Araştıracağım değindiğiniz konuları..


    İletişim

    25 Haziran 2014 Çarşamba 15:52
  • VFP (MS hangi akla hizmet destegini sonladirdigi harika bir "data centric" dil). VFP kendi database'ine bir view uzerinden N tabloya insert izni veriyor. Tabii bunu iyi kullanmazsan dert cikarmiyor da degil :) SQL server o yuzden hakli 1 View - 1 tablo yaklasiminda.

    VFP demisken, .Net'e ve hatta Linq'a nazire yapayim biraz:

    -- MyTable'i ac, gridde goster
    use MyTable
    browse
    
    
    -- SQL birinci sinif komut, 
    -- sanki SQL server Management studioda imissin gibi
    insert into SomeTable (field1, field2) values ('a','b')
    
    -- local sanal tablo
    -- kapatilana kadar, sadece bu kullaniciya ozel
    -- in-memory tablo (gerekirse diske yaziliyor)
    select * from Customers where Country = 'USA' into cursor crsSanal nofilter
    * gridde goster
    browse 
    

    Form yaratma destegini filan hic gostermeyeyim, .Net kullananlar iskence gorduklerini dusunebilir:)

    • Düzenleyen CetinBasoz 25 Haziran 2014 Çarşamba 16:10
    25 Haziran 2014 Çarşamba 16:02
  • Hocam sağolun. Bunu ben bi inceliyim. Tabi sadece meraktan aslında. Dediğiniz gibi dert olabilir. Ayrıcada linq varken view niye :)

    VFP (MS hangi akla hizmet destegini sonladirdigi harika bir "data centric" dil). VFP kendi database'ine bir view uzerinden N tabloya insert izni veriyor. Tabii bunu iyi kullanmazsan dert cikarmiyor da degil :) SQL server o yuzden hakli 1 View - 1 tablo yaklasiminda.



    İletişim

    25 Haziran 2014 Çarşamba 16:08