SQL Nedir ve Neden Önemlidir?
SQL (Structured Query Language), ilişkisel veritabanlarıyla etkileşim kurmak için kullanılan standart bir programlama dilidir. 1970'lerde IBM tarafından geliştirilen SQL, günümüzde veri yönetiminin temel taşı olmaya devam etmektedir. Veri analisti, yazılım geliştirici, veri bilimci veya veritabanı yöneticisi olmak isteyen herkesin SQL bilmesi büyük avantaj sağlar.
İş dünyasında verilerin çoğu ilişkisel veritabanlarında saklanmaktadır. MySQL, PostgreSQL, SQL Server, Oracle ve SQLite gibi veritabanı yönetim sistemleri, SQL'i temel iletişim dili olarak kullanır.
SQL Temelleri
Veritabanı ve Tablo Kavramları
İlişkisel veritabanında veriler tablolar halinde saklanır. Her tablo satırlar (kayıtlar) ve sütunlardan (alanlar) oluşur. Tablolar arasındaki ilişkiler, birincil anahtar (primary key) ve yabancı anahtar (foreign key) aracılığıyla tanımlanır.
Temel SQL Komutları
SQL komutları dört ana kategoride sınıflandırılır:
- DDL (Data Definition Language): CREATE, ALTER, DROP - Veritabanı yapısını tanımlamak için kullanılır.
- DML (Data Manipulation Language): SELECT, INSERT, UPDATE, DELETE - Veri üzerinde işlem yapmak için kullanılır.
- DCL (Data Control Language): GRANT, REVOKE - Erişim yetkilerini yönetmek için kullanılır.
- TCL (Transaction Control Language): COMMIT, ROLLBACK - İşlem yönetimi için kullanılır.
SELECT Sorguları
Temel Sorgulama
SELECT ifadesi, veritabanından veri çekmek için kullanılan en temel SQL komutudur. Belirli sütunları seçebilir, WHERE ile koşul belirleyebilir ve ORDER BY ile sonuçları sıralayabilirsiniz.
Filtreleme ve Sıralama
WHERE cümlesi ile verileri filtreleyebilirsiniz. AND, OR, NOT mantıksal operatörleri, BETWEEN, IN, LIKE gibi karşılaştırma operatörleri ve IS NULL gibi kontroller filtreleme işlemlerinde sıkça kullanılır. ORDER BY ile sonuçları artan (ASC) veya azalan (DESC) sırada düzenleyebilirsiniz.
Gruplama ve Toplama Fonksiyonları
GROUP BY ile verileri belirli sütunlara göre gruplandırabilir ve toplama fonksiyonlarını uygulayabilirsiniz:
- COUNT(): Kayıt sayısını hesaplar
- SUM(): Sayısal değerlerin toplamını verir
- AVG(): Ortalama değeri hesaplar
- MIN() / MAX(): En küçük ve en büyük değerleri bulur
HAVING cümlesi, GROUP BY sonrası oluşan gruplara filtre uygulamak için kullanılır ve WHERE'den farklı olarak toplama fonksiyonlarıyla çalışabilir.
JOIN İşlemleri
JOIN, birden fazla tabloyu birleştirmek için kullanılır ve SQL'in en güçlü özelliklerinden biridir:
| JOIN Türü | Açıklama |
|---|---|
| INNER JOIN | Her iki tabloda eşleşen kayıtları döndürür |
| LEFT JOIN | Sol tablodaki tüm kayıtları ve sağ tablodaki eşleşenleri döndürür |
| RIGHT JOIN | Sağ tablodaki tüm kayıtları ve sol tablodaki eşleşenleri döndürür |
| FULL OUTER JOIN | Her iki tablodaki tüm kayıtları döndürür |
| CROSS JOIN | İki tablonun kartezyen çarpımını oluşturur |
İleri Seviye SQL Konuları
Alt Sorgular (Subqueries)
Alt sorgular, bir sorgu içinde yer alan başka bir sorgudur. SELECT, WHERE veya FROM cümlelerinde kullanılabilir. Skalar alt sorgular tek bir değer döndürürken, tablo alt sorguları birden fazla satır ve sütun döndürebilir.
Pencere Fonksiyonları (Window Functions)
Pencere fonksiyonları, satır grupları üzerinde hesaplama yapmanızı sağlarken satırları gruplamaz. ROW_NUMBER(), RANK(), DENSE_RANK(), LAG(), LEAD() ve toplama fonksiyonları OVER() ifadesiyle birlikte kullanılarak güçlü analizler yapılabilir.
CTE (Common Table Expressions)
WITH ifadesi ile tanımlanan CTE'ler, karmaşık sorguları daha okunabilir alt bölümlere ayırmanızı sağlar. Rekürsif CTE'ler, hiyerarşik veri yapılarını (organizasyon şemaları, ürün kategorileri) sorgulamak için idealdir.
İndeksler ve Performans Optimizasyonu
İndeksler, veritabanı sorgularının hızını önemli ölçüde artırır. Doğru sütunlarda indeks oluşturmak, milyonlarca satırlık tablolarda sorgu süresini saniyelerden milisaniyelere düşürebilir. Ancak gereksiz indeksler yazma işlemlerini yavaşlatabileceğinden dikkatli bir denge kurulmalıdır.
SQL Öğrenme Kaynakları ve İpuçları
- Uygulamalı pratik yapın: SQLZoo, LeetCode ve HackerRank gibi platformlarda SQL alıştırmaları çözün.
- Gerçek veritabanlarıyla çalışın: Yerel bir MySQL veya PostgreSQL kurulumu yaparak kendi projelerinizde SQL kullanın.
- Sorgu planlarını okumayı öğrenin: EXPLAIN komutuyla sorgularınızın nasıl çalıştığını anlayın.
- Gerçek dünya senaryoları çözün: E-ticaret, CRM veya envanter yönetimi gibi senaryolar üzerinde çalışın.
- Farklı veritabanı sistemlerini deneyin: MySQL, PostgreSQL ve SQL Server arasındaki farkları keşfedin.
Sonuç
SQL, veri dünyasının evrensel dilidir ve her teknoloji profesyonelinin portföyünde bulunması gereken temel bir beceridir. Temel sorgulardan başlayarak pencere fonksiyonları ve performans optimizasyonuna kadar ilerleyen bir öğrenme yolculuğu, sizi yetkin bir SQL kullanıcısı yapacaktır. Sürekli pratik ve gerçek dünya projelerinde uygulama, SQL becerilerinizi keskinleştirmenin en etkili yoludur.