SQL Öğreniyorum
Heyecanlıyım.
SQL öğrendiğim için değil aslında. learning-to-read denememden sonra ilk kez teknik bir konuda öğrenme yolculuğuna çıkıyorum. İlk kez teknik bir şey öğrenmiyorum ama ilk kez öğreniyormuş gibi heyecanlıyım, çünkü test zamanı.
Daha önceleri 'şunları öğrenmeliyim, bu konuda kendimi geliştirmeliyim' dediğim birçok konuyu yarım bıraktım. Yaygın bir durum zaten bu. Ama bu siteyi açmaya karar vermemin bir sebebi var (hikayem). O sebeple bu hedefle çıktığım yolda ilk teknik denemem. Bu yazı yaşayan bir yazı olacak, tıpkı learning-to-read gibi. Okuduklarımı, izlediklerimi ara ara gelip burada yazıyor olacağım.
Neden SQL öğreniyorum?
Herkesin her şeyi yapay zekaya yaptırmaya çalıştığı bir dönemde bu tarz şeyleri öğrendiğini söyleyen kişilere oldukça az rastlıyorum. Eskiden böyle değildi, mesela bundan 5 yıl önce 'SQL Öğreniyorum' diye bir yazı yazsam muhtemelen nedenini açıklamazdım. Çünkü oldukça popüler bir şey SQL öğrenmek. Halen öyledir tabii ki ama bu şekilde bir şeyler öğrenmek eskisi gibi sık gördüğüm bir şey değil. Gelelim sorumun cevabına, SQL öğrenmek istememin temel sebebi merak ediyor olmam. İkinci büyük sebebi ise SQL çok güzel, yani güzeldi. Öyle hatırlıyorum, üniversite yıllarımda çok severdim uğraşmasını. Bir yazılımcı olarak beni güçlü hissettiren bir şey, verileri saklamak, gerektiğinde göstermek üzerinde taklalar atmak keyifli bir şey olsa gerek, ben de oynamak istiyorum :)
Tabii bir de ihtiyacım var.
Yaptığım işte SQL kullanmıyorum. Ben işin frontend dünyasındaydım hep kariyerimde, halen de öyle devam ediyor.
Fakat az önce de söyledim ya yapay zeka her şeyi yerinden oynattı, ben de kendimi birçok konuda yetkin biri yapmak istiyorum.
SQL öğrenerek bakış açımı genişletmek, yaptığım işe hakimiyetimi arttırmak istiyorum.
Neden bir backend dili ile backend geliştirme yaparak başlamıyorum diye sorarsanız eğer, denedim.
Bu siteyi oluşturmadan önce, daha doğrusu bakış açımı değiştirmeden önce farklı zaman dilimlerinde birkaç kez farklı şekillerde backend öğrenmeye giriştim.
Bu arada backend derken gelen istekleri karşılayıp bir http response dönmekten bahsetmiyorum.
Bakış açılarını, mimarileri, sorunları nasıl ele alacağım konularını öğrenmekten bahsediyorum.
Her neyse bu sefer o eski denemelerimi anımsamadan SQL öğrenmeye karar verdim.
Tüm planı daha oturtmadım, fakat ilk olarak SQL hikayesini ve çıkış noktasını araştıracağım.
Ne zaman hangi gerekçelerle ortaya çıkmış gibi konuları araştıracağım.
Sonrasında syntaxını öğrenmeye başlayacağım. Temel komutlarla pratik yapacağım.
O noktadan sonrasına daha karar vermedim, bilmiyorum çünkü henüz. İlerleyen zamanlarda o planlarımı da zaten burada yazıyor olurum.
Yöntemim
Eski usul bir şekilde başlayacağım. Udemy! Eski dostumu bir ziyaret edip bir eğitim serisi buldum. Eğitim şu: The Complete SQL Bootcamp. Bana genel bir tanıtım yapsın yeter diye düşündüm, çok oylama yapılmıştı eğitmen de iyi görünüyordu o sebeple bunu seçtim. 5 dakikada falan karar verdim eğitime belki daha iyileri vardır.
Benim buradaki hedefim eğitimi biraz yol gösterici gibi kullanıp süreç boyunca deneyerek bir şeyler yapmak. Tabii Gemini muhtemelen çok yoğunluklu olarak kullanacağım diğer tool olacak. Claude Code kullanıyorum ama genel konsept açıklamaları için Gemini Web üzerinden soru cevap yapmak benim daha çok tercih ettiğim bir şey.
İlk planlarım bu yönde, bu sitenin temelinde deneme yanılmalarımı paylaşmak olduğu için (bahçe) deneyeceğim video işini sevmezsem taktik değiştirebilirim.
25 Ocak tarihi itibarıyla şu an planlarım bu kadar.
Güncelleme: 26 Ocak
Bugün mesai bittikten bir kaç saat sonra yukarıda bahsettiğim eğitime başladım. Bence iyi bir eğitim seçmişim, 1.5xde izliyorum genelde akıyor gidiyor.
Eğitimin ilk sectionunu bitirdim, kurulum kısmını hızlıdan geçmiştim zaten.
Eğitimde PgAdmin kullanıyor ama ben TablePlus yükledim. PgAdmin pek sevmedim. Zaten ufak tefek sorgular yazıyorum, daha az karmaşık bir tool daha iyi olur diye düşündüm.
Basit sorgular için gerekli 'keyword'leri öğrendim, bir iki pratik yaptım
Bunlar da ilk gün notlarım

