MySQL'de Saklı Prosedürler: Eksiksiz Bir Kılavuz

Son Güncelleme: Mayıs 26 2025
  • MySQL'deki saklı yordamlar, SQL ifadelerini yeniden kullanılabilir birimlere gruplandırır.
  • Sunucuda çalışırken performansı artırırlar, ağ trafiğini azaltırlar.
  • Belirli izinler aracılığıyla verilere erişimi kontrol ederek daha fazla güvenlik sağlarlar.
  • Endekslerin kullanımı ve imleçlerin önlenmesi yoluyla performans optimizasyonunu kolaylaştırırlar.
MySQL'de Saklı Prosedürler

MySQL'de saklı yordamlar nelerdir?

MySQL'deki saklı prosedürler, veritabanı sunucusunda depolanan ve çağrıldığında yürütülen komut dosyaları veya SQL kod bloklarıdır. Birbiriyle ilişkili SQL ifadelerini tek, yeniden kullanılabilir, mantıksal bir birim halinde gruplandırmanın güçlü bir yoludur. Saklı prosedürler programlama mantığını basitleştirir, performansı artırır ve veritabanı güvenliğini geliştirir.

Saklı prosedürleri kullanmanın avantajları

Saklı yordamlar uygulama geliştirme ve veritabanı yönetiminde sayısız avantaj sunar. Başlıca avantajlarından bazıları şunlardır:

  1. Modülerlik ve kodun yeniden kullanımıSaklı yordamlar, ilgili SQL ifadelerini mantıksal bir birimde gruplandırmanıza olanak tanır ve böylece bunların uygulamanın farklı bölümlerinde yeniden kullanılmasını kolaylaştırır. Bu, kodun sürdürülebilirliğini artırır ve kod tekrarını azaltır.
  2. Daha iyi performans: Yürütüldüğünde veritabanı sunucusu Veri depolama için, saklı yordamlar istemci uygulamasından birden fazla sorgu gönderme ihtiyacını ortadan kaldırır. Bu, ağ trafiğini azaltır ve genel uygulama performansını iyileştirir.
  3. güvenlikSaklı yordamlar, verilere erişimi kontrol etmek ve belirli güvenlik kurallarını uygulamak için kullanılabilir. Saklı yordamlar için yürütme izinleri kullanıcı rollerine atanabilir ve bu da ek bir güvenlik düzeyi sağlar.
  4. hata azaltmaProgramlama mantığını saklı yordamlara yerleştirerek, uygulamanızda hata yapma olasılığını azaltırsınız. Bunun nedeni, saklı yordamların bir kez test edilip hata ayıklanması ve daha sonra kaynak kodunu değiştirmeden birden fazla uygulama tarafından kullanılabilmesidir.

Saklı Prosedürler Oluşturma

MySQL'de saklı yordamlar oluşturmak nispeten basit bir işlemdir. Saklı bir prosedür oluşturmak için şu ifade kullanılır: CREATE PROCEDURE. Aşağıda, bir tablodaki tüm kayıtları görüntüleyen bir saklı yordam oluşturmaya ilişkin temel bir örnek verilmiştir:

  MySQL Veri Türleri: Özellikler ve Örnekler

OLUŞTURMA PROSEDÜRÜ sp_show_records()
BAŞLA
SELECT * FROM tablo;
BİTİŞ

Bu örnekte, sp_mostrar_registros saklı yordamın adıdır. Blok BEGIN y END bu durumda basit bir sorgudan oluşan prosedürün gövdesini tanımlar SELECT "tablo" adlı tablodaki tüm kayıtları görüntülemek için.

Saklı yordamlardaki parametreler

Saklı prosedürler, yürütme zamanında harici değerler almalarına olanak tanıyan parametreler kabul edebilir. Parametreler, prosedür bildiriminde tanımlanır ve prosedür gövdesi içinde kullanılır. Aşağıda, iki parametre kabul eden ve koşullu bir sorgu gerçekleştiren bir saklı prosedür örneği verilmiştir :

