MySQL saklı yordamlar birden fazla görevi gruplandırmak tek bir dosyaya dönüştürün ve görevi ileride kullanmak üzere sunucuya kaydedin.
Saklı yordamlar veritabanı yönetimini basitleştirir ve ağ trafiğini azaltır. Örneğin, MySQL sunucusuna bir sorgu vermek, sorguyu işler ve sonuçları döndürür. Saklı yordamların kullanılması, sorguları daha sonra yürütülebilmeleri için sunucuya kaydeder.
Bu öğreticide saklı yordamları oluşturmayı, listelemeyi, değiştirmeyi ve bırakmayı öğreneceksiniz.
Önkoşullar
- MySQL Sunucusu ve MySQL Workbench kurulu
- Kök ayrıcalıklarına sahip bir MySQL kullanıcı hesabı
MySQL’de Saklı Prosedürler Nelerdir?
MySQL saklı yordamları önceden derlenmiş SQL ifadeleri bir veritabanında saklanır. Bir ad, bir parametre listesi ve SQL deyimleri içeren alt programlardır.
Tüm ilişkisel veritabanı sistemleri saklı yordamları destekler ve herhangi bir ek çalıştırma ortamı paketi gerektirmez.
Saklı Prosedürler Nasıl Kullanılır?
Saklı yordamları çağırmak için, CALL
deyimi veya diğer saklı yordamlar. Bir saklı yordam ilk kez çağrıldığında, MySQL onu veritabanı kataloğunda arar, kodu derler ve ön bellekve yürütür.
Aynı oturumdaki müteakip çalıştırmalar, saklı yordamları önbellekten yürüterek onları tekrarlayan görevler için son derece kullanışlı hale getirir.
Saklı yordamlar kullanır parametreler değerleri iletmek ve sonuçları özelleştirmek için. Parametreler, sorgunun çalıştığı ve sonuçları döndürdüğü tablodaki sütunları belirtmek için kullanılır.
Saklı yordamlar şunları da içerebilir: IF
, CASE
Ve LOOP
kontrol akışı ifadeleri kodu prosedürel olarak uygulayan.
Saklı Prosedür Oluştur
İki şekilde bir saklı yordam oluşturun:
1. MySQL Shell’i kullanın
MySQL’de bir saklı yordam oluşturmak için aşağıdaki sözdizimini kullanın:
DELIMITER //
CREATE PROCEDURE procedure_name ( IN | OUT | INOUT parameter_name parameter_datatype (length), … )
BEGIN
SQL statements
END //
DELIMITER ;
Varsayılan olarak, sözdizimi kullanılan veritabanıyla ilişkilendirilir, ancak veritabanı adını aşağıdaki şekilde belirterek sözdizimini başka bir veritabanı için de kullanabilirsiniz: database_name.procedure_name
.
Burada, ilk DELIMITER
bağımsız değişken, varsayılan sınırlayıcıyı şu şekilde ayarlar: //
son iken DELIMITER
bağımsız değişken onu noktalı virgüle geri döndürür ;
. Birden çok deyim kullanmak için farklı sınırlayıcılar belirtin. $$
.
Prosedür adı şundan sonra gelir: CREATE PROCEDURE
argüman. Prosedür adından sonra, prosedürde kullanılacak parametreleri, parametrenin adını, veri tipini ve veri uzunluğunu belirtmek için parantez kullanın. Her parametreyi virgülle ayırın.
bu parametre modları bunlar:
IN
– Bir parametreyi giriş olarak iletmek için kullanın. Sorgu tanımlandığında, saklı yordama bir bağımsız değişken iletir. Parametrenin değeri her zaman korunur.OUT
– Çıkış olarak bir parametre geçirmek için kullanın. Değeri saklı yordam içinde değiştirebilirsiniz ve yeni değer çağıran programa geri gönderilir.INOUT
– KombinasyonuIN
VeOUT
parametreler. Çağıran program argümanı iletir ve prosedür argümanı değiştirebilir.INOUT
parametre, yeni değeri programa geri iletir.
Örneğin:
Saklı yordamı çağırarak yürütün:
CALL procedure_name;
Sorgu, saklı yordamın sonuçlarını döndürür.
2. MySQL Workbench’i kullanın
Saklı yordam oluşturmanın başka bir yolu da MySQL Workbench Sihirbazını kullanmaktır. Sihirbaz sezgiseldir ve sınırlayıcılar yerleştirmeniz veya biçim konusunda endişelenmeniz gerekmediğinden süreci basitleştirir.
Bu adımları takip et:
Aşama 1: Sağ tık saklı yordamlar MySQL Workbench’in Navigator penceresinde ve seçin Saklı Yordam Oluştur… Sihirbazı başlatmak için
Adım 2: Prosedür adını belirtin ve içindeki kodu girin. BAŞLAMAK … SON engellemek.
Aşama 3: Kodu inceleyin ve tıklayın Uygula.
Adım 4: Yürütmeyi tıklayarak onaylayın Uygula ve tıklayarak prosedürü oluşturun Sona ermek.
Adım 5: İşe yarayıp yaramadığını görmek için prosedürü uygulayın. Sorguları yürütmek için yeni bir SQL sekmesi oluşturun.
Adım 6: CALL
SQL sekmesindeki prosedürü ve tıklayın Uygulamak.
Hiçbir hata dönmezse, MySQL saklı yordamı yürütür ve sonuçları görüntüler.
Saklı Prosedürleri Listeleme
Tüm saklı yordamların listesini görmenin üç yolu vardır:
1. MySQL Shell’i kullanın
Özellikleri de dahil olmak üzere, erişiminiz olan tüm saklı yordamların bir listesini almak için aşağıdaki sözdizimini kullanın:
SHOW PROCEDURE STATUS [LIKE 'pattern' | WHERE search_condition]
bu SHOW PROCEDURE STATUS
ifadesi uzun bir çıktı döndürür. Açıklama, sunucuda erişiminiz olan saklı yordamların adlarını ve özelliklerini görüntüler.
Şu anda sunucuda bulunan prosedürleri bulmak için çıktıyı kaydırın.
bu LIKE
bağımsız değişken, adında belirli bir sözcük içeren saklı yordamları bulur. Kullanmak %
sıfır da dahil olmak üzere herhangi bir sayıda karakteri değiştirmek için.
Örneğin:
bu WHERE
bağımsız değişkeni, saklı yordamları yalnızca belirli bir veritabanında listelemenize olanak tanır.
Örneğin:
Bu örnekte, deyim yalnızca ‘ için saklı yordamları döndürür.müşteri listesi‘ veri tabanı.
2. Veri Sözlüğünü Kullan
bu bilgi şeması veritabanı adlı bir tablo içerir. rutinlerGeçerli MySQL sunucusundaki tüm veritabanlarıyla ilgili saklı yordamlar ve işlevler hakkında bilgi içeren.
Bir veritabanı için tüm saklı yordamları görmek için aşağıdaki sözdizimini kullanın:
SELECT
routine_name
FROM
information_schema.routines
WHERE
routine_type = 'PROCEDURE'
AND routine_schema = 'database_name';
3. MySQL Workbench’i kullanın
Saklı yordamları görüntülemeye yönelik bir GUI yaklaşımı için MySQL Workbench’i kullanın. Saklı yordamları görmek için şu adımları izleyin:
Aşama 1: Kullanmak istediğiniz veritabanına çift tıklayın. gezgin bölüm.
Adım 2: Genişletin saklı yordamlar açılır öğe.
Bu öğe, geçerli veritabanı için tüm saklı yordamları gösterir.
Saklı Prosedürü Değiştir
Saklı bir yordamı değiştirmek şu anlama gelir: özellikleri değiştir bir prosedürün Orada açıklama yok için MySQL’de parametreleri veya gövdeyi değiştirmek bir saklı yordamın. Parametreleri veya gövdeyi değiştirmek için saklı yordamı bırakın ve yeni bir tane oluşturun.
Bir saklı yordamı iki şekilde değiştirin:
1. MySQL Shell’i kullanın
kullanarak bir prosedür özelliğini değiştirin. ALTER PROCEDURE
ifade. Örneğin daha önce oluşturduğumuz bir prosedüre yorum ekleyebiliriz. sözdizimi şöyledir:
ALTER PROCEDURE procedure_name
COMMENT 'Insert comment here';
2. MySQL Workbench’i kullanın
MySQL Workbench GUI, kullanıcıların saklanan bir prosedürü değiştirmesine izin verir. parametre ekleyin veya kodu değiştirin. MySQL Çalışma Tezgahı damla mevcut saklı yordam ve yaratır değişiklikler yapıldıktan sonra yeni bir tane.
Bu adımları takip et:
Aşama 1: Gezgin bölümünde, değiştirmek istediğiniz saklı yordama sağ tıklayın. seçin Saklı yordamı değiştir… öğe.
Adım 2: Sekme açıldığında, mevcut saklı yordamda istediğiniz değişiklikleri yapın ve tıklayın. Uygula.
Aşama 3: Bir SQL Komut Dosyası gözden geçirme penceresi işlemi gösteren görünür – mevcut saklı yordam bırakılır ve değişiklikleri içeren yeni bir prosedür oluşturulur.
Tıklamak Uygula ve daha sonra Sona ermek komut dosyasını çalıştırmak için bir sonraki pencerede.
Saklı Prosedürü Bırak
Bir prosedürü bırakmak (silmek) için:
1. MySQL Shell’i kullanın
kullanarak bir saklı yordamı sunucudan silin. DROP PROCEDURE
ifade.
Temel sözdizimi şöyledir:
DROP PROCEDURE [IF EXISTS] stored_procedure_name;
bu IF EXISTS
parametresi, yalnızca sunucuda varsa saklı yordamı bırakır. yerine saklı yordamın adını girin. stored_procedure_name
sözdizimi.
Örneğin:
‘ adında bir prosedür olmadığı içinÖlçek‘ sunucuda çıktı, 0 satırın etkilendiğini ve belirtilen prosedürün mevcut olmadığını belirtir.
olmadan var olmayan bir prosedürün bırakılması IF EXISTS
parametre bir hata döndürür.
2. MySQL Workbench’i kullanın
Saklı bir prosedürü MySQL Workbench ile bırakmak için şu adımları izleyin:
Aşama 1: Gezgin bölümünde Saklı Yordamlar öğesini genişletin. Silmek istediğiniz saklı yordama sağ tıklayın ve seçin Saklı Prosedürü Bırak… bağlam menüsünde.
Adım 2: Onay penceresinde tıklayın Şimdi bırak saklı yordamı silmek için.
Bu hareket kalıcı olarak siler prosedür.
MySQL Saklı Prosedürlerin Avantajları ve Dezavantajları
Saklı yordamlar, belirli ihtiyaçlara göre uyarlandıklarından çeşitli avantaj ve dezavantajlara sahiptir. Aşağıda bazı avantaj ve dezavantajlar verilmiştir.
Saklı Prosedürleri Kullanmanın Avantajları
Saklı yordamların avantajları şunlardır:
Ağ Trafiği Azaltma
Saklı yordamlar, tüm programlama mantığını sunucuda tutarak uygulamalar ile MySQL Sunucusu arasındaki ağ trafiğini azaltmaya yardımcı olur. Uygulamalar, ağ üzerinden birden fazla sorgu sonucu göndermek yerine yalnızca prosedür adını ve parametre girişini gönderir.
Gelişmiş Güvenlik
Veritabanı yöneticisi, uygulamalara tablolara doğrudan erişim vermeden yalnızca belirli saklı yordamları arama ve bunlara erişme ayrıcalıkları verir. Girdi parametreleri yürütülebilir kod olarak değil, değerler olarak ele alındığından, saklı yordamlar betik enjeksiyon saldırılarını önlemeye yardımcı olur.
Merkezi İş Mantığı
Saklı yordamlar, birden çok uygulama tarafından yeniden kullanılabilen iş mantığını kapsar. Bu, birçok farklı uygulamada aynı mantığı tekrarlamayı azaltmaya yardımcı olur ve veritabanını daha tutarlı hale getirir.
Saklı Prosedürleri Kullanmanın Dezavantajları
Saklı yordamların dezavantajları şunlardır:
Kaynak kullanımı
Birçok saklı yordamın ve mantıksal işlemin kullanılması, her bağlantı için bellek ve CPU kullanımının önemli ölçüde artmasına neden olur.
Taşınabilirlik Yok
Belirli bir dilde yazılmış saklı yordamları bir kurulumdan diğerine taşımak kolay değildir. Saklı bir yordama güvenmek, kullanıcıyı belirli bir veritabanına da bağlar.
Sorun Giderme ve Test Etme
MySQL, saklı yordamları test etmek ve hata ayıklamak için yardımcı programlar sağlamaz, bu nedenle bunların hatalarını ayıklamak zor olabilir. Saklı yordamları geliştirmek ve sürdürmek kapsamlı bilgi gerektirir. Bu, yeni geliştiriciler için bir zorluktur ve ek bakım maliyetlerine neden olur.
Çözüm
Bu makaleyi okuduktan sonra saklı yordamların ne olduğunu ve ne zaman kullanılacağını biliyorsunuz. Ayrıca, tüm mevcut saklı yordamları nasıl oluşturacağınızı, değiştireceğinizi, göreceğinizi ve artık ihtiyacınız olmayanları nasıl sileceğinizi de biliyorsunuz.