SQL | Views II

Posted by mezo | Posted in MSSQL | Posted on 08-11-2010-05-2008

1



Bir önceki yazımızda View nasıl yazılır ne işe yarar bunu öğrenmiştik . Bu yazımızda ise View içersinde yapabileceğimiz bir takım işlemleri öğreneceğiz.
Oluşturduğumuz View yapısı üzerinde değişiklik yapabilmek için Alter View; Silebilmek için Drop View cümlelerini kullanıyoruz.

Encryption:

Encryption cümlesi şifreleme anlamına gelir. Türkçe anlamınında belirttiği gibi view in kod içeriğini  yani view i oluşturduğumuz kodları görüntülenemez şekilde şifrelememizi sağlar. Bu işlemi geri almak istersek maalesef ki başarısız oluyoruz çünkü Decryption gibi bir çözüm yok. Encryption kullanılması gerekiyorsa mutlaka View in kaynak kodlarının başka bir kaynağa yedeklenmesi şiddetle tavsiye edilir.

With Encryption Yapısı

Create View viewAdi

With Encryption

AS

Select Sorgusu

Örnek olarak yukardaki gibi bir View oluşturduğumuzda veritabanındaki Views klasörü içersinden bu yarattığımız View i bulduğumuzda üzerinde bir kilit simgesinin olduğunu göreceğiz ve sağ tık ile düzenlemeye çalıştığımızda başarısız olacağız. Encryption ile kodlarımızı emniyet almış olduk. Daha öncede belirttiğim gibi bunu tekrar geri döndürecek kilidi çözecek bir kod yok.

Oluşturulan view ların içeriklerini görüntülemek için kullandığımız bir stored procedure var. Sp_helptext . bu SP bize belirttiğimiz View içeriğini gösterir. Öncelikle nasıl kullanıldığına bakalım sonra Encrypt ettiğimiz View i görüntüleyebilirmiyiz ona bakalım.

Görüldüğü gibi normal bir view içeriğini görüntüledik. Şimdide Encrypt edilmiş view a bakalım ;)

Schemabinding

Encryption kadar olmasada Schemabinding kelimesinin tercümesi zaten bu kodu hangi amaçlar için kullanabileceğimizi anlamaya yeterli oluyor. Eğer oluşturulacak View içersinde Schemabinding kullanılıyorsa View içersinde kullandığımız tabloların sütunlarını kilitlemiş oluruz. View içersinde Schemabinding kullanırken hatırlamamız gereken bazı kurallar var.

Öncelikli kural Schemabinding kullanacağımız View içersindeki sorgularımızda * işaretini kullanmamak bunun yerine tüm görüntülemek istediğimiz sütunları tek tek yazmamız gerekiyor.  Yazmazsak aşağıdaki gibi bir hata ile karşılaşacağız.

Ayrıca belirteceğimiz tablo isimlerini tabloismi.sütunismi olarak belirtmemiz gerekiyor. Son olarakda tablo ismi ile alakalı olan kuralımız var , tablo isminde ise dbo.tabloismi yazmamız gerekiyor ki tam olarak tabloyu ve sütunlarının yerini garantilemiş olalım.

Yukarıdaki örnekte 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. Oldu da böyle bir işlemi Schemabinding özelliği varken yapmaya kalkıştık, SQL bize bu işlemin yapılamayacağını belirten bir hata mesajı verecektir. UrunleriListele isimli View için kullandığımız dbo.Products tablosundan ProductName sütununu kaldırmaya çalışalım.

WithCheckOption

Son olarakda sizlere View lerin WithcheckOption özelliğinden bahsetmek istiyorum.  Biliyorsunuz ki View ler içersinde tek bir tablo ile işlem yaptığımızda Insert,Update, Delete gibi işlemleri yapabiliyoruz. İşte bu işlemleri yapabildiğimiz view ler içersinde bazı kısıtlama yapabilmek için WithCheckOption özelliğini kullanırız. Yeni bir view ile bu özelliği inceleyelim.

Bu şekilde tek tablo üzerinde ve Where kelimesi ile kriter belirtilerek oluşturduğumuz View üzerine insert işlemi yapmaya kalktığımızda hata ile karşılaşıyoruz.

Umarım yararlı olmuştur sonraki yazılarda görüşmek üzere.

