Skip to main content

SQL View Oluşturma ve Kullanma: Sanal Tablolarla Veri Güvenliği ve Kolaylığı

💡 Bu Rehberde Ne Öğreneceksiniz?

Bu rehberde, SQL'in güçlü bir özelliği olan View (Görünüm) yapısını tanıyacaksınız.
View’lar, karmaşık sorguları sadeleştirir, veri erişimini güvenli hale getirir ve veritabanı yönetimini kolaylaştırır.
Birden fazla tabloyu birleştiren, hesaplanmış sütunlar içeren ve yalnızca belirli sütunlara erişim yetkisi tanıyan View’ları adım adım oluşturmayı öğreneceksiniz.


🧠 Temel Kavram: SQL View Nedir?

View, fiziksel veri tutmayan sanal bir tablodur.
Sonuçları, tanımlandığı SELECT sorgusundan dinamik olarak üretir.

Bu sayede:

  • Kullanıcı erişimi kısıtlanabilir.
  • Karmaşık JOIN sorguları sadeleştirilebilir.
  • Veri tekrarından kaçınılır.
  • Raporlama süreçleri hızlanır.

⚙️ 1️⃣ Örnek Veritabanı Kurulumu

Senaryomuz: Bir köpek bakım hizmeti işletiyorsunuz ve çalışanlar ile köpeklerin bilgilerini ayrı tablolarda tutuyorsunuz.
Bu iki tabloyu tek bir sanal tablo gibi göstermek için VIEW kullanacağız.

MySQL’e Bağlanın

mysql -u rabisu_dev -p

Bu komut MySQL'e rabisu_dev kullanıcısıyla bağlanır.

Veritabanını Oluşturun

CREATE DATABASE kopek_bakim_db;
USE kopek_bakim_db;

Yeni bir kopek_bakim_db veritabanı oluşturur ve aktif hale getirir.

Çalışanlar Tablosu

CREATE TABLE calisanlar (
emp_id INT PRIMARY KEY,
emp_name VARCHAR(20)
);

Çalışanların kimlik ve ad bilgilerini saklar.

Köpekler Tablosu

CREATE TABLE kopekler (
dog_id INT PRIMARY KEY,
dog_name VARCHAR(20),
walker INT,
walk_distance DECIMAL(3,2),
meals_perday INT,
cups_permeal DECIMAL(3,2),
FOREIGN KEY (walker) REFERENCES calisanlar(emp_id)
);

Her köpeğin adı, bakıcısı ve beslenme bilgilerini tutar.

Örnek Veriler:

INSERT INTO calisanlar VALUES
(1, 'Ali'),
(2, 'Ayşe'),
(3, 'Can');

INSERT INTO kopekler VALUES
(1, 'Fıstık', 1, 5.00, 3, 1.00),
(2, 'Karabaş', 3, 6.50, 3, 1.25),
(3, 'Pıtırcık', 3, 1.25, 2, 0.25),
(4, 'Boncuk', 2, 2.75, 2, 0.75),
(5, 'Şanslı', 1, 4.50, 3, 2.00),
(6, 'Cesur', 1, 4.50, 3, 2.00),
(7, 'Maya', 3, 3.00, 2, 1.50);

🧩 2️⃣ View Oluşturma ve Sorgulama

View Oluşturma

Çalışan ile ona bağlı köpeklerin bilgilerini birleştiren görünüm (yuruyus_cizelgesi) oluşturalım.

CREATE VIEW yuruyus_cizelgesi AS
SELECT emp_name, dog_name, walk_distance, meals_perday, cups_permeal
FROM calisanlar
JOIN kopekler ON emp_id = walker;

Bu görünüm, iki tabloyu JOIN ile birleştirir.

View Sorgulama

SELECT * FROM yuruyus_cizelgesi;

Görünümü tıpkı bir tablo gibi sorgular.

Örnek Çıktı:

emp_namedog_namewalk_distancemeals_perdaycups_permeal
AliFıstık5.0031.00
AliŞanslı4.5032.00
AyşeBoncuk2.7520.75
CanKarabaş6.5031.25
CanPıtırcık1.2520.25

📊 3️⃣ View Üzerinde Hesaplama ve Analiz

View’lar, toplama fonksiyonlarıyla analiz yapmak için idealdir.

En Uzun Yürüyüş Mesafesi

SELECT emp_name, MAX(walk_distance) AS en_uzun_yuruyus
FROM yuruyus_cizelgesi
GROUP BY emp_name;

Her çalışanın yürüttüğü en uzun mesafeyi listeler.

Çıktı:

emp_nameen_uzun_yuruyus
Ali5.00
Ayşe2.75
Can6.50

🔐 4️⃣ Güvenlik: View ile Erişim Kısıtlamak

View’lar, kullanıcıya sadece belirli verilere erişim izni vermek için kullanılabilir.

Yeni Kullanıcı Oluşturma

CREATE USER 'ofis_yonetici'@'localhost' IDENTIFIED BY 'sifre123';

###Sadece Görünüm Yetkisi Verme

GRANT SELECT ON kopek_bakim_db.yuruyus_cizelgesi TO 'ofis_yonetici'@'localhost';

Bu kullanıcı sadece yuruyus_cizelgesi görünümünü okuyabilir.

🔄 5️⃣ View Güncelleme ve Silme

Temel Tablo Güncellenirse View da Güncellenir

INSERT INTO kopekler VALUES (8, 'Şimşek', 2, 3.50, 3, 1.00);
SELECT * FROM yuruyus_cizelgesi;

Yeni veri eklendiğinde görünüm otomatik güncellenir.

Görünüm Yapısını Güncelleme

CREATE OR REPLACE VIEW yuruyus_cizelgesi AS
SELECT emp_name, dog_name, walk_distance, meals_perday,
(cups_permeal * meals_perday) AS toplam_mama
FROM calisanlar JOIN kopekler ON emp_id = walker;

Görünümü, günlük toplam mama miktarını hesaplayacak şekilde günceller.

Görünümü Silme

DROP VIEW yuruyus_cizelgesi;

Görünümü kalıcı olarak siler.


❓ Sıkça Sorulan Sorular (SSS)

  1. View’lara veri ekleyebilir veya silebilir miyim?

Genellikle hayır. Ancak tek tabloya dayanan basit view’larda INSERT veya UPDATE mümkün olabilir.

  1. View performansı artırır mı?

View’lar doğrudan performansı artırmaz, ama kod tekrarını azaltarak geliştirici verimliliğini yükseltir.

  1. View ve tablo arasındaki fark nedir?

Tablo veriyi diskte tutar; view sadece bir sorgunun sonucunu gösterir.

  1. View’lar yedekleme dosyalarına dahil olur mu?

Evet, ama sadece tanım (CREATE VIEW) kısmı dahil edilir; verinin kendisi değil.

  1. View’ları hangi durumlarda kullanmalıyım?

Sık tekrarlanan sorguları saklamak, erişimi sınırlandırmak ve raporlama işlemlerini hızlandırmak için.


🚀 Sonuç

Bu rehberde SQL View yapısını kullanarak:

Karmaşık sorguları sadeleştirmeyi,

Kullanıcı erişimini kısıtlamayı,

Görünümleri dinamik olarak yönetmeyi öğrendiniz.

Artık veritabanınızı hem daha güvenli hem de daha yönetilebilir hale getirebilirsiniz.