Aşağıdaki selektörlerin(Jargona daha çok hakim değilim, fonksiyonlar falan da var farkındayım) kullanımlarını öğrendim, bir iki basit sorgu yazdım.
- Select
- Distinct
- Count
- Order by
- Limit
- Between
- Where
- Like
- ILike
Eğitimde hazır bir veritabanı veriyor, içinde 8-10 tane tablo var. O verilerle pratik yapıyorum.
Güncelleme: 28 Ocak
Bugün bir saat kadar eğitimi izledim, sıcağı sıcağına da bu yazıyı güncelliyorum. Yavaş yavaş ilerliyorum. Yani, böyle çok bilmediğim, çok garip gelen şeyler yok açıkçası. Fakat hani tekrar görmek, "Aa evet, bu böyleydi" demek iyi hissettiriyor.
Bugün aggregation fonksiyonlarını gördüm, onlara baktım. Group By kullanımına baktım, bunlarla pratik yaptım. Bir de Having Clause kullanımına baktım, bunlarla ilgili pratik yaptım. Bir iki not aldım.
Bu yukarıda bahsettiğim eğitimi izleyerek aslında şu an devam ediyorum. Keyifli geçiyor, şu anda yaramazlık yok.
Bugünün notları:

Bugünün fonksiyonları ve clause'ları:
- Count()
- Sum()
- Avg()
- Min()
- Max()
- Round()
- Group By
- Having
Güncelleme: 08 Şubat
Çalışma yöntemimi biraz değiştirdim. Eğitimin videosunu izleyip notlar almak yerine, önce bir konsepti anlıyorum, sonra o konseptle ilgili pratik yapıyorum. Böylece daha aktif öğreniyorum.
Not alarak çalışma işini bir türlü beceremedim. Muhtemelen bir şeyleri yanlış yapıyorum ve bu SQL öğrenme sürecimde de aynı oldu. Dolayısıyla çalışma yöntemimi değiştirdim.
Yine Udemy'deki eğitimi izliyorum fakat orada birkaç bir şey öğrenince hemen pratik yapıyorum. Bu pratikler esnasında da farklı şeyler öğreniyorum, bu yöntem de bana iyi geldi.
Sitedeki bu ve diğer alışkanlıklarımla ilgili yazılarımı da haftalık olarak güncellemeye karar verdim. Sanırım o şekilde daha verimli olacak.
Bu kararım ile birlikte haftalık düzene geçiş yaptığım için şubatın ilk haftasını 1. hafta olarak isimlendiriyorum ve devamında artırarak gideceğim.
1. Hafta
SQL öğrenme sürecimde başladığım eğitimin 55/83'ünü bitirdim. Bu vakte kadar öğrendiklerim aslında anlaması kolay geldi. Fakat aslında o kadar da kolay olmadığını soruları çözmeye çalıştıkça anladım. Dinlerken basit gelen şeyler, senaryolar ortaya çıktıkça bir anda karışık gelmeye başladı.
Neyse sorun değil, acele etmeden devam edeceğim.
Bu hafta şunlara baktım:
- Joins
- Subqueries
- CTEs
- String Functions
- Date Functions
- Math Functions
Ayrıca geçtiğimiz 1 Şubat tarihinde ilk videomu yayınladım 🎉
Bu videoda ilk defa bir video çektim, kurguladım ve yayınladım. Oldukça heyecanlıydım. İlk hafta öğrendiklerimi bu videoda özetledim.
Onun dışında pratik yapmak için Codewars'ta SQL oyunları çözmeye başladım. Onu da canlı yayın açarak yaptım. Oldukça eğlenceliydi. Birçok şeyi bilemedim ama yayında anlamaya çalıştım, benim için keyifli bir deneyimdi.
Yayınım da burada, yeyyyy 🎉
Pratik yapmak ister misin?
Burada öğrendiklerini pratiğe dökebileceğin özel bir SQL Playground hazırladım. Tamamen tarayıcında çalışıyor ve Sakila örnek veritabanını kullanıyor.
SQL Playground'u Aç
Toprak kontrol ediliyor...