Sql İle Veritabanı View Oluşturma İşlemi Nasıl Yapılır?

Sql İle Veritabanı View Oluşturma İşlemi Nasıl Yapılır?
Sql İle Veritabanı View Oluşturma İşlemi Nasıl Yapılır?

SQL ile Veritabanı View Oluşturma İşlemi Nasıl Yapılır?

Veritabanı yönetimi süreçlerinde, karmaşık sorguları basitleştirmek ve veri güvenliğini sağlamak için kullanılan en etkili yöntemlerden biri "View" (Görünüm) oluşturmaktır. SQL ile veritabanı view oluşturma işlemi, fiziksel bir tablo oluşturmadan, mevcut tablolardaki verileri sanal bir tablo gibi sorgulanabilir hale getirmenizi sağlar. Bu rehberde, 2026 standartlarına uygun olarak, veritabanı performansını optimize etmek ve uygulama katmanındaki kod karmaşasını azaltmak için view yapısını nasıl kullanacağınızı adım adım öğreneceksiniz.

Bu makale, SQL temellerine hakim olan ancak veritabanı mimarisini daha profesyonel bir seviyeye taşımak isteyen yazılımcılar ve veritabanı yöneticileri için hazırlanmıştır. Eğitim sonunda, karmaşık JOIN işlemlerini tek bir satırda çağırmayı, hassas verileri maskelemeyi ve raporlama süreçlerini hızlandırmayı öğrenmiş olacaksınız.

Gereksinimler ve Ön Hazırlık

SQL view oluşturma işlemlerini gerçekleştirebilmek için modern bir veritabanı yönetim sistemine (RDBMS) ihtiyacınız vardır. Bu rehberdeki örnekler PostgreSQL 17, MySQL 9.0 ve SQL Server 2025 sürümleri ile uyumlu standart SQL sözdizimi kullanılarak hazırlanmıştır.

  • Veritabanı Sunucusu: Yerel veya bulut tabanlı bir SQL sunucusu.
  • Yetkilendirme: View oluşturmak için veritabanında CREATE VIEW yetkisine sahip olmalısınız.
  • İstemci Yazılımı: DBeaver, pgAdmin veya SQL Server Management Studio gibi bir veritabanı yönetim aracı.

Çalışmalarınıza başlamadan önce üzerinde işlem yapacağınız örnek bir "Siparişler" ve "Müşteriler" tablosunun hazır olduğundan emin olun. View oluşturma işlemi, veritabanı şemasını değiştirmez; yalnızca sorgu mantığını saklar.

Temel Bir View Oluşturma Adımları

View oluşturmanın temel mantığı, bir SELECT sorgusunu veritabanı içinde isimlendirilmiş bir nesne olarak kaydetmektir. Bu sayede her seferinde uzun JOIN sorguları yazmak yerine, sadece view ismini çağırarak verilere erişebilirsiniz.

CREATE VIEW aktif_musteri_siparisleri AS
SELECT m.ad, m.soyad, s.tutar, s.tarih
FROM musteriler m
JOIN siparisler s ON m.id = s.musteri_id
WHERE s.durum = 'Tamamlandı';

Yukarıdaki kod, musteriler ve siparisler tablolarını birleştirerek sadece tamamlanmış siparişleri gösteren sanal bir tablo oluşturur. Bu view'ı kullanmak için artık sadece SELECT * FROM aktif_musteri_siparisleri; komutunu çalıştırmanız yeterlidir.

View Kullanmanın Avantajları ve Dezavantajları

View kullanımı, veritabanı mimarisinde stratejik bir karardır. Aşağıdaki tablo, bu yöntemin neden tercih edildiğini ve dikkat edilmesi gereken noktaları özetlemektedir.

Özellik Avantaj Dezavantaj
Karmaşıklık Sorguları basitleştirir. Çok katmanlı view'lar performansı düşürebilir.
Güvenlik Hassas sütunları gizlemeyi sağlar. Yetkilendirme yönetimi dikkat ister.
Bakım Sorgu güncellemelerini merkezileştirir. Bağımlılık takibi zorlaşabilir.

Güvenlik İçin View İle Veri Maskeleme

View'ların en büyük avantajlarından biri, kullanıcıların tüm tabloya erişmesini engellemek yerine, sadece ihtiyaç duydukları sütunları görmelerini sağlamaktır. Örneğin, bir personel tablosundaki maaş bilgisini gizleyerek bir view oluşturabilirsiniz.

CREATE VIEW personel_iletisim_listesi AS
SELECT ad, soyad, e_posta, departman
FROM personel_tablosu;

Bu yöntemle, veritabanı yöneticisi olarak kritik verileri (maaş, TC kimlik no gibi) view dışı bırakarak güvenliği artırmış olursunuz. Kullanıcılar sadece bu view'a erişim yetkisi aldıklarında, hassas verileri asla göremezler.

Kritik Güvenlik Uyarısı: View'lar tek başına bir güvenlik duvarı değildir. Veritabanı seviyesindeki kullanıcı yetkilendirmeleri (GRANT/REVOKE) ile birlikte kullanılmalıdır. Ayrıca, view içerisinde dinamik SQL kullanmaktan kaçının; bu durum SQL Injection açıklarına davetiye çıkarabilir.

View Güncelleme ve Silme İşlemleri

Oluşturduğunuz bir view'ı değiştirmek veya silmek oldukça basittir. 2026 standartlarında OR REPLACE ifadesini kullanmak, mevcut view'ı silip tekrar oluşturmadan güncellemenize olanak tanır.

