Sql Server view Kullanımı

Herkese merhaba, Sql Server yazılarımıza kaldığımız yerden devam ediyoruz. Bu yazımızda Sql Server’da view kullanımı ve view oluşturmayı anlatacağım. Hadi başlayalım !
Table of Contents
view Yapısı ve Özellikleri
Sql Server’da bir veritabanı içerisinde çok fazla tablonuz olabilir ve öyle zaman gelir ki birden çok tabloyu join ile birleştirmeniz gerekebilir. Hatta bu birleştirme işlemini defalarca farklı yerde kullanmanız gerekebilir. Bu durumda her seferinde join ile birleştirme yapmak ve sonuçları almak hem siz geliştirici hemde Sql Server için yorucu olabilir. İşte böylesi zamanlarda view oluşturarak birleştirme işlemini bir kere yapıp sonrasında istediğiniz veriyi view üzerinden okuyarak hız kazandırabilirsiniz. viewlar, sanal tablo gibi düşünülebilir. İsterseniz tek bir tablodan isterseniz birden çok tabloyu join ile birleştirerek sanal bir tablo oluşturabilir ve bu sanal tablo üzerinde yine Sql komutları çalıştırabilirsiniz. view kullanmanın avantajlarını şöyle listeleyebiliriz;
- Birden çok tablodan join ile birleştirme yapıp veri çekme işlemlerini tek bir kere yapıp istendiği zaman kullanılabilmesini sağlar,
- Birden çok kullanıcısı olan veritabanlarında istenen kullanıcıdan view yetkisi kaldırılarak gizlilik sağlanabilir,
- Şifrelenerek hangi tablo ve sütunların kullanıldığı gizlenebilir.
Sanal tablo görevi görüyor dedik fakat normal bir tablodan farklılıkları da vardır. Bu farklılıklar şöyledir;
- Sadece select sorgusu çalıştırılabilir. insert, update ve delete komutları çalıştırılamaz,
- Dışarıdan parametre alamaz,
- group by ile gruplama yapılabilse de sum(), coun(), max(), min() gibi aggregate fonksiyonlar olarak adlandırılan fonksiyonlar isimsiz kalamaz, as ile bu sütunlara isim verilmelidir.
Kod Yapısı
view oluşturma kod yapısı ise şu şekildedir;
create view view_adı [with encryption] as sql_sorgusu
Örnek Kodlar
Buradaki view_adı kısmına view’a vermek istediğiniz adı, sql_sorgusu kısmına ise select sorgusunu yazmanız gerekiyor. with encryption kısmı zorunlu değil, yazarsanız view kodlarını şifreler ve siz dahil bir başkası view kodlarını göremez. Örneğin kitaplar adında bir tablomuzun olduğunu ve bu tablodaki tüm verileri getiren bir view yazmak istersek şöyle bir Sql komutu yazmamız gerekiyor;
create view tumKitaplariGetir as select * from kitaplar
E bunu direk kitaplar tablosundan da yapabiliriz diyebilirsiniz fakat işi biraz daha büyütelim. kitaplar tablosunda yazarId ve rafId sütunları da olsun ve bu sütunlar sırasıyla yazarlar ve raflar tablolarına foreign key ile bağlı olsun. Tüm kitapları, kitapların yazarlarını ve kitabın hangi rafta bulunduğunu getirmek için şöyle bir view oluşturabiliriz;
create view tumKitaplariGetir as select * from kitaplar join yazarlar on yazarlar.id = kitaplar.yazarId join raflar on raflar.id = kitaplar.rafId
Ben doğrudan basit select sorguları yazdım fakat select sorgularını where ile filtre ekleyerek, group by gruplayarak, order by sıralayarak vs. istediğiniz gibi biçimlendirebilirsiniz.
view Güncelleme
Daha önce oluşturduğunuz viewin kodlarını değiştirebilirsiniz. Bunun için create view yerine alter view yazmanız gerekmekte, geri kalan herşey aynı. Örneğin en son oluşturduğumuz tumKitaplariGetir viewini şifreleyelim ve sayfaSayisi değeri 100’den küçük olanları getirecek şekilde güncelleyelim;
alter view tumKitaplariGetir with encryption as select * from kitaplar join yazarlar on yazarlar.id = kitaplar.yazarId join raflar on raflar.id = kitaplar.rafId where sayfaSayisi < 100;
view Silme
Oluşturulmuş bir viewi silmek için ise şöyle bir Sql komut yapısı olacaktır;
drop view view_adı
view_adı kısmına silmek istediğiniz viewin adını yazmayı unutmayınız 🙂 Silindikten sonra viewe bir daha ulaşamayacağınız ve kullanamayacağınız için silmeden önce herhangi bir yerde kullanmadığınıza emin olmanız gerekmektedir.
Oluşturduğunuz bir view sanal tablo görevi gördüğü için aynı bir tablo üzerinde komut oluşturur gibi komutlar çalıştırabilirsiniz. Örneğin en son oluşturduğumuz viewin tuttuğu verileri getirmek istersek şöyle bir komut girmemiz gerekiyor;
select * from tumKitaplariGetir;
Diğer Sorgularla Kullanımı
Ayrıca view üzerinde bu sefer delete, insert ve update sorguları da çalıştırabilirsiniz. Dikkat etmeniz gereken şey, yaptığınız bir değişiklik ana tabloları da etkileyecektir. Yani örneğin tumKitaplariGetir viewinden bir veri sildiğimizde o veri kitaplar tablosundan da silinecektir. Yada tersi durumda kitaplar tablosuna yeni bir veri eklediğinizde view içerisine de eklenecektir. Yaptığınız güncelleme ve silme işlemleri de aynı şekilde iki taraflı olarak birbirini etkileyecektir.
Evet Sql Server’da view oluşturma, düzenleme, silme ve kullanma işlemleri bu şekilde yapılmakta. Tüm Sql Server yazılarımıza buraya tıklayarak ulaşabilirsiniz. Herkese hayırlı günler.