view Hk.
view Hk.
view ların nasıl çalıştığı hk. bilgi verebilecek var mı?
ben Queryden bir view yarattım. bu view dan da başka bir view yarattım ve sonra da viewdan yine bir view yarattım. kısaca view dan view yaratarak 3 tane view sahibi oldum(hayırlı olsun) ve son iki view'u sorguluyorum. Soruım şu;
bu viewlar kendilerini update ediyorlar mı? yani asıl tableda yapılacak bir değişiklik bu viewlara yansır mı?(Bu viewlar table da olmayan kolonlardan oluşuyor yani hesaplanarak oluşturulmuş kolonlar) yoksa programı her çalıştırıldığımda yaratıp sonra silmeli miyim? Saygılar..
ben Queryden bir view yarattım. bu view dan da başka bir view yarattım ve sonra da viewdan yine bir view yarattım. kısaca view dan view yaratarak 3 tane view sahibi oldum(hayırlı olsun) ve son iki view'u sorguluyorum. Soruım şu;
bu viewlar kendilerini update ediyorlar mı? yani asıl tableda yapılacak bir değişiklik bu viewlara yansır mı?(Bu viewlar table da olmayan kolonlardan oluşuyor yani hesaplanarak oluşturulmuş kolonlar) yoksa programı her çalıştırıldığımda yaratıp sonra silmeli miyim? Saygılar..
Merhaba,
view'lar bir veya birden fazla tablodan verileri çekmek için kullanılır. Bu tablo veya tablolara kayıt eklendikçe, bu view'lar güncellenir. Aynı zamanda view'da da değişiklik yapabilirsiniz. Ne işe yarar:
1. Birden fazla tablodan kolayca veri çekmek için. Mesela Rapor oluşturmak veya acemi programcıların işini kolaylaştırmak için.
2. Bazı bilgileri gizlemek için. Mesela personel tablonuz var. Tüm alanlar görünsün ancak maaş kısmı görünmesin istiyorsunuz. Bu tip durumlarda faydalı olur.
İlk etapta aklıma gelen faydaları bunlar.
View'dan view yapmak gereksiz bir işlem geldi bana.
Kolay gelsin.
view'lar bir veya birden fazla tablodan verileri çekmek için kullanılır. Bu tablo veya tablolara kayıt eklendikçe, bu view'lar güncellenir. Aynı zamanda view'da da değişiklik yapabilirsiniz. Ne işe yarar:
1. Birden fazla tablodan kolayca veri çekmek için. Mesela Rapor oluşturmak veya acemi programcıların işini kolaylaştırmak için.
2. Bazı bilgileri gizlemek için. Mesela personel tablonuz var. Tüm alanlar görünsün ancak maaş kısmı görünmesin istiyorsunuz. Bu tip durumlarda faydalı olur.
İlk etapta aklıma gelen faydaları bunlar.
View'dan view yapmak gereksiz bir işlem geldi bana.
Kolay gelsin.
Aslında işlevsel olarak view'ı oluşturan sql kodunu Delphi tarafindan bir Query'nin içinden çalıştırmakla bunu bir view haline veritabanında tutup oradan select etmek arasında bir fark yoktur.
Sadece view'in kodu veritabanına önceden yazılıp gömüldüğü için teorik olarak birazcık daha hızlı çalışır. En önemlisi kolaylık sağlar. Admin'in dediği gibi bir takım alanların gizlenerek üzerinde çalışma yapılabilmesi için kullanılabilir. Mesela raporlarınızdan view yapmaya uygun olanlarını bu şekilde tanımladığınız taktirde her hangi bir ortamdan
diyyerek rapor alma kolaylığına erişebilirsiniz.
Sadece view'in kodu veritabanına önceden yazılıp gömüldüğü için teorik olarak birazcık daha hızlı çalışır. En önemlisi kolaylık sağlar. Admin'in dediği gibi bir takım alanların gizlenerek üzerinde çalışma yapılabilmesi için kullanılabilir. Mesela raporlarınızdan view yapmaya uygun olanlarını bu şekilde tanımladığınız taktirde her hangi bir ortamdan
Kod: Tümünü seç
select * from VIEW_RAPOR1
Merhaba,
İlginize teşekkür ederim, dediğiniz gibi acemi bir programcıyım. bu yüzden de bazı sorguları almakta güçlük çekiyorum ve view'u da bu yüzden tercih ettim. SQL analyzer dan create ettim ama dephinin içinden create edemiyorum derleme sırasında hata veriyor. yazdığım kod şöyle;
ADOQuery1.SQL.Add ('create view tablo');
ADOQuery1.SQL.Add ('Select * from tablo');
eğer birinci satırı kaldırırsam sorgu çalışıyor
acaba delphinin içinden create edemez miyim?
İlginize teşekkür ederim, dediğiniz gibi acemi bir programcıyım. bu yüzden de bazı sorguları almakta güçlük çekiyorum ve view'u da bu yüzden tercih ettim. SQL analyzer dan create ettim ama dephinin içinden create edemiyorum derleme sırasında hata veriyor. yazdığım kod şöyle;
ADOQuery1.SQL.Add ('create view tablo');
ADOQuery1.SQL.Add ('Select * from tablo');
eğer birinci satırı kaldırırsam sorgu çalışıyor
acaba delphinin içinden create edemez miyim?
Merhaba,
oluşturabilirsin tabi. Ancak bu iki cümle tek sorguda çalışmayacak cümleler. Ya 2 tane AdoQuery kullan, ya da view'ı oluşturduktan sonra
AdoQuery1.SQL.Clear;
ile sorgu cümlesini temizleyip, Select * ile başlayan sorguyu ekle.
NOT : Eğer bu view oluşturma işini her seferinde yapıyorsanız, yanlış bir işle yapıyorsunuz. View'ı bir kere oluşturup kullanırısınız, işi bitince de silersiniz. Fahrettin abininde dediği gibi eğer her seferinde oluşturuyorsanız, direk Query kullanın.
Kolay gelsin.
oluşturabilirsin tabi. Ancak bu iki cümle tek sorguda çalışmayacak cümleler. Ya 2 tane AdoQuery kullan, ya da view'ı oluşturduktan sonra
AdoQuery1.SQL.Clear;
ile sorgu cümlesini temizleyip, Select * ile başlayan sorguyu ekle.
NOT : Eğer bu view oluşturma işini her seferinde yapıyorsanız, yanlış bir işle yapıyorsunuz. View'ı bir kere oluşturup kullanırısınız, işi bitince de silersiniz. Fahrettin abininde dediği gibi eğer her seferinde oluşturuyorsanız, direk Query kullanın.
Kolay gelsin.
Create View komutu yazdiğınız gibi çalışmaz her Ver tabanında yaklaşık benzer şekilde tanımlanır, Örneğin MS-SQL'de aşağıdaki gibi Create edebilirsiniz, FireBird-Interbase'de farklı şekilde
yani hangi veri tabanında Create ediyorsanız onun syntax'ına göre yazmanız lazım. Daha sonra Ado'dan Select * from Vıew diyerek çekebilirsiniz.
Kolay gelsin.
Kod: Tümünü seç
CREATE VIEW wiew_adi
AS
SELECT field1, field2, field3 FROM tablo
Kolay gelsin.
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
View'ler hakkindaki olumsuz görüslerinize (acemiler icin, az Performans kazanimi vb) katilmiyorum.
View'ler select sorgulamasindan cok, Tablolara yakin olarak düsünülebilir.
View virtuell tablolardir. Bu bakimdan verimlilik kazandirmasinin yaninda.
Select sorgulamalarinda: view VT de kayitli oldugundan herseferinde yeniden Join icin kafa patlatmaya gerek yok.
Her nekadar view'ler VT nin isini kolaylastiriyorsada, bir o kadarda biyolojik bellek'in isini kolaylastiriyor.
View'ler select sorgulamasindan cok, Tablolara yakin olarak düsünülebilir.
View virtuell tablolardir. Bu bakimdan verimlilik kazandirmasinin yaninda.
Select sorgulamalarinda: view VT de kayitli oldugundan herseferinde yeniden Join icin kafa patlatmaya gerek yok.
Her nekadar view'ler VT nin isini kolaylastiriyorsada, bir o kadarda biyolojik bellek'in isini kolaylastiriyor.
miskin
Ve Tanri, bütün kullarini davul edecek
Ve Tanri, bütün kullarini davul edecek

