DbWorkbench ile Firebird de nasıl View Create edebilirim?
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
CREATE VIEW V_DENEME
(
URUNNO,
SISTEMNO,
AGIRLIK,
TARIH,
SAAT
) AS
select urun_no,sistem_no,agirlik,tarih,saat
from URUN_STOK order by tarih;
soyle bir sey yaptım ama hata veriyor
order by cıkartılınca sorun yok
benim de sormak istedigim buydu
normal sql syntaxı seklinde mi yoksa ufak tefek farklılıkları varmı?
nette aradım bayagı bir
hic ornek bulamadım
dbworkbench helpi de yetersiz...
Saygılar,sevgiler
(
URUNNO,
SISTEMNO,
AGIRLIK,
TARIH,
SAAT
) AS
select urun_no,sistem_no,agirlik,tarih,saat
from URUN_STOK order by tarih;
soyle bir sey yaptım ama hata veriyor
order by cıkartılınca sorun yok
benim de sormak istedigim buydu
normal sql syntaxı seklinde mi yoksa ufak tefek farklılıkları varmı?
nette aradım bayagı bir
hic ornek bulamadım
dbworkbench helpi de yetersiz...
Saygılar,sevgiler
evet rsimsek doğru söylüyor viewlarda order kullanamazsınız.
Order e view i Query den çağırdığınızda kullanın. view i bir tablo gibi düşünün tablo oluşturukende order kullanamazsınız. Sadece sorgulamaya aldığınızda order kullanabilirsiniz. Hiç bir tablo sıralı olarak kaydetmez. Order tablonun yapısına aykırı. Dikkat ederseniz tabloları create ederken index kullanıyoruz. index tabloyu alfabetik sıraya sokmuyor. Sadece tabloda hangi kaydın hangi kayıt nosunda olduğunu tutuyor. Siz indeksi çağırdığınızda indeks alfabetik sıralı halde karşınıza tabloyu memory e alarak getiriyor. Aslında tablo diskte kaydettiğiniz sırada durmaktadır. Bu sebeble view in yapısıda tablonun yapısı ile aynıdır.
Sevgiler...
Order e view i Query den çağırdığınızda kullanın. view i bir tablo gibi düşünün tablo oluşturukende order kullanamazsınız. Sadece sorgulamaya aldığınızda order kullanabilirsiniz. Hiç bir tablo sıralı olarak kaydetmez. Order tablonun yapısına aykırı. Dikkat ederseniz tabloları create ederken index kullanıyoruz. index tabloyu alfabetik sıraya sokmuyor. Sadece tabloda hangi kaydın hangi kayıt nosunda olduğunu tutuyor. Siz indeksi çağırdığınızda indeks alfabetik sıralı halde karşınıza tabloyu memory e alarak getiriyor. Aslında tablo diskte kaydettiğiniz sırada durmaktadır. Bu sebeble view in yapısıda tablonun yapısı ile aynıdır.
Sevgiler...
şunu düşün. 5 adet tablon var. ve Tek sorguyla her gün burdan bilgi almak zorundasın. ve kayıt sayısının yüzbinleri bulduğunu düşün. Sorgu zamanı uzayacaktır. Peki bunun yerine bu 5 tabloyu tek bir tabloymuş gibi filtre ederek sürekli güncel tutan view e ne dersin ? Sorgu hızındaki artış süper olacaktır. Veya bir personel veritabanında maaşları sadece 1 kişinin görmesi gerektiğini fakat maaş dışında personel tablosunda işlemler yapılması gerektiğini düşün. maaş dışında diğer fieldları bir view e doldurup bunu personele açmak nasıl olurdu ? view ler sorguları hızlandırmak, karmaşık soguları azaltmak ve güvenlik için kullanılırlar.
Sevgiler...
Sevgiler...
Selam
sair arkadaşımız bir bilgi vermiş,
) Diğer DB'lerde de olabilir incelemedim.
Clustered Index metodu kullanıldığında, table'a verdiğiniz index definition'ına bağlı olarak veri girişi yapılan recordları bu index'e göre yerleştirir.
Yani Ad+Soyad diye bir cluestered index tanımlamışsanız veri girişlerinde (diske yerleştirirken) bu indexe göre paging yapar! Tabi doğal olarak da sadece 1 adet clustered index tanımlayabilirsiniz.
Kolay Gelsin.
sair arkadaşımız bir bilgi vermiş,
ancak bildiğim kadarı ile MS-SQL Server'da (tabi ne kadar yaptığı da tartışılabilir. Malum Microsoft yapıyorum der, ama yapmazHiç bir tablo sıralı olarak kaydetmez.

