SQL dersleri
295 ücretsiz Türkçe ders. Metni burada oku, alıştırmaları uygulamada çöz.
Temel
Temeller
- 1 dakikada ilk sorgun
- Veritabanı, tablo, satır ve sütun
- İlk sorgu: SELECT ve FROM
- Veri setini tanıyalım
- Takma adlar (AS) ve DISTINCT
- Hesaplanan sütunlar ve aritmetik
- WHERE ile filtreleme
- AND, OR, NOT ve işlem önceliği
- IN, BETWEEN ve LIKE
- LIKE ile alt çizgi ve yüzde işaretini aramak: ESCAPE
- NULL: bilinmeyen değer
- ORDER BY ve ilk N satır (LIMIT / TOP / FETCH)
- SQL yazım kuralları: anahtar kelime, noktalı virgül, yorum ve tırnak
- SQL nerede yazılır? Araçlar ve komut grupları
SQL'in Hikayesi
Özetleme
- Toplama fonksiyonları: COUNT, SUM, AVG, MIN, MAX
- GROUP BY: gruplara göre özet
- HAVING: grupları filtrelemek
- Satırları tek metinde toplamak: STRING_AGG, LISTAGG, GROUP_CONCAT
- Toplama fonksiyonlarında tuzaklar: COUNT türleri, NULL ve tam sayı bölmesi
- Bir sorgu hangi sırayla çalışır?
- Okunabilir SQL yazmak
Fonksiyonlar
- Metin fonksiyonları
- Sayılar, veri tipleri ve CAST
- Tarih ve saat fonksiyonları
- Tarihlerle filtreleme ve gruplama: aralıklar, aylar, haftanın günleri
- CASE WHEN: SQL'de eğer-ise
- COALESCE, NULLIF ve NULL ile hesap
- NULL güvenli karşılaştırma: IS DISTINCT FROM ve eşdeğerleri
- Koşullu sayım ve oranlar: SUM(CASE WHEN …)
Veri Değiştirme
Tabloları Birleştirme
Veritabanı Tasarımı
Bitirme Projeleri
Kanat Havayolları
- Kanat Havayolları: veri setini tanı, seç ve filtrele
- Uçuşları özetlemek: COUNT, SUM, AVG, GROUP BY ve HAVING
- Saat ve süre hesapları: rötar dakikası, saat dilimleri, zamanında kalkış
T-SQL (SQL Server)
Sertifika Hazırlık
Alıştırma Kampı
BT İş Analizi
Orta
Fonksiyonlar
- Veri tipleri ayrıntılı: ondalık hassasiyet, Unicode metin ve saat dilimleri
- Desen eşleme: LIKE'tan düzenli ifadelere (REGEX)
- Metin temizleme ve benzerlik: TRANSLATE, SOUNDEX, Levenshtein
- Harmanlama (collation): büyük/küçük harf ve Türkçe “İ” sorunu
Kanat Havayolları
- Uçuş, rota, havalimanı ve uçak: JOIN zinciri
- Aynı tabloyu iki kez kullanmak: kalkış ve varış şehri, aktarmalı yolculuklar
- Alt sorgu ve EXISTS: hiç uçmayan üyeler, ortalamanın üstündeki rotalar
- Pencere fonksiyonları: uçağın günü, rötar zinciri ve sıralamalar
- Havayolu metrikleri: doluluk, zamanında varış, yolcu-km ve sadakat
Tabloları Birleştirme
- Veri modelleme ve ER diyagramı: varlıktan tabloya
- RIGHT JOIN, FULL OUTER JOIN
- Self JOIN ve CROSS JOIN
- Çoklu JOIN ve satır çoğalması tuzağı
- Eşit olmayan JOIN ve aralık eşleştirme
- JOIN ile özetleme: satır çoğalması ve önce özetle sonra birleştir
Küme ve Alt Sorgular
- UNION, INTERSECT, EXCEPT
- Alt sorgular (subquery)
- İlişkili alt sorgular (correlated subquery) ve EXISTS
- Satır başına alt sorgu: LATERAL ve APPLY
- EXISTS, NOT EXISTS, ANY ve ALL: yarı ve karşıt birleştirmeler
- Sık yapılan SQL hataları: düzelt ve öğren
- Sorgu hata ayıklama: yanlış sonucu adım adım bulmak
İleri Sorgu Yapıları
- CTE: WITH ile okunabilir sorgular
- Özyinelemeli CTE (recursive CTE, WITH RECURSIVE)
- Tarih serisi ve takvim tablosu: eksik günleri doldurmak
- Boşluk doldurma: son bilinen değerle ilerlemek
- Boşluklar ve adalar: ardışık serileri bulmak (gaps and islands)
- Pivot: satırları sütuna çevirmek
- Geniş tablodan uzun tabloya: UNPIVOT
- ROLLUP, CUBE ve GROUPING SETS: ara toplamlar
Pencere Fonksiyonları
- Pencere fonksiyonlarına giriş (window functions): OVER ve PARTITION BY
- Sıralama: ROW_NUMBER, RANK, DENSE_RANK
- LAG ve LEAD: önceki ve sonraki satır
- Kümülatif toplam ve hareketli ortalama (running total, moving average)
- NTILE, PERCENT_RANK, FIRST_VALUE
- FIRST_VALUE, LAST_VALUE, NTH_VALUE ve varsayılan çerçeve tuzağı
Veri Değiştirme
Veritabanı Tasarımı
- ALTER TABLE, DROP ve TRUNCATE
- Kısıtlar (constraints) ayrıntılı: NOT NULL, UNIQUE, CHECK, DEFAULT, FOREIGN KEY eylemleri
- Normalizasyon: 1NF, 2NF, 3NF, BCNF
- Tasarım kalıpları ve kötü pratikler: soft delete, denetim sütunları, EAV, JSON mu tablo mu?
- View ve materialized view
Performans
- İndeksler (index) ve sorgu planı
- Hızlı sorgu yazmak: SARGable koşullar ve sık yapılan performans hataları
Büyük Veriyle Çalışmak
- Büyük tabloyla tanışma: profil çıkarmak ve örneklemek
- Sorgu planı ve indeks: büyük tabloda hız farkı
- Zaman desenleri ve hava durumu: ne zaman, neden binilir?
- İstasyon dengesi ve güzergâhlar: sistemi işletmek
- Ücret ve kullanıcı segmentleri: aboneler mi, tek seferlikler mi?
Uygulama Geliştirme
- Uygulamadan SQL'e: parametreli sorgu, ORM ve N+1
- Uygulamalarda sayfalama: OFFSET ve keyset
- Eşzamanlılık uygulaması: çift rezervasyon, FOR UPDATE, SKIP LOCKED
Mülakat Hazırlığı
- Mülakat soruları 1: klasikler
- SQL mülakatı: nasıl düşünülür, nasıl anlatılır?
- Mülakat kalıbı: grup başına ilk N ve N'inci en yüksek değer
- Mülakat kalıbı: oranlar, paydalar ve dönüşüm
- Mülakat kalıbı: tekrarlar, ilk ve son kayıt, ikinci sipariş
- Mülakat kalıbı: kendine birleştirme klasikleri
- Mülakat: BT iş analisti için SQL ve senaryo soruları
Vaka Çalışmaları
T-SQL (SQL Server)
- T-SQL tarih ve saat fonksiyonları
- Dönüşümler ve koşullu fonksiyonlar: CAST, CONVERT, TRY_CAST, IIF, CHOOSE
- Değişkenler ve akış kontrolü: DECLARE, IF, WHILE
- Geçici tablolar, tablo değişkenleri ve SELECT INTO
- PIVOT ve UNPIVOT
- CROSS APPLY ve OUTER APPLY
- Listeleri bölmek ve birleştirmek: STRING_SPLIT, STRING_AGG, FOR XML PATH
- Sistem görünümleri, IDENTITY ve yardımcı prosedürler
- SEQUENCE, IDENTITY ve anahtar üretimi
- Saklı yordam derinliği: varsayılan parametre, iç içe çağrı, INSERT EXEC
- T-SQL DML kalıpları: UPDATE FROM, DELETE JOIN, TOP ile parça parça silme, OUTPUT
- Hata yönetimi ileri: yeniden fırlatma, XACT_STATE, XACT_ABORT, yeniden deneme
- Çok ifadeli tablo işlevi, güncellenebilir view, CHECK OPTION, INSTEAD OF
Veri Analisti
- İş metrikleri: ciro, sipariş, ortalama sepet
- Veri temizleme
- Keşifsel veri analizi (EDA): bir tabloyu tanımak
- Dashboard için sorgu tasarımı
- Python ile SQL: pandas, parametreli sorgu ve SQLAlchemy
- Büyüme analizi: MoM ve YoY
- Pareto ve ABC analizi
- Kohort ve elde tutma (retention) analizi
- Dönüşüm hunisi (funnel) analizi
- Aktif kullanıcı metrikleri: DAU, MAU ve yapışkanlık
- Müşteri kaybı (churn), ARPU ve yaşam boyu değer
- Sepet analizi: birlikte satın alınan ürünler
İş Zekâsı ve Raporlama
- Pay ve oran analizleri: toplama göre yüzde
- Dönem karşılaştırmaları: YTD, MTD ve geçen yılın aynı dönemi
- BI aracına veri hazırlamak: grain (tanecik), görünüm ve boyutlar
İK Analitiği
- İK analitiğine giriş: Pusula A.Ş. verisini tanımak
- Kadro (headcount): bir tarihte, her ay ve kırılımlarıyla
- Devir hızı (turnover): kim, ne zaman, neden ayrılıyor?
- Ücret analitiği: güncel maaş, bant konumu ve ücret eşitliği
- Performans analitiği: dağılım, kalibrasyon ve 9-kutu
- İşe alım analitiği: huni, kaynak etkinliği ve doldurma süresi
- Devamsızlık ve izin analitiği: Bradford faktörü ve Pazartesi etkisi
- Bağlılık anketi analitiği: eNPS, katılım ve yönetici etkisi
Veri Bilimi
- SQL ile tanımlayıcı istatistik
- SQL ile olasılık ve koşullu olasılık
- Dağılımlar ve histogram (binning)
- Aykırı değer tespiti: z-skoru ve IQR
- Örnekleme ve eğitim/test ayrımı
Veri Mühendisliği
- ETL, ELT ve veri katmanları
- Veri kalitesi testleri
- Tekilleştirme (deduplication)
- ETL işletimi: hatalı satır tablosu, mükerrer kayıt ve yükleme günlüğü
- Boyut yüklemesi: vekil anahtar eşleme, geç gelen boyut, SCD 2 kapat-aç
Yapay Zekâ ile SQL
BigQuery ve Bulut Veri Ambarları
- BigQuery'ye giriş: proje, veri seti ve maliyet mantığı
- BigQuery'de diziler ve iç içe veri: ARRAY, STRUCT, UNNEST
- BigQuery kısayolları: QUALIFY, SELECT * EXCEPT ve SAFE_ fonksiyonlar
- Bulut veri ambarları: BigQuery, Snowflake, Databricks SQL ve Fabric
Sertifika Hazırlık
- 1Z0-071: Oracle tek satır fonksiyonları (karakter, sayı, tarih, genel)
- 1Z0-071: Dönüşüm fonksiyonları ve biçim modelleri (TO_CHAR, TO_DATE, TO_NUMBER)
- Google Data Analytics sertifikasındaki SQL: BigQuery ile analiz adımları
- BigQuery laboratuvarı: Google veri analitiği yazımıyla uygulama
Alıştırma Kampı
Bitirme Projeleri
- Bitirme projesi (Veri Analisti): Ilgaz Bank müşteri ve harcama analizi
- Bitirme projesi (İş Zekâsı): Anadolu Market yönetim KPI panosu için veri hazırlığı
- Bitirme projesi (BT İş Analisti): kupon bedelini kim karşılayacak?
- Bitirme projesi (Yapay Zekâ Destekli SQL): asistanın yazdığı prim sorgusunu doğrula
BT İş Analizi
- Talebi anlamak: asıl sorun, görüşme soruları ve sorunu SQL ile boyutlandırmak
- Gereksinim yazmak (requirements): iş kuralı, kullanıcı hikâyesi, kabul kriteri, kenar durumlar
- Süreci çizmek: AS-IS, TO-BE, BPMN, sıra diyagramı (sequence diagram), karar tablosu
- Veriyi konuşmak: ER ve veri sözlüğü, alan eşleme (field mapping), yeni tablo önerisi, göç kontrolleri
- API sözleşmesini okumak (API contract): REST, JSON, durum kodları, idempotency, hata durumları
- Kullanıcı kabul testi (UAT): senaryolar, test verisi, mutabakat, hata kaydı, onay
- Agile ve Waterfall ortamlarında iş analizi
- Canlıya geçiş (go-live) ve sonrası: geçiş planı, duman testi, KPI, geri alma, kapanış
Sorgu Optimizasyonu
- Önce ölç, sonra düzelt: yavaş sorguda çalışma akışı
- Sorgu planı okumak (query plan): tarama, arama, birleştirme, tahmin ve gerçek
Veri Ambarı
- Fact türleri: işlem, periyodik, biriken; factless ve uyumlu boyut
- İş ihtiyacından şema: tanecik, boyut ve anahtar kararını sen ver
Veritabanı Yönetimi (DBA)
- İndeks bakımı kararı: parçalanma, doluluk, REBUILD, FILLFACTOR, kullanılmayan indeks
- Gerçek görünümler: DMV, bekleme istatistiği, Query Store kataloğu
- Engelleme, deadlock, izolasyon: iki oturumu kafanda çalıştırmak
- Yedek zinciri: geri yükleme planı, RPO hesabı, kırık zincir
- Yetki denetimi: bu kullanıcı gerçekte ne yapabilir?
Köprü Dersleri
- Köprü: HA ve felaket kurtarma seçimi
- Köprü: T-SQL bilenler için Oracle PL/SQL
- Köprü: SSIS ve Azure Data Factory, SQL gözüyle
- Köprü: SQL Agent ve iş geçmişi
- Köprü: kurulum, yama, göç ve kapasite kontrol listesi
İleri
Kanat Havayolları
- Veri değiştirme ve bütünlük: iptal, yeni rota, kısıtlar ve işlemler
- Bitirme projesi (Kanat Havayolları): operasyon ve gelir raporu
İleri Sorgu Yapıları
- Hiyerarşik veriler: CONNECT BY, özyinelemeli CTE, hierarchyid ve yol yöntemi
- Zaman aralıkları: çakışma, eşzamanlılık ve birleştirme
Pencere Fonksiyonları
Veritabanı Tasarımı
Performans
- Sorgu optimizasyonu: iyi alışkanlıklar
- Performans laboratuvarı: 42.000 satırlık tabloda indeksin etkisini ölç
Uygulama Geliştirme
- Uygulama veritabanı desenleri: yumuşak silme, denetim sütunları, iyimser kilit
- Şema değişikliklerini yönetmek: migration ve kesintisiz dağıtım
Veritabanı İç Yapısı
Modern SQL
- SQL ile JSON verisi
- Coğrafi veri: mesafe, en yakın nokta ve uzamsal tipler
- SQL lehçeleri: PostgreSQL, MySQL, SQL Server, Oracle, BigQuery
- Güvenlik: SQL injection ve yetkilendirme
- KVKK ve kişisel veri: maskeleme, takma adlandırma, saklama ve silme
- Modern veri ekosistemi ve SQL'in geleceği
Veri Modelleme
İleri Desenler
Büyük Sorgular
- Büyük sorgularla çalışmak: okuma, yazma ve hata ayıklama yöntemi
- Büyük sorgu 1: aylık kohort elde tutma matrisi
- Büyük sorgu 2: olaylardan oturum ve oturum hunisi
- Büyük sorgu 3: RFM puanlama ve müşteri segmentleri
- Büyük sorgu 4: havayolu günlük operasyon panosu
- Büyük sorgu 5: bankada şüpheli işlem kural motoru
- Büyük sorgu 6: SCD 2 fiyat boyutu ve nokta-zaman birleştirme
Mülakat Hazırlığı
- Mülakat soruları 2: analitik vakalar
- Mülakat kalıbı: ardışık günler, seriler ve “en az 3 gün üst üste”
- Mülakat kalıbı: zaman pencereleri, büyüme ve “son 30 gün”
- Mülakat kalıbı: medyan, yüzdelik ve mod
- Mülakat: açık uçlu ürün analitiği vakası
- Mülakat: yavaş sorgu ve performans soruları
T-SQL (SQL Server)
- MERGE: eşitle, güncelle, ekle, sil
- Saklı yordamlar (stored procedure)
- Kullanıcı tanımlı fonksiyonlar (UDF)
- Hata yönetimi: TRY/CATCH, THROW ve işlemler
- İmleçler (CURSOR): satır satır işlem
- SQL Server trigger'ları: inserted ve deleted
- SQL Server güvenliği: login, user, rol, şema ve yetkiler
- Değişiklik geçmişi: temporal tablolar, CDC ve change tracking
- Dinamik SQL: EXEC ve sp_executesql
- SQL Server'da JSON: FOR JSON, OPENJSON, JSON_VALUE
- SQL Server indeksleri: clustered, nonclustered, INCLUDE, filtreli
- Yürütme planı ve STATISTICS IO: sorgu neden yavaş?
- SQL Server'da kilitler, izolasyon ve NOLOCK
Veritabanı Yönetimi (DBA)
- SQL Server mimarisi: instance, dosyalar ve sistem veritabanları
- Yedekleme ve geri yükleme: recovery model, RPO ve RTO
- Bakım: indeks parçalanması, istatistikler, DBCC ve Agent işleri
- İzleme: DMV'ler, bekleme istatistikleri, engelleme ve deadlock
- Yüksek erişilebilirlik ve ölçekleme: Always On, replikasyon, sharding
- Veri içe ve dışa aktarma: BULK INSERT, COPY, linked server, OPENROWSET
- Bulutta SQL Server: Azure SQL seçenekleri ve DP-300 konuları
SQL Türlerine Özgü
- PostgreSQL'e özgü güçlü özellikler
- MySQL'e özgü yazımlar ve tuzaklar
- Tam metin arama: LIKE yerine dizinli kelime araması
- Oracle'a özgü yazımlar
- Oracle PL/SQL ile programlama: blok, imleç, prosedür, paket
- PostgreSQL'de programlama: PL/pgSQL, DO blokları ve eklentiler
Veri Analisti
İK Analitiği
Veri Bilimi
- Korelasyon ve basit doğrusal regresyon
- A/B testi analizi
- Özellik mühendisliği (feature engineering)
- Zaman serisi özellikleri
Veri Mühendisliği
- SQL kodunu test etmek: veri testleri, birim testleri ve CI
- Artımlı yükleme (incremental load)
- Değişen veriyi yakalamak (CDC, change data capture)
- Yavaş değişen boyutlar (SCD Tip 1 ve 2)
- dbt ile SQL dönüşüm katmanı: modeller ve testler
- Büyük veri: partition, clustering, dosya formatları
Yapay Zekâ ile SQL
- Veritabanında yapay zekâ: embedding ve vektör benzerlik araması
- SQL ile makine öğrenmesi ve üretken YZ: BigQuery ML ve benzerleri
- Doğal dilden SQL asistanı kurmak: semantik katman ve güvenlik
BigQuery ve Bulut Veri Ambarları
Sertifika Hazırlık
- Oracle 1Z0-071 konuları: veri sözlüğü, INSERT ALL, flashback, ayrıcalıklar
- 1Z0-071: DML ve işlem kontrolü (INSERT/UPDATE/DELETE, COMMIT, SAVEPOINT, TRUNCATE)
- 1Z0-071: Oracle veri tipleri, tablo oluşturma ve değiştirme
- 1Z0-071: Şema nesneleri: view, sequence, synonym, index
- DP-300: Azure SQL'de güvenlik, izleme ve otomasyon
- Databricks Data Analyst ve SnowPro Core: platforma özgü SQL konuları
- T-SQL sorgulama sertifika konuları: SQL Server ile sorgu yazmak
- 1Z0-071 laboratuvarı: Oracle yazımıyla uygulama
- T-SQL laboratuvarı: SQL Server yazımıyla uygulama
Bitirme Projeleri
- Bitirme projesi (Veri Bilimi): şüpheli işlem tespiti ve müşteri özellik tablosu
- Bitirme projesi (Veri Mühendisi): ham kayıttan temiz boyut tablosuna ve veri testlerine
- Bitirme projesi (DBA): yavaş raporu hızlandır ve veritabanını güvenceye al
- Bitirme projesi (Backend): sepet özelliği için şema ve sorgular
- Bitirme projesi (T-SQL): şube raporu için saklı yordam ve hata yönetimi
- Bitirme projesi (Sorgu Optimizasyonu): yavaş müşteri raporunu ölç, oku, düzelt, kanıtla
- Bitirme projesi (Büyük Veri): Pedal İzmir kamyonet bütçesi nereden kısılır?
- Bitirme projesi (SQL Server Operasyon): Salı sabahı sistem yavaş ve şüpheli erişim var
Sorgu Optimizasyonu
- Tür dönüşümü ve fonksiyon tuzakları: indeks var ama kullanılmıyor
- İndeks tasarımı: bileşik ve kapsayan indeks (covering index), sütun sırası, bedel
- Seçicilik (selectivity) ve istatistikler: motor neden o planı seçti?
- JOIN, EXISTS, IN ve alt sorgu maliyeti: erken süzme, gereksiz DISTINCT, SELECT *
- Toplama ve pencere fonksiyonu maliyeti: önce topla, sırala, özetle
- SQL türüne özgü optimizasyon: parametre koklama, EXPLAIN ANALYZE, bayt maliyeti
- Yanlış optimizasyon: hızlı görünen ama işe yaramayan ya da sonucu bozan değişiklikler
SQL Server Operasyon
- Kaynak kodu değiştirilemeyen uygulamada performans: indeks, Query Store, plan zorlama
- Sorgu parmak izi (query fingerprint): sorguları normalleştir, en maliyetli 10 sorguyu bul
- Önbellek kararı: ne zaman önbelleklenir, bayat veri riski nasıl ölçülür
- SQL injection ve doğru savunma: parametreli sorgu, en az yetki, işe yaramayan savunmalar
- Log tablosunda anomali avı: mesai dışı erişim, ardışık ID taraması, parola deneme