Merhaba; Bu yazımda sizlere view oluşturmayı, neden gereksinim duyulabileceğini ve kullanımını anlatmaya çalışacağım. Lafı fazla uzatmadan başlıyayım. SQL Server View yapısı sanal tablo olarak adlandırılabilir. Bu tablo aslında veritabanınızda varolmuyor; ancak gerçek bir tablo gibi sorgulanabiliyor. Böyle bir yapıya da bazen ihtiyaç duyulabiliyor. Örneğin, birden fazla tablo barındıran ilişkisel bir veritabanı dizaynı yaptınız. Bu ilişkisel veriabanında, iki ayrı tabloda olan verileri birleştirerek (inner ya da outer join yoluyla) sorgulmak istiyorsunuz. Ama bu birleştirmeyi projenizde sıklıkla kullanacaksınız. Her seferinde inner/outer join yapmak yerine bu sorguyu sanal olarak sorgulayabileceğiniz bir yapı olsa fena olmaz mıydı? İşte tam burada View yapısı devreye giriyor. Şimdi örnek üzerinden devam edelim. İlişkisel ve üç tablolu bir veritabanınız olduğunu farzedelim. Tablolar yukarıda imagelerde görüldüğü gibi olsun. Bunları oluşturmak için gerekli olan t-sql kodları ise: CREATE TABLE Department( DepartmentID INT PRIMARY KEY IDENTITY(1, 1) NOT NULL, DepartmentName CHAR(20) NOT NULL) CREATE TABLE Employee( EmployeeID INT PRIMARY KEY IDENTITY(1, 1) NOT NULL, Name CHAR(20) NOT NULL, Surname CHAR(20) NOT NULL, DepartmantID INT FOREIGN KEY REFERENCES Department NOT NULL) CREATE TABLE Bonus( ID INT PRIMARY KEY IDENTITY(1, 1) NOT NULL, EmployeeID INT FOREIGN KEY REFERENCES Employee NOT NULL, BonusAmount MONEY NOT NULL) Diyelim ki çalışanlarınızın departmanlarıyla birlikte aldıkları toplam primleri de tek bir tabloda görmek ve üzerinde sorgu yapmak istiyorsunuz. Bu sorguyu da sürekli kullanacaksınız. O zaman bir View yapısına ihtiyacımız var. İlk önce tablolarımıza gerçek olmayan birkaç kayıt girelim. Şimdi gelelim View yapımıza. View yapısını oluşturmak için gereken t-sql kodu: CREATE VIEW TotalBonus AS SELECT e.EmployeeID, e.Name, e.Surname, e.DepartmentID, d.DepartmentName, SUM(b.BonusAmount) AS TotalBonus FROM (Employee e INNER JOIN Department d ON e.DepartmentID = d.DepartmentID) INNER JOIN Bonus b ON e.EmployeeID = b.EmployeeID GROUP BY e.EmployeeID, e.Name, e.Surname, e.DepartmentID, d.DepartmentName Artık tüm çalışanlarımızın aldığı toplam primleri ve hangi departmana bağlı olduğunu aynı anda görebileceğimiz sanal bir tablomuz var. Artık View yapımızı aynen fiziksel varolan bir tablo gibi sorgulayabiliriz. Örneğin; “SELECT * FROM TotalBonus WHERE EmployeeID = 2” diye bir sorgulama yaptığınızda, alacağınız output; Bir başka yazıda daha görüşmek üzere.
Etiket(ler): mssql, sql server, sql, t-sq