SQL | Views

Posted by mezo | Posted in MSSQL | Posted on 22-10-2010-05-2008

2



Merhaba arkadaşlar bu yazımızda MSSQL de bulunan View yapısından bahsetmek istiyorum. Bu yazının sonunda View yapısını nasıl yazıldığını ne işe yaradığını öğrenmiş olacaksınız.

View yapılarını bilinenin aksine sadece ihtiyacımız olduğunda kullanmamız işimizi kolaylaştıracağı gibi bizi gereksiz yüktende kurtaracaktır. Yerinde kullanıldığında veritabanında çok daha verimli çalışmalar yapmamızı sağlarlar.

Peki nedir bu view ? View’ler  bir veya birden fazla tablonun istenilen verilerinin bir arada sunulmasını sağlayan tanımlanmış sorgulardır. View leri sanal tablolar olarakda nitelendirebiliriz. Aynı oluşturduğumuz tablolar gibi satır ve sütunlara sahiptir. Birden fazla sütunun birleşerek tek bir komut altında topladığımızı düşünebiliriz. Hatta sadece tek bir tablo ile ilgili bir view oluşturduğumuzda İnsert Update Delete gibi işlemlerinide gerçekleştirebiliriz. View ler için sanal kelimesini kullanıyoruz çünkü üzerinde veri tutmazlar , sadece istenen veriye ulaşılması için bir araçtır aslında. Bir view yazdığımızda ne oluyor acaba ? Bize neler kazandırıyor bir göz atalım.

*İlk olarak birden fazla tablo ile çalışırken gereksiz karmaşadan kurtuluyoruz. Yani ne demek bu ? Biz uzun bir SQL sorgusu yazdığımızda her seferinde bu uzun ve karmaşık kodla uğraşmak yerine bir view işimizi görüyor.

*Bir diğer artısı ise veri ulaşım performansını arttırmak.

*Veri erişimini sınırlamak ve kontrol altında tutmak

View oluştururken dikkat etmemiz gereken hususlar:
Oluşturulan View de;
-Compute ya da Compute By cümleciği,
-Into anahtar sözcüğü,
-Option cümleciği
kullanılamaz.
-View’ler temporary tablo dediğimiz geçici olarak oluşturulan tablolara referans verilemez. Bu tablolardan veri istenemez.
-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.
-View’lerdeki sütunlar aritmetik ifadelere sahip olabilir

-Bir view oluşturabilmek için database üzerinde sysadmin (system administrator),  db_owner (database owner), db_ddladmin (data definition language administrator) yetkilerine sahip olmalıyız.

Northwind veritabanını kullanarak örneklerimizi verelim ve bir view nasıl yazılıyor nasıl kullanılıyor görelim ;)

Syntax  olarak

CREATE VIEW [View_Ismi]

AS

SQL Kodları.

Haydi  sizle önce çok basit bir Select sorgusu sonra karışık bir select sorgusu ile örnek verelim.

Birde karmaşık olana bakalım.

Bu kadar uzun bir kodla ( hatta bundan daha uzunda olabilirdi belki ) her seferinde uğraşmak insanı yorabilir karışıklığa ve hatalara olanak sağlar işte bu karışıklık ve hatalara meydan vermemek için View kullanmalıyız diyoruz.

Kodlarla çok güzel yazdık bu View i peki hiç bilgimiz yoksa kod bilmiyorsak olamazmı ?  O zaman ne yapacağız bu View denen zıkkımı yaratmak için çok basit :

Öncelikle Object explorer penceresinde database imiz içersinde bulunan klasörlerden Views klasörüne sağ tık yapıyoruz ve New View diyoruz.

Ardından bizden hangi tablolarla alakalı çalışma yapmak istediğimizi soruyor bizde istediğimiz tabloları seçiyoruz.

Seçtikten sonra zaten biraz önce uzun uzun yazdığımız kodları bizlere otomatik olarak yazılmış halinin canlı halini getiriyor ekrana tek yapmamız gereken kaydetmek :D

Basit olarak bir view oluşturma işlemi bu kadar arkadaşlar bir başka makalemizdede bu View in içindekine  , dibindekine , altında yatan koca ayzberge (iceberg) bakacağız

Görüşmek üzere…