Daha sonra nasıl bir back up dosyasını SQL e entegre ederiz sorusuna cevap verelim.
SQL Server 2015 i ilk açtığınızda sol taraftaki alandan Database üzerine gelin ve sağ tıklayarak Restore Database diyin.
SQL => Database sağ tık => Restore Database .
Buna tıkladıktan sonra karşınıza gelen pencereden Device ı seçin ve sonundaki sekmeden Select backup devices ı seçin. buradan backup dosyanızı yani örneğimizdeki Notrhwind i Add seçeneğinden klasörleriniz arasındaki konumunu bularak seçin ve ok tıklayın.
Back up dosyanız başarıyla yüklendi mesajını aldığınız zaman.Sol taraftaki Database alt menülerine bakaran Northwindi oradan görebilir. Tablolarını inceleyebilirsiniz.
Dilerseniz aşağıda anlatmış olduğum örnek video üzerinden de görüntülü olarak öğrenebilirsiniz.
View'ler bir veya birden fazla tablodan istenilen verilerin bir arada sunulmasını sağlayan tanımlanmış sorgulardır. Diğer bir deyişle sanaltablolardır.Sanal tablo ile geçiçi tabloları birbiri ile karıştırmayalım
Sanal tablo demek ; Aynı gerçek tablolar gibi satırlar ve sütunları içermesi demektir.Bir ya da birkaç tablodan seçtiğimiz komplike verileri bu sayede okumayı sağlar. Dolayısıyla birden fazla inner join içeren sorguları view ile kullanmak mantıklıdır.
Peki neden “sanal” kelimesini kullanıyoruz? Çünkü View'ler veri saklamazlarsadece istenen veriye ulaşılacak yolu kullanarak verileri kullanıcıya sunarlar.
Buradan da anlıyoruz ki ,view ile birden çok tabloyla çalışırken uzun sorgulardan kurtululabiliyoruz.Böylelikle veri ulaşım performansını arttırabiliyoruz.Ve birazdan bahsedeceğimiz yapılar sayesinde veri erişimini sınırlamak ve kontrol altında tutmak için view’ları kullanabilirz.
Innerjoin dbo.Orders ON Customers.CustomerID=Orders.CustomerID Oluşturulan Viewler Object Explorer kısmında "View" ana başlığı altında toplanır.
View’ler ile ilgili bazı dikkat etmemiz gereken noktalar:
View ler temporary tablo dediğimiz geçici olarak oluşturulan tablolara referans verilemez.Bu tablolardan veri istenemez. View ler üzerinde yapılan değişikler kendilerini oluşturan kaynak tabloları da etkiler,aynı değişiklikler kaynak tablolara da yansır.
-Order By cümleciği sadece TOP operatörü ile birlikte kullanıldığında kullanılabilir.
-Bir View farklı tablolardan gelen aynı isimlere sahip farklı sütunları içerebilir.
-Ya da İsimsiz kolon bırakamazsın. As ile takma bir isim vermeniz gerekiyor.
-Birden fazla sırgu yapamazsınız yani sadece bir tane select ile başlayan bir cümle yazabilirsiniz.
CREATE VIEW view_ismi [(görünen sütun ismi,…)]
[WITH {ENCRYPTION | SCHEMABINDING}]
AS
select_cümlesi
[WITH CHECK OPTION]
Create View [sahip_ismi].view_ismi kısmındaki [sahip_ismi] alanını doldurmak zorunda değiliz.O view’in kim tarafından yönetileceğini belirtmek yararımıza olacağı için belirtmemiz iyi olur.Çünkühiçbir isim girilmemesi durumunda o sıradaki kullanıcıyı View’in sahibi olarak atayacaktır.
INNERJOIN dbo.Categories as Cat ON Prod.CategoryID=Cat.CategoryID
Encryption yapısını kullanmamızın nedeni o veritabanında oluşturduğumuz View’in kod içeriğinin yani View’i oluşturmamızı sağlayan kaynak kodun görüntülenemezşekilde şifrelenmesidir.Yani Şifreli view ın kodlarını kendimiz de göremeyiz demek design sayfasına ulaşamayız yani inaktif olarak görünür. Diğer bir deyişle Kaynakların gizliliğini sağlayan koddur,kullanıcı sadece oluşturulan view ile ilgili verilere erişebiliyor,kaynak tablolarla ilgili hiç bir bilgiye ulaşamıyor.
Bu viewlar görüntülenemezler yanişifresiz haline döndüremiyoruz. Bunu yapabilmek için View’in kaynak koduna ihtiyaç duyuyoruz.Bu yüzden Encryption(şifreleme) yapmayı düşündüğümüz View cümlesinin yedeğini kaydetmeyi unutmazsak bizim açımızdan faydalı olacaktır.
View’lerin içeriğini görüntülemenin bir başka yolu da bir stored procedurekullanmaktır.
sp_helptext ‘ÖrnekViewinİsmi’
Stored procedure’e Encryption yaptığımız örneğimiz üzerinde işlem yapmasını söylersek daha önce Encryption yapıldığı için sonuçta bir hata mesajı almamız kaçınılmaz.
sp_helptextOrder_Customer
Encryption var ise görüntüleyemeyiz..
sp_helptext ProductsDetails
Güncelleme için ;
ALTER VIEWyapısınu kullanıyoruz..
SchemaBinding:
Eğer oluşturacağımız View’de With Schemabinding kullanırsak ya da daha önce oluşturduğumuz bir View’e ALTER View ile With Schemabinding özelliği verirsek bu View’de görmek istediğimiz verilerin tutulduğu tablolardaki veri çektiğimiz sütunları kilitlemiş oluruz.
Bu da demek oluyor ki ;
View’de görüntüleyeceğimiz verilerin bulunduğu tablo ya da tablolardaki sütunların yapısında yapılacak herhangi bir değişikliği bu View’i silmedikçe ya da Schemabinding özelliğini View’imizden kaldırmadıkça yapamayacağız.
-Schemabinding’li View’imizde * kullanamayız. Yani select * from ... diyemeyiz.
USE NORTHWND
GO
CreateVIEW [dbo].[Kategoriler]
WithSchemaBinding
AS
SELECTdbo.Categories*
FROM dbo.Categories
-Schemabinding kullanıyorsak View’imizin Select cümlesinde referans ettiği tabloların isimleri tablosahibininismi.tabloismi halinde olmalıdır.
Sayesinde insert select update yapabiliyoruz.Görünmeyen bir kaydın eklenmesini istemiyorsak with check option yapıyoruz.Diğer bir deyişle where koşulunu muhafaza eder.
DİKKAT:
Distinct yapısı kullanılmış View’lerin üzerinden Insert, Update ya da Delete gibi işlemler yapamayız. Aynı durum Group By kullandığımız View’ler içinde geçerlidir.
View kullanarak birden fazla tabloda veri değişikliği yapamayız.
Şimdi bu komutların View ile nasıl kullanıldığına dair bir örnek yapalım.
kaynaklar : https://mcansozeri.wordpress.com/2011/03/30/mssqlde-view-kullanimi-create-view-alter-view-drop-view/ http://www.yazilimciblog.com/sql-viewler-konusu/ MS-20461 kitabı
Bir de pdf den yararlandım büyük ölçüde fakat linkini bulamadım.Bulduğum zaman ekleyeceğim.
Ayrıca bu siteyide bu konunun özeti şeklinde takip edebilirsiniz:
http://deryagunduz.blogspot.com.tr/2010/07/sqlde-viewsanal-tablo-olusturmak.html