CREATE OR REPLACE VIEW aktif_musteri_siparisleri AS
SELECT m.ad, m.soyad, s.tutar, s.tarih, s.odeme_yontemi
FROM musteriler m
JOIN siparisler s ON m.id = s.musteri_id
WHERE s.durum = 'Tamamlandı';

Eğer bir view artık kullanılmıyorsa, veritabanı temizliği için şu komutu kullanabilirsiniz:

DROP VIEW IF EXISTS aktif_musteri_siparisleri;

View İçinde Hesaplamalı Alanlar Kullanma

View'lar sadece tablo verilerini göstermekle kalmaz, aynı zamanda veritabanı üzerinde anlık hesaplamalar yapmanıza da olanak tanır. Örneğin, toplam sipariş tutarını hesaplayan bir view oluşturabilirsiniz.

CREATE VIEW aylik_satis_ozeti AS
SELECT departman_id, SUM(tutar) AS toplam_satis
FROM satislar
WHERE tarih >= '2026-01-01'
GROUP BY departman_id;

Bu view, her çağrıldığında o anki verilerle hesaplama yapar. Bu sayede uygulama tarafında sürekli karmaşık matematiksel işlemler yapmanıza gerek kalmaz.

Sıkça Sorulan Sorular

View'lar veritabanında fiziksel yer kaplar mı?

Hayır, standart view'lar yalnızca sorgu tanımını saklar. Veri fiziksel olarak tabloda tutulur, view ise sadece bu veriye bir "pencere" açar.

View üzerinden veri eklenebilir mi?

Evet, ancak view'ın tek bir tabloya dayanması ve karmaşık JOIN veya GROUP BY içermemesi gibi belirli kısıtlamalar vardır. Genellikle view'lar veri okuma (SELECT) işlemleri için tercih edilir.

Performans sorunu yaşar mıyım?

Çok karmaşık ve iç içe geçmiş view yapıları sorgu süresini uzatabilir. İndeksleme stratejilerini doğru belirlemek ve view yerine "Materialized View" (önbelleğe alınmış görünüm) kullanmayı değerlendirmek performansı artırabilir.

Materialized View nedir?

Materialized view, sorgu sonucunu fiziksel olarak diske kaydeden bir yapıdır. Veri sık değişmiyorsa ve sorgu çok ağırsa, normal view yerine Materialized view kullanmak büyük performans sağlar.

View isimlendirirken nelere dikkat etmeliyim?

View isimleri, içeriği yansıtacak şekilde anlamlı ve tutarlı olmalıdır. Genellikle vw_ öneki kullanmak, veritabanı nesneleri arasında ayrım yapmayı kolaylaştırır (örneğin: vw_aktif_siparisler).

Sorumluluk Reddi: Bu rehberdeki kod örnekleri genel eğitim amaçlıdır. Üretim ortamındaki veritabanı işlemlerinizden önce mutlaka yedek almalı ve değişiklikleri test ortamında doğrulamalısınız. SQL Injection riskine karşı her zaman parametreli sorgular kullanın.

View Performansını Optimize Etme Stratejileri

View yapıları karmaşıklaştıkça, özellikle çoklu tablo birleştirmeleri (JOIN) içeren sorgularda performans kayıpları yaşanabilir. Veritabanı motoru, bir view sorgulandığında arka planda orijinal sorguyu yeniden çalıştırır. Bu süreci hızlandırmak için aşağıdaki stratejileri uygulayabilirsiniz:

  • Dizinleme (Indexing): Standart view'lar üzerinde doğrudan indeks oluşturulamaz. Ancak, SQL Server gibi sistemlerde "Indexed View" (veya Materialized View) kullanarak, view sonucunu fiziksel olarak diske kaydedebilir ve bu sonuç üzerine indeks ekleyebilirsiniz.
  • Sorgu Sadeleştirme: View içerisinde ihtiyaç duymadığınız sütunları SELECT * yerine sadece gerekli olanları seçerek (SELECT ad, soyad) I/O yükünü azaltın.
  • Fonksiyon Kullanımından Kaçınma: View içindeki WHERE koşullarında sütunlar üzerinde fonksiyon (örneğin YEAR(tarih) = 2023) kullanmak, indekslerin devre dışı kalmasına neden olur. Bunun yerine aralık sorguları kullanın.

Aşağıdaki örnek, performans odaklı bir filtreleme yöntemini göstermektedir:

-- Kötü Performans (İndeksleri devre dışı bırakır)
CREATE VIEW vw_yillik_satislar AS
SELECT * FROM Satislar WHERE YEAR(satis_tarihi) = 2023;

-- İyi Performans (İndeks dostu)
CREATE VIEW vw_yillik_satislar AS
SELECT * FROM Satislar 
WHERE satis_tarihi >= '2023-01-01' AND satis_tarihi


Sonuç

SQL ile veritabanı view oluşturma işlemi, veritabanı yönetimini daha düzenli, güvenli ve performanslı hale getiren temel bir beceridir. Bu rehberde öğrendiğiniz CREATE VIEW, OR REPLACE ve DROP komutları ile veritabanı şemanızı daha modüler bir yapıya kavuşturabilirsiniz. Bir sonraki adım olarak, büyük veri setlerinde performans artışı sağlayan "Materialized View" yapılarını araştırmanızı ve veritabanı indeksleme stratejileri ile view'ları nasıl optimize edebileceğinizi incelemenizi öneririm.

Bu yazıya tepkinizi paylaşın:
Zeynep Kaya

Yaşam kalitesini artıran hızlı ve etkili yöntemler üzerine içerik geliştiriyorum. Detaylara önem veren, çözüm odaklı rehberlerin öncüsüyüm.

Yorumlar (0)

Yorum Yaz