view Hk.

Firebird ve Interbase veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
hacis
Üye
Mesajlar: 3
Kayıt: 05 Eyl 2003 09:35
Konum: Adana

view Hk.

Mesaj gönderen hacis »

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..
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7603
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

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.
Kullanıcı avatarı
fahrettin
Admin
Mesajlar: 2619
Kayıt: 11 Haz 2003 10:38
Konum: İstanbul
İletişim:

Mesaj gönderen fahrettin »

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

Kod: Tümünü seç

select * from VIEW_RAPOR1
diyyerek rapor alma kolaylığına erişebilirsiniz.
hacis
Üye
Mesajlar: 3
Kayıt: 05 Eyl 2003 09:35
Konum: Adana

Mesaj gönderen hacis »

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?
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7603
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

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.
Kullanıcı avatarı
Kuri_YJ
Moderator
Mesajlar: 2248
Kayıt: 06 Ağu 2003 12:07
Konum: İstanbul
İletişim:

Mesaj gönderen Kuri_YJ »

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

Kod: Tümünü seç

CREATE VIEW wiew_adi
AS
SELECT field1, field2, field3 FROM tablo
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.
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Kullanıcı avatarı
miskin
Üye
Mesajlar: 103
Kayıt: 26 Tem 2005 02:02
Konum: Gavuristan

Mesaj gönderen miskin »

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.
miskin
Ve Tanri, bütün kullarini davul edecek :)
onaydin

Mesaj gönderen onaydin »

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 :)
Cevapla