Merhaba Webkolog takipçileri! MySQL serimizde bugüne kadar temel veritabanı işlemlerini, yani CRUD operasyonlarını detaylıca inceledik. Şimdi sıra, veritabanı yönetimini daha esnek, verimli ve otomatik hale getiren üç güçlü aracı öğrenmeye geldi: View (Görünüm), Trigger (Tetikleyici) ve Stored Procedure (Saklı Prosedür). Bu araçlar, karmaşık işlemleri basitleştirmenize, veri bütünlüğünü sağlamanıza ve veritabanı performansınızı artırmanıza yardımcı olacak.
View (Görünüm): Sanal Tablolarla Veri Okuma
Bir View, aslında fiziksel bir tablo değildir; bir veya daha fazla tablodan veri çeken bir sorgunun kaydedilmiş halidir. Yani, sanal bir tablo düşünebilirsiniz. Görünümler, karmaşık sorguları basitleştirmek, hassas verileri gizlemek ve belirli kullanıcı gruplarına sadece ihtiyaç duydukları verileri göstermek için harikadır.
View Oluşturma
Bir görünüm oluşturmak için CREATE VIEW
komutunu kullanırız. Örneğin, sadece kız öğrencilerin bilgilerini gösteren bir görünüm oluşturalım:
CREATE VIEW kiz_ogrenciler AS
SELECT * FROM ogrenciler WHERE cins = 'kız';
Bu kodu çalıştırdıktan sonra, sanki kiz_ogrenciler
adında yeni bir tablonuz varmış gibi bu görünümü kullanabilirsiniz.
View Kullanımı
-- 'kiz_ogrenciler' görünümünden tüm kayıtları getir
SELECT * FROM kiz_ogrenciler;
-- 'kiz_ogrenciler' görünümünden adı 'Ayşe' olan öğrencileri getir
SELECT * FROM kiz_ogrenciler WHERE ad = 'Ayşe';
Görünümler, özellikle karmaşık JOIN'ler içeren sorguları tekrar tekrar yazmaktan sizi kurtarır ve sorgu yazımını basitleştirir.
Trigger (Tetikleyici): Otomatik Veritabanı Olay Yönetimi
Bir Trigger, belirli bir veritabanı olayı (örneğin bir tabloya veri ekleme, güncelleme veya silme) meydana geldiğinde otomatik olarak çalışan bir SQL kod bloğudur. Tetikleyiciler, veri bütünlüğünü korumak, denetim (logging) kayıtları tutmak veya belirli koşullar altında otomatik eylemleri tetiklemek için kullanılır.
Trigger Oluşturma
Tetikleyici oluştururken DELIMITER
komutunu kullanırız. Çünkü tetikleyici kod bloğu içerisinde noktalı virgül (;
) kullanacağımız için MySQL'in komutun bittiğini sanmasını engellemek amacıyla geçici olarak sınırlayıcıyı değiştiririz. İşlem bitince tekrar varsayılan sınırlayıcıya (;
) döneriz.
DELIMITER $$
CREATE TRIGGER insert_tetikleyici
AFTER INSERT ON kisiler
FOR EACH ROW
BEGIN
-- kisiler tablosuna her yeni kayıt eklendiğinde, kisi_log tablosuna bir log kaydı ekle
INSERT INTO kisi_log (aciklama)
VALUES (CONCAT(NEW.id, ' nolu kayıt ', NOW(), ' tarihinde eklendi.'));
END$$
DELIMITER ;
AFTER INSERT ON kisiler
: "kisiler" tablosuna bir kayıt eklendikten sonra tetikleneceğini belirtir.BEFORE
veyaAFTER
veINSERT
,UPDATE
,DELETE
olayları kullanılabilir.FOR EACH ROW
: Her etkilenen satır için tetikleyicinin çalışacağını belirtir.NEW
:INSERT
veUPDATE
tetikleyicilerinde, yeni eklenen veya güncellenen satırın değerlerine erişmek için kullanılır (örn:NEW.id
).OLD
:UPDATE
veDELETE
tetikleyicilerinde, silinen veya güncellenmeden önceki satırın değerlerine erişmek için kullanılır (örn:OLD.isim
).
Trigger Kullanımı (Örnek)
Şimdi kisiler
tablosuna bir kayıt ekleyelim ve tetikleyicinin otomatik olarak çalışmasını izleyelim:
INSERT INTO kisiler (isim) VALUES ('Ali');
Bu işlemi yaptığınızda, kisi_log
tablonuza otomatik olarak "X nolu kayıt [tarih] tarihinde eklendi." şeklinde bir kayıt eklenmiş olacak.
Trigger Silme ve Görüntüleme
-- 'insert_tetikleyici' adlı tetikleyiciyi sil
DROP TRIGGER insert_tetikleyici;
-- Tüm tetikleyicileri listele
SHOW TRIGGERS;
Stored Procedure (Saklı Prosedür): Tekrar Kullanılabilir Kod Blokları
Bir Stored Procedure, bir veya daha fazla SQL ifadesini içeren ve tek bir mantıksal birim olarak saklanan bir SQL kod bloğudur. Fonksiyonlara benzerler ancak genellikle bir değer döndürmekten çok, bir dizi işlemi gerçekleştirmek için kullanılırlar. Saklı prosedürler, karmaşık iş mantığını veritabanı seviyesine taşımak, performansı artırmak (çünkü bir kez derlenirler) ve güvenliği sağlamak için çok faydalıdır.
Stored Procedure Oluşturma
Yine DELIMITER
kullanarak prosedürü oluştururuz.
DELIMITER $$
-- Eğer 'sorgula' adında bir prosedür varsa sil (güncelleme veya yeniden oluşturma için)
DROP PROCEDURE IF EXISTS sorgula$$
CREATE PROCEDURE sorgula (param INT)
BEGIN
-- 'param' değerinden büyük id'ye sahip kişileri seç
SELECT * FROM kisiler WHERE id > param;
END$$
DELIMITER ;
Bu örnekte, sorgula
adında, bir adet tamsayı (param
) parametresi alan bir prosedür oluşturduk.
Stored Procedure Kullanımı
Saklı prosedürleri CALL
komutu ile çalıştırırız:
-- id'si 5'ten büyük olan tüm kişileri getir
CALL sorgula(5);
Bu, veritabanınızda karmaşık raporlama veya veri işleme görevlerini kolayca tekrarlanabilir hale getirir.
View'ler, Trigger'lar ve Stored Procedure'ler, MySQL'de veritabanı yönetimini bir sonraki seviyeye taşıyan güçlü araçlardır. Bu araçları doğru kullandığınızda, uygulamalarınız daha performanslı, daha güvenli ve daha yönetilebilir olacaktır.
Webkolog'u takipte kalın!
Hepinize bol kodlu ve başarılı projeler dilerim!
0 yorum:
Yorum Gönder