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
JOINsorguları 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_name | dog_name | walk_distance | meals_perday | cups_permeal |
|---|---|---|---|---|
| Ali | Fıstık | 5.00 | 3 | 1.00 |
| Ali | Şanslı | 4.50 | 3 | 2.00 |
| Ayşe | Boncuk | 2.75 | 2 | 0.75 |
| Can | Karabaş | 6.50 | 3 | 1.25 |
| Can | Pıtırcık | 1.25 | 2 | 0.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_name | en_uzun_yuruyus |
|---|---|
| Ali | 5.00 |
| Ayşe | 2.75 |
| Can | 6.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)
- View’lara veri ekleyebilir veya silebilir miyim?
Genellikle hayır. Ancak tek tabloya dayanan basit view’larda INSERT veya UPDATE mümkün olabilir.
- View performansı artırır mı?
View’lar doğrudan performansı artırmaz, ama kod tekrarını azaltarak geliştirici verimliliğini yükseltir.
- View ve tablo arasındaki fark nedir?
Tablo veriyi diskte tutar; view sadece bir sorgunun sonucunu gösterir.
- View’lar yedekleme dosyalarına dahil olur mu?
Evet, ama sadece tanım (CREATE VIEW) kısmı dahil edilir; verinin kendisi değil.
- 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.