Clustered Index metodu kullanıldığında, table'a verdiğiniz index definition'ına bağlı olarak veri girişi yapılan recordları bu index'e göre yerleştirir.
Yani Ad+Soyad diye bir cluestered index tanımlamışsanız veri girişlerinde (diske yerleştirirken) bu indexe göre paging yapar! Tabi doğal olarak da sadece 1 adet clustered index tanımlayabilirsiniz.
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/
Arkadaşlar eğer doğru anladıysam burada bir yanlışlık olduğunu düşünüyorum. Zira view'lar join ettikleri 3-5 ya da 10 tane tablonun içeriğini bir şekilde ayrı bir yerde tutmazlar. Create edilen view sonucunda veritabanında tutulan tek şey sizin view'i oluşturan Select cümlenizdir. Dolayısıyla 5 tana tablodan verilerin getirilmesi söz konusu olunca veritabanı tarafinda ilgili view içindeki Select cümlesi o anda çalıştırılarak veriler orjinal tablolardan derlenip getirilir. Peki performans artışı hiç mi olmaz. Şöyle bir bakış açısı ile olabilir.sair yazdı:şunu düşün. 5 adet tablon var. ve Tek sorguyla her gün burdan bilgi almak zorundasın. ve kayıt sayısının yüzbinleri bulduğunu düşün. Sorgu zamanı uzayacaktır. Peki bunun yerine bu 5 tabloyu tek bir tabloymuş gibi filtre ederek sürekli güncel tutan view e ne dersin ? Sorgu hızındaki artış süper olacaktır.
1. View create edilirken ilgili Select cümlesi compile edildiği için çalıştırılacağı zaman hatasız ve Query planı hazır bir kod olarak çalıştığı için Query Optimizer tarafindan optimize edilme zamanindan ve plan hazırlama zamanından tasarruf edilir.
2. Eğer çok tablodan joinler yaparak ve bunlar üzerinden de farkli farkli kriterlerel 5-10 tane farkli sorgunuz varsa bunların ortak paydalarını tespit edip bunu saglayacak bir view oluşturabilirsiniz. Bu view'dan da gerek dogrudan select eder gerekse farkli kiriterlere gore ilave sartlar ile select edebilirsiniz. Bu durumda diyelim ki 10 tane farkli sorgunuzu tek bir view üzerinden farklilaştırdıysanız veritabanı tarafında ilgili view sık sık çağırılmaktan dolayı cache'te bulunma ihtimali artacağı için sorgu performansınız artabilir.
Sair Bey'in bahsettigi farkli kisilerin gorüp gormemesi gereken alanlar icin view kullanmak en yaygın kullanım alanıdır diyebilirim. Ya da en azından en yaygın view özelliği olarak bahsedilir. Zira ben, belki alışkanlık edinmediğimizdendir pek fazla view kullanmıyorum.
Kolay gelsin....
Kolay gelsin....
Evet Fahrettin hocanın dediklerine katılıyorum. View lar sadece yapısal olarak kaydedilir. Kullanmak istediğinizde ilişkili tablolardaki alanları verdiğiniz şartlar çerçevesinde toparlayıp bir tabloymuş gibi size sunar. Bu arada denememekle beraber birden çok tablonun belli alanlarına tek bir gridden bilgi girmek için de kullanılabilirler. Hatta ilişkili tüm tablolardaki her bir kayıtı tek seferde silmek için de kullanılabilir. Bu ayrıca veritabanından veri tabanına değişebilir. 