YÖNTEM sp_search_product(IN name VARCHAR(50), IN price DECIMAL(8,2)) OLUŞTUR
BAŞLA
SELECT * FROM products WHERE name LIKE CONCAT('%', name, '%') AND price <= price;
BİTİŞ

Bu örnekte, saklı yordam sp_buscar_producto iki parametre kabul eder: nombre y precio. Danışma SELECT Prosedürün gövdesinde, bu parametreleri kullanarak “ürünler” tablosundaki kayıtları kısmi bir ad ve maksimum bir fiyata göre filtreleyebilirsiniz.

Yerel değişkenler ve akış kontrolü

MySQL'deki saklı yordamlar yerel değişkenleri ve koşullar ve döngüler gibi akış kontrol yapılarını kullanabilir. Bu, saklı yordamlar içinde daha karmaşık ve koşullu işlemlere olanak tanır. Aşağıda değişkenleri ve akış denetimini kullanan bir saklı yordamın örneği verilmiştir:

PROSEDÜR OLUŞTUR sp_actualizar_stock(producto_id INT'DE, cantidad INT'DE)
BAŞLA
stok_gerçek_int'i BİLDİR;

SELECT stok INTO current_stock FROM products WHERE id = product_id;

EĞER stok_gerçek >= miktar O ZAMAN
GÜNCELLEME ürünleri SET stok = stok – miktar WHERE id = product_id;
ELSE
'Yetersiz Stok' mesajını SEÇİN;
END IF;
BİTİŞ

Bu örnekte, saklı yordam sp_actualizar_stock iki parametre alır: producto_id y cantidad. Yerel bir değişken kullanır stock_actual Ürünün güncel stok değerini saklamak için. Daha sonra bir kontrol yapısı kullanın IF stokun yeterli olup olmadığını kontrol etmek ve "ürünler" tablosunda güncelleme yapmak veya aksi halde hata mesajı görüntülemek.

Saklı yordamlardaki işlevler

MySQL'de saklı prosedürler, SQL sorgularını yürütmenin yanı sıra fonksiyonlar da içerebilir . Fonksiyonlar, sorgu sonuçlarını basitçe görüntülemek yerine hesaplamalar yapmanıza ve değerler döndürmenize olanak tanır. Aşağıda, bir siparişin toplam fiyatını hesaplamak için bir fonksiyon kullanan bir saklı prosedür örneği verilmiştir:

  MySQL'e Karşı MariaDB: Birinci Kuzenlerin Düellosu

FONKSİYON OLUŞTUR fn_calculate_total_price(order_id INT) DECIMAL(8,2) DÖNER
BAŞLA
toplam DECIMAL(8,2)'yi BİLDİR;

SELECT SUM(fiyat * miktar) INTO toplam FROM sipariş_detayları WHERE sipariş_id = sipariş_id;

İADE toplam;
BİTİŞ

Bu örnekte, saklı yordam, şu adla adlandırılan bir işlevi içerir: fn_calcular_precio_total bir parametreyi kabul eden pedido_id ve siparişin toplam fiyatını döndürür. Fonksiyon yerel bir değişken kullanır total hesaplamanın sonucunu depolamak ve ardından ifadeyi kullanarak döndürmek için RETURN.

Önceden Tanımlanmış Saklı Prosedürler

MySQL, çok çeşitli yaygın görevleri kapsayan bir dizi önceden tanımlanmış saklı prosedür sunar. Bu saklı prosedürler, ek kod yazmaya gerek kalmadan doğrudan veritabanlarında kullanılabilir . En sık kullanılan önceden tanımlanmış saklı prosedürlerden bazıları şunlardır:

  • COUNT(): Belirtilen koşulla eşleşen satır sayısını döndürür.
  • SUM(): Belirtilen sütundaki değerlerin toplamını hesaplar.
  • AVG(): Belirtilen sütundaki değerlerin ortalamasını hesaplar.
  • MAX(): Belirtilen sütundaki maksimum değeri döndürür.
  • MIN(): Belirtilen sütundaki en küçük değeri döndürür.

Bu önceden tanımlanmış saklı yordamlar son derece optimize edilmiştir ve sıfırdan eşdeğer SQL sorguları yazmaya kıyasla gelişmiş performans sunar.