Aynı select i view ile cekince pek bir performans farkı olacağını sanmıyorum.
Fakat şöyle güzellikleri var,
1. select * from seklinde vir kullanma ihtimali olmasına karsın
select alan1, alan2 yi kullanabilsin demek.
2. where kategori = ilgili katagori diyerek bir tablodan birçok kaydı cekmek yerine satır sayısını sınırlandırmak ve büyük veri sonuçlarıyla uğraşmamak.
---
Mysql 5 ile birlikte view oluşturduğunuzda, oluşturduğunuz view e göre o table lara veri girişini sınırlandırabiliyor, 'integrity checking' yapabiliyormuş.
-View açısından- performans dediğimiz şeyi tahminim oracle daki 'materialized view' yapıyor. Bu durumda bir sorgunun sonuc seti loglanıyor veya 'snapshot' u alınıyor.
Peki bu loglamayı ne zaman yapıyor diye sorarsanız, istediginiz vakit aralığını verebiliyorsunuz veya refresh oncommit diyerek her insert te kullanabiliyormussunuz.
Esasında kaçımız böyle bir performansa ihtiyaç duyuyoruz ki
Fakat şöyle güzellikleri var,
1. select * from seklinde vir kullanma ihtimali olmasına karsın
select alan1, alan2 yi kullanabilsin demek.
2. where kategori = ilgili katagori diyerek bir tablodan birçok kaydı cekmek yerine satır sayısını sınırlandırmak ve büyük veri sonuçlarıyla uğraşmamak.
---
Mysql 5 ile birlikte view oluşturduğunuzda, oluşturduğunuz view e göre o table lara veri girişini sınırlandırabiliyor, 'integrity checking' yapabiliyormuş.
-View açısından- performans dediğimiz şeyi tahminim oracle daki 'materialized view' yapıyor. Bu durumda bir sorgunun sonuc seti loglanıyor veya 'snapshot' u alınıyor.
Peki bu loglamayı ne zaman yapıyor diye sorarsanız, istediginiz vakit aralığını verebiliyorsunuz veya refresh oncommit diyerek her insert te kullanabiliyormussunuz.
Esasında kaçımız böyle bir performansa ihtiyaç duyuyoruz ki
