Bu yazımda View nedir, nasıl oluşturulur(Create view), nasıl güncellenir(Alter view) ve nasıl silinir (Drop view) giriş seviyesinde bilgi vereceğim.
View Nedir?
SQL de, View temel olarak sanal tablo(geçici ile sanal tablo farklı kavramlar lütfen karıştırmayın) diye geçiyor. Satır ve sütunları olan gerçek tablo gibidir. İçerisinde sadece SQL Fonksiyonlarını, Join, Group By ve Where ifadelerini kullanabilirsiniz. Yapamadıkları yaptıklarından daha az bu yapamadıklarını yazımın en son bölümünde yer vereceğim. (örnekleri hayali tablolar üzerinde anlatacağım). SQL Query açıp aşağıdaki örnek kodları yazıp daha sonra execute,kısayolu f5, ettikten sonra çalışmış olacaktır.
View Oluşturma (Create View)
Oluşturulan View ler veritabanınız içerisinde “Views” seçeneceğinin altında yer almaktadır. Oluşturalım:
CREATE VIEW OnSekizYasindanBuyukKullanicilar
AS
SELECT kullaniciAdi, YasadigiYer,Yas FROM Kullanicilar WHERE Yas>17
Kullanımı:
Aynı tabloyu nasıl kullanıyorsan View ide öyle kullanacağız.
Select * From OnSekizYasindanBuyukKullanicilar Where kullaniciAdi like ‘A%’
Şifreli View Oluşturma (With Encryption)
CREATE VIEW SifreliView
With Encryption
AS
SELECT kullaniciAdi, YasadigiYer,Yas FROM Kullanicilar WHERE Yas<17
Not: Şifrelediğiniz View’in kodlarını kendimizde göremeyiz yani Design sayfası bulunmamaktadır. Bunu unutmayı o yüzden yedek almakta fayda var kodlarınızı. Ayrıca proc, function, trigger larıda şifreleyebilirsiniz.
View Güncelleştirme (Alter View)
Güncelleştirmek için alter ifadesinden sonra güncelleştirmek istediğimiz türü seçiyoruz burada view oluyor ve en son olarak View adını yazıyoruz. Kodları değiştirten sonra çalıştırmayı unutmayın.
ALTER VIEW OnSekizYasindanBuyukKullanicilar
AS
SELECT kullaniciAdi, Yas FROM Kullanicilar WHERE Yas>17
View Silme (Drop View)
Aslında Create, Alter, Drop SQL ifadeleri olduğu için tablo, view, fonsiyon, procedur işlemlerinde aynı şekide kullanılıyor, yani view e özel durum söz konusu değil.
DROP VIEW OnSekizYasindanBuyukKullanicilar
View larda Ne Yapılmaz
Yukarıda söylediğim gibi aslında view lerin yapamadıkları daha fazla.
- Order By kullanamazsınız.
- İsimsiz kolon bırakamazsınız. Örneğin Sum fonsiyonunu kullanacaksınız As ile kesin bir isim vermek zorundasınız.
- Birden fazla sorgu yazamazsınız yani sadece bir select ile başlayan bir cümle yapabilirsiniz.
- T-SQL kullanamazsınız
- Insert, Update veya Delete kullanamazsınız
- Herhangi bir parametre yollayamazsınız.
View leri özellikle ben kullanırken join li yapılar ile tabloları birleştiriyor işime yarayacağını düşündüğüm bilgileri alıyorum ve daha sonra bu view i kullanarak işlemler yapıyorum. Bu açıdan oldukça kullanışlı. Kullandıkça alışabilirsiniz.
Umarım faydalı bir yazı olmuştur sonraki yazımda, Procedure oluşturmayı anlatacağım.
#1 by Levent on February 1, 2012 - 1:06 pm
Gayet güzel,anlaşılır, açıklayıcı bilgiler…
#2 by orhan kanat on May 7, 2012 - 6:56 am
çok açık view i oluşturma güncelleme silme Teşekkürler
#3 by Mahmut Can Sözeri on May 7, 2012 - 10:27 pm
Rica ediyorum.
İyi çalışmalar
#4 by ashdasd asf on August 9, 2012 - 11:32 am
cidden cok güzel anlatılmıs t.edrim
#5 by Mahmut Can Sözeri on August 9, 2012 - 10:55 pm
Faydalı olduysa sevindim.
#6 by mrt on October 14, 2013 - 7:34 am
Merhaba
bir view in parametreli olması mümkün mü?
yukaridaki örneklerde as den sonra bildiğimiz sql select fadeleri var.
bir asp.net sql data source da tablo seçip advandec bölümünde insert,delete,update basınca bile
aspx dosyasında sql datasource içine bakarsanız parametreler var.bunu viewde yapmak istiyorum.
söz gelimi, sqldatasource un kendi koyduğu delete sourgusunda bile ve bunu create view isim as
den sonra yazında hata veriyor
#7 by Mahmut Can Sozeri on October 19, 2013 - 2:42 pm
Merhaba parametreli View yapmanız mümkün değil bunun yerine blogumda yine yer alan StoreProcedured kullanabilirsiniz. İşinizi görecektir.
Bunun yerine eğer SqlCommandBuilder biliyorsanız işinizi biraz olsun görebilir: http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommandbuilder.aspx
#8 by mrt on October 14, 2013 - 7:38 am
bakarsanız bunları view oluşturmada kullanılamamakta. bunları view yapmak sterseniz, declare ediniz uyarısı gelmekte. Bunu nasıl yaparı?
SelectCommand=”SELECT * FROM [Kategoriler] WHERE ([KategoriId] = @KategoriId)”
InsertCommand=”INSERT INTO [Kategoriler] ([KategoriAdi]) VALUES (@KategoriAdi)”
DeleteCommand=”DELETE FROM [Kategoriler] WHERE [KategoriId] = @KategoriId”
UpdateCommand=”UPDATE [Kategoriler] SET [KategoriAdi] = @KategoriAdi WHERE [KategoriId] = @KategoriId
#9 by Mahmut Can Sozeri on October 19, 2013 - 2:43 pm
SqlCommandBuilder kullanarak istediğinizi kısmen çözebilirsiniz: http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommandbuilder.aspx
#10 by Kübra on October 4, 2018 - 11:28 am
Oluşturduğumuz bu viewleri asp.net core mvc de bir table olarak kullanabilir miyiz. Yani datacontext sınıfınfa dbset ile bağlayabilir miyiz
#11 by Mahmut Can Sozeri on October 9, 2018 - 7:15 am
Tabiki kullanılabilir. DB katmanı ayrı, önyüzde kullandığınız teknoloji ayrı.
#12 by Erhan on October 8, 2018 - 11:31 pm
Pek yorum atmayı seven biri değilim ama yorum atmadan geçemeyeceğim, gerçekten çok kolay anlaşılır şekilde anlatmışsınız. Teşekkürler…
#13 by Mahmut Can Sozeri on October 9, 2018 - 7:14 am
Merhaba, çok teşekkürler Erhan Bey. Sağolun. Faydalı olmasına sevindim.
#14 by mhsn12 on January 24, 2019 - 1:10 pm
Teşekkürler emeğine sağlık