Güvenlik ve yürütme izinleri

MySQL'de, saklı prosedürler için yürütme izinleri kullanıcı rollerine atanabilir. Bu, saklı prosedürlere erişimi kontrol etmenize ve veri bütünlüğünü ve güvenliğini korumanıza olanak tanır. Yürütme izinleri, MySQL'in kullanıcı ve ayrıcalık yönetim sistemi aracılığıyla yönetilir.

Yetkisiz erişimi önlemek ve veri gizliliğini sağlamak için saklı prosedürlere uygun şekilde yürütme izinleri atamak önemlidir. Veritabanı yöneticileri , güvenli bir ortamı korumak için yürütme izinlerini kısıtlayıcı bir şekilde atamalı ve kullanıcı ayrıcalıklarını periyodik olarak gözden geçirmelidir.

Saklı prosedürleri optimize etme

En iyi performansı sağlamak için MySQL'deki saklı yordamları optimize etmek önemlidir. Yaygın optimizasyon tekniklerinden bazıları şunlardır:

  1. Endeksleri kullanma:Saklı yordamlar içindeki sorgularda kullanılan sütunlardaki indeksler performansı önemli ölçüde artırabilir. İndeksler, saklı yordamların yürütme süresini azaltarak veri arama ve alma işlemlerini hızlandırır.
  2. İmleç kullanımını sınırla: İmleçlerin aşırı kullanımı saklı yordamların performansını olumsuz etkileyebilir. Bunun yerine, şu gibi küme işlemlerinin kullanılması önerilir: JOIN y GROUP BY satırlar arasında tek tek dolaşmak yerine verileri işlemek için.
  3. Alt sorguların aşırı kullanımından kaçının: Alt sorgular belirli senaryolarda yararlı olabilir, ancak aşırı kullanımı düşük performansa yol açabilir. Bunun yerine, şunu kullanmanız önerilir: JOIN y GROUP BY verileri etkin bir şekilde birleştirmek ve düzenlemek.
  4. Testler ve ayarlamalar yapın: Kapsamlı performans testleri gerçekleştirmek ve saklı yordamları gerektiği gibi ayarlamak önemlidir. Bu, darboğazları belirlemeyi, yürütme sürelerini ölçmeyi ve performansı iyileştirmek için prosedürün tasarımında veya mantığında değişiklikler yapmayı içerir.
  SQL Enjeksiyonu: Nedir, nasıl çalışır, örnekler ve verilerinizi korumaya yönelik ipuçları

Sonuç

Sonuç olarak, MySQL'deki saklı yordamlar, programlama mantığını basitleştirmek, performansı iyileştirmek ve uygulama geliştirme ve veritabanı yönetiminde güvenliği artırmak için güçlü bir araçtır. İlgili SQL ifadelerinin mantıksal ve yeniden kullanılabilir bir birimde gruplandırılmasına olanak tanır, modülerlik, kodun yeniden kullanımı, daha iyi performans ve güvenlik gibi avantajlar sunar.

MySQL'de saklı yordamlar oluşturmak, şu ifadeyi kullanarak basittir: CREATE PROCEDUREve farklı senaryolara uyum sağlayacak parametreleri kabul edebilir. Ayrıca, saklı yordamlar yerel değişkenler, akış denetimi ve işlevler içerebilir, bu da onları daha esnek ve güçlü hale getirir.

İndeks kullanma, imleç ve alt sorgu kullanımını sınırlama ve kapsamlı performans testleri gerçekleştirme gibi teknikleri kullanarak saklı yordamları optimize etmek önemlidir. Bu, son kullanıcılar için en iyi performansı ve verimli deneyimi garanti eder.

Özetle, MySQL'deki saklı yordamlar geliştiriciler ve veritabanı yöneticileri için değerli bir araçtır ve bunların doğru bir şekilde uygulanması ve iyileştirilmesi uygulamaların ve veritabanı sistemlerinin performansında ve güvenliğinde fark yaratabilir.

MySQL'de Saklı Prosedürler
İlgili makale:
MySQL'de Saklı Prosedürler: Nasıl Kullanılır?