SQL PROGRAMLAMA EĞİTİMİ
SQL programlamaya geçerken stored procedure'ler test edilemez kalmasın. Trigger zinciri yan etkiyle veriye sürpriz değişiklik bırakmasın. Cursor ihtiyaç olmadığı yerde performansı düşürmesin. Bu eğitimin temel hedefi budur.
Aylarca farklı projelerden toparlanan kalıp sistematik bir disipline kavuşur. Yazılım geliştirici, DBA veya veri mühendisi olsun fark etmez. Her prosedürü ad-hoc yazmak yerine ortak şablon ve test yaklaşımıyla ilerlenir. Bakım süresi öngörülebilir, kod kalitesi tutarlı kalır. Resmi dokümantasyon için Microsoft T-SQL Language Reference birincil kaynaktır.
Katılımcı Profili
Veri katmanı kodunu test edilebilir biçimde yazmak isteyen profillere yöneliktir:
- Yazılım Geliştiriciler: Uygulamadan tetiklenen prosedür ve fonksiyonları yazar
- Veritabanı Yöneticileri (DBA): Operasyon ve bakım için T-SQL/PL/SQL kullanır
- Veri Mühendisleri: ETL süreçlerinde stored procedure ile veri dönüşümü yapar
- Raporlama Uzmanları: View ve fonksiyonlarla yeniden kullanılabilir veri katmanı kurar
- BI Geliştiricileri: Cube ve dashboard kaynak prosedürlerini hazırlar
Ön Gereklilikler
Programa hazır gelmek için aşağıdaki temeller önerilir:
- SELECT, JOIN, GROUP BY ve subquery'e rahat hakimiyet
- İlişkisel veritabanı kavramlarına aşinalık (PK, FK, index)
- En az bir DBMS arayüzü kullanma deneyimi (SSMS, SQL Developer, pgAdmin)
- Programlama mantığı: değişken, koşul, döngü, fonksiyon
- Hata ve istisna kavramına genel farkındalık
Süresi ve Tarihi
Süre: 3 gün. Bu süre standart program içindir; ek modüllere ve hedefe göre süre özelleştirilebilir.
Eğitim tarihleri ve saatleri, katılımcı grubunun uygunluğuna göre birlikte planlanır.
Kazanımlar
Eğitim sonunda T-SQL veya PL/SQL ile yazım sistematik bir disipline kavuşur:
- Stored procedure'ü parametre, return value ve OUTPUT ile doğru kurar
- Variable, control flow ve cursor ile satır seviyesi işlemi yönetir
- Trigger çeşitlerini (DML, INSTEAD OF, AFTER) yerinde uygular
- Transaction yönetimi ve isolation level'ı doğru seçer
- TRY/CATCH ve RAISERROR/THROW ile hata yönetimi kurar
- Dynamic SQL ve sp_executesql ile parametreli sorgu yazar
- User-defined function (scalar, table-valued) ile yeniden kullanım sağlar
- Veri tabanı içi kod için temel test ve loglama yaklaşımı uygular
SQL Programlama Eğitimi Konuları
1. T-SQL Söz Dizimi ve Batch
- Batch, statement, GO ayırıcı
- Variable: DECLARE, SET, SELECT INTO
- Veri tipleri ve CAST/CONVERT
- Control flow: IF, ELSE, WHILE, BREAK, CONTINUE
- PRINT, RAISERROR ile çıktı
2. Stored Procedure
- CREATE PROCEDURE ve parametre tipleri
- Input, OUTPUT, default parametre
- Return value ve sonuç kümesi
- Schema-bound vs ad-hoc prosedür
- Nested call ve recursive SP
3. User-Defined Function
- Scalar function ile tekil değer
- Inline table-valued function
- Multi-statement table-valued function
- Deterministic vs nondeterministic
- Performans tuzakları
4. Cursor ve Set-Based Alternatif
- Cursor declare, fetch, close, deallocate
- Static, dynamic, forward-only türleri
- Cursor yerine set-based yaklaşım
- Window function ile satır iterasyonu
- Bulk operasyon stratejisi
5. Trigger - INSERT/UPDATE/DELETE Olayları
- DML trigger: AFTER, INSTEAD OF
- INSERTED ve DELETED sanal tabloları
- DDL trigger ve event seviyesi
- Recursive ve nested trigger
- Trigger anti-pattern'leri
6. Transaction ve Hata Yönetimi
- BEGIN, COMMIT, ROLLBACK, SAVEPOINT
- Isolation level seçimi
- TRY / CATCH bloğu
- ERROR_NUMBER, ERROR_MESSAGE, XACT_STATE
- THROW ve RAISERROR farkı
7. Dynamic SQL
- EXEC ve string concat sakıncaları
- sp_executesql ile parametreli dynamic SQL
- SQL injection'a karşı önlemler
- Metadata sorgulama (INFORMATION_SCHEMA, sys)
- Generic CRUD jenerasyonu
8. Temp Table, Table Variable ve CTE
- #temp ve ##global_temp davranışı
- @table variable
- Hangi senaryoda hangisi
- CTE ve recursive CTE
- Memory-optimized table giriş
9. Performans ve Tuning Bakışı
- Execution plan ve query store
- Parameter sniffing ve OPTION (RECOMPILE)
- Stored procedure plan cache
- SET NOCOUNT ON ve net etkisi
- Wait stats giriş
10. Test ve Bakım
- tSQLt ve utPLSQL ile birim test
- Stored procedure regresyon testi
- Versiyon kontrolüne kod alma
- Code review checklist
- Loglama ve audit deseni
SQL PROGRAMLAMA EĞİTİMİ ile İlgili
Sıkça Sorulan Sorular ve Cevapları
T-SQL mi PL/SQL mi anlatılıyor?
İhtiyaca göre ikisi de işlenebilir. Microsoft ortamında T-SQL, Oracle ortamında PL/SQL örnekleriyle ilerlenir. Söz dizimi farkları ayrı bölümde karşılaştırmalı verilir.
Cursor'ı ne zaman kullanmalıyım?
Cursor; satır seviyesi yan etki, ardışık dış işlem veya kompleks bağımlılık gerektiren senaryolarda tercih edilir. Çoğu durumda window function veya set-based çözüm daha verimlidir; bunu eğitimde karar matrisiyle netleştiririz.
Trigger'ı ne zaman tehlikeli yapar?
Trigger'lar görünmez kontrol akışı yaratır; performans, recursive davranış ve veri tutarlılığında sürpriz hataya yol açabilir. Eğitimde DML/DDL trigger anti-pattern'leri ve güvenli kullanım örüntüleri pekiştirilir.
Dynamic SQL kullanmak güvensiz değil mi?
sp_executesql ile parametreli kullanım güvenli ve hızlıdır. String concat ile EXEC tehlikeli, SQL injection riski taşır. Eğitimde her iki yaklaşım ve metadata sorgulamayla generic kod üretimi gösterilir.
Eğitim içeriğini ihtiyaçlarımıza göre özelleştirebilir misiniz?
Evet. Eğitim öncesinde ihtiyaç analizi yaparak içerik ve örnekleri kurumun hedeflerine göre uyarlıyoruz. Modüller eklenebilir, bazı başlıklar derinleştirilebilir veya sadeleştirilebilir.
Eğitim yeri, yöntemi ve sertifikasyon süreci nasıl ilerliyor?
Eğitim online (canlı) veya yerinde gerçekleştirilebilir; tarih ve saatleri katılımcı grubunun uygunluğuna göre planlıyoruz. Program sonunda katılım sertifikası verilir; talep edilirse ölçme-değerlendirme ve raporlama eklenebilir.



