Veritabanı ve SQL Yol Haritası: SQL Hakkında Bilmeniz Gereken Her Şey
SQL öğrenmek, başlangıçta karmaşık görünebilir, ancak temel bilgileri öğrendikten sonra tablolarda sorgu çalıştırmak oldukça rahat hale gelir. Peki, SQL'de bilmeniz gereken ileri düzey konular nelerdir? Bu SQL Yol Haritasında, SQL ve veritabanlarıyla ilgili çeşitli konuları ayrıntılı bir şekilde ele aldım.
Veritabanı Temelleri
Veritabanı Nedir?
Bir veritabanı, verileri depolamak ve yönetmek için kullanılan bir araçtır. Temel işlevi, verileri organize etmek ve erişimi kolaylaştırmaktır.
Daha fazla bilgi: Wikipedia, JavaTPoint
SQL Nedir?
SQL (Structured Query Language), veritabanlarıyla etkileşim kurmak için kullanılan bir dildir. SQL, veri sorgulama, ekleme, güncelleme ve silme işlemlerini gerçekleştirmenize olanak tanır.
Daha fazla bilgi: Wikipedia, SQL vs MySQL vs SQL Server: Farklar
Temel Select Sorgusu
SELECT İfadesi
SELECT ifadesi, tablodaki tüm sütunları veya belirli sütunları görüntülemek için kullanılır. Bu, verileri sorgulamanın temel bir yoludur.
Daha fazla bilgi: SQL SELECT İfadesi
WHERE Şartı
WHERE şartı, SELECT sorgunuzda belirli verileri filtrelemenizi sağlar. Ayrıca, UPDATE ve DELETE ifadeleriyle de kullanılabilir.
Daha fazla bilgi: SQL WHERE Şartı
ORDER BY Şartı
ORDER BY şartı, SELECT sorgunuzun sonuçlarını belirli bir sıraya göre düzenlemenize olanak tanır.
Daha fazla bilgi: SQL ORDER BY
Aggregate Functions
Aggregate (toplu) fonksiyonlar, birden fazla satırı birleştirmenizi sağlar. Örneğin, kayıtları saymak veya sayıları toplamak gibi işlemler için kullanılır.
Daha fazla bilgi: SQL Aggregate Functions
GROUP BY Şartı
GROUP BY şartı, verileri belirli bir sütundaki değerlere göre gruplamanıza ve aggregate fonksiyonlar kullanmanıza olanak tanır.
Daha fazla bilgi: SQL Group By Şartı
HAVING Şartı
HAVING şartı, GROUP BY uygulandıktan sonra verileri filtrelemenizi sağlar. Bu, gruplama sonrası daha detaylı veri analizine olanak tanır.
Daha fazla bilgi: SQL Having Şartı, Where ve Having Arasındaki Fark
Joins
Joins, birden fazla tablodan veri birleştirmenize olanak tanır. Bu, ilişkili veriler arasında bağlantılar kurmanıza yardımcı olur.
Daha fazla bilgi: SQL Joins
Veri Değiştirme
UPDATE İfadesi
UPDATE ifadesi, bir tablodaki mevcut verileri değiştirmek için kullanılır. Bu ifade, belirli koşullara uyan kayıtları güncellemenize olanak tanır.
Daha fazla bilgi: SQL Update Statement
DELETE İfadesi
DELETE ifadesi, bir tablodan kayıtları silmenizi sağlar. Bu işlem, verilerin kalıcı olarak kaldırılmasına neden olur.
Daha fazla bilgi: SQL Delete Statement
INSERT İfadesi
INSERT ifadesi, bir tabloya yeni kayıtlar eklemenizi sağlar. Bu işlem, veritabanınızı güncel tutmak için sıklıkla kullanılır.
Daha fazla bilgi: SQL Insert Statement, Inserting Multiple Rows
TRUNCATE TABLE
TRUNCATE TABLE ifadesi, bir tablodan tüm verileri hızlı bir şekilde kaldırmanıza olanak tanır. Bu işlem, tablonun yapısını korurken tüm verileri temizler.
Daha fazla bilgi: SQL Truncate Table
Tablolarla Çalışma
CREATE TABLE
CREATE TABLE ifadesi, veritabanınızda yeni tablolar oluşturmanızı sağlar. Bu işlem, veri yapınızı oluşturmanın temel adımıdır.
Daha fazla bilgi: SQL Create Table, Create a Database in SQL
ALTER TABLE
ALTER TABLE ifadesi, mevcut bir tablo üzerinde değişiklik yapmanıza olanak tanır. Bu, sütun eklemek veya kaldırmak gibi işlemleri içerir.
Daha fazla bilgi: SQL Alter Table, SQL Add Column
DROP TABLE
DROP TABLE komutu, bir tabloyu veritabanınızdan tamamen kaldırmanızı sağlar. Bu işlem, tabloyu ve içindeki tüm verileri siler.
Daha fazla bilgi: SQL Drop Table
Data Types
Veritabanlarında çeşitli veri tipleri bulunur ve her birinin kendine özgü avantajları ve dezavantajları vardır. Veri tiplerinin doğru seçilmesi, veritabanınızın performansını etkileyebilir.
Daha fazla bilgi: SQL Data Types, SQL INT Data Types
Veritabanı Tasarımı
Normalizasyon (Birinci - Üçüncü)
Normalizasyon, veritabanı tasarımında verimliliği ve veri kalitesini artırmak için uygulanan bir dizi kuralı ifade eder. Bu süreç, veritabanını daha düzenli ve işlevsel hale getirmeyi amaçlar.
Daha fazla bilgi: Veritabanı Normalizasyonu: Adım Adım Kılavuz
ERD'ler
ERD (Entity Relationship Diagram), Varlık İlişki Diyagramı olarak bilinir. ERD'ler, veritabanı tasarımında varlıklar arasındaki ilişkileri görselleştirmek ve düzenlemek için kullanılır.
Daha fazla bilgi: ERD'ye Yönelik Bir Kılavuz
Daha İleri Normal Formlar (3.5 - 5)
Üçüncü Normal Formdan sonra gelen daha ileri normal formlar, veritabanı tasarımında daha fazla ayrıntı ve düzen sağlar. Bu formlar genellikle daha karmaşık sistemlerde kullanılır ve bilmek faydalı olabilir.
Daha fazla bilgi:
- BCNF (Boyce-Codd Normal Form) veya 3.5 NF
- Dördüncü Normal Form
- Beşinci Normal Form
Veri Ambarı (Data Warehouse)
Veri ambarı (Data Warehouse), verileri hızlı bir şekilde okuyup analiz edebilmek ve genellikle rapor oluşturmak amacıyla kullanılan özel bir veritabanı türüdür. Bu tür veritabanları büyük veri kümelerini yönetme konusunda etkilidir.
Daha fazla bilgi: Veri Ambarlarına Nihai Rehber
Auto-Increment
Auto-increment özelliği, bir sütun için otomatik olarak benzersiz bir değer oluşturmanızı sağlar. Bu, genellikle birincil anahtar olarak kullanılan sayısal değerlerin otomatik olarak artmasını sağlar.
Daha fazla bilgi: Farklı Veritabanlarında Auto-Increment
Orta Seviye SQL Rehberi
Geçici Tablolar (Temporary Tables)
Geçici tablolar, daha karmaşık sorguların daha hızlı ve kolay işlenmesini sağlamak için kullanılan yapılardır. Geçici tablolar, yalnızca mevcut oturum süresince var olur ve daha sonra otomatik olarak silinir.
Daha fazla bilgi: SQL Geçici Tablo
Transactions (İşlemler)
Transaction, bir dizi SQL komutunun bir bütün olarak başarıyla tamamlanmasını sağlayan bir işlem birimidir. Bu, veritabanı bütünlüğünü korumanın kritik bir parçasıdır.
Daha fazla bilgi: SQL İşlemleri
SQL Fonksiyonları
Fonksiyonlar, SQL sorgularında tekrar kullanılabilir, önceden tanımlanmış kod parçacıklarıdır. Bu fonksiyonlar, veriler üzerinde işlem yapmanızı ve sonuçları dinamik olarak değiştirmenizi sağlar.
Daha fazla bilgi:
- Oracle SQL Functions
- SQL Server Functions
- MySQL Functions
- PostgreSQL Functions
- Analytic Functions
- Aggregate Functions
SQL Komut Türleri
SQL komutları, belirli işlevlere göre kategorilere ayrılır:
- DML (Data Manipulation Language): Veri manipülasyonu
- DDL (Data Definition Language): Veri tanımlama
- TCL (Transaction Control Language): İşlem kontrolü
Daha fazla bilgi: SQL Komutları
Operatörler (IN, EXISTS)
SQL'deki IN ve EXISTS gibi operatörler, sorgularınızda veri filtrelemenin esnek yollarını sunar. Özellikle alt sorgularla birlikte kullanıldıklarında oldukça güçlüdürler.
Daha fazla bilgi: SQL Operatörleri
Alt Sorgular (Subqueries)
Alt sorgular, bir başka sorgunun içinde yer alan ve daha karmaşık sorgular oluşturmanıza yardımcı olan küçük sorgulardır. Bu, özellikle belirli bir veri kümesini analiz etmek için kullanılır.
Daha fazla bilgi: SQL Alt Sorgular
Bind Variables (Bağlama Değişkenleri)
Bind değişkenleri, SQL sorgularında değerleri dışarıdan sağlayarak performansı artırır ve güvenliği sağlar. Özellikle dinamik SQL ile çalışırken kullanışlıdırlar.
Daha fazla bilgi: SQL'de Bağlı Değişkenler
Satır Sınırlandırma
SQL, sorgunuzun döndüreceği satır sayısını sınırlandırmanıza olanak tanır. Bu, büyük veri setleriyle çalışırken oldukça faydalıdır.
Daha fazla bilgi: SQL Row Limiting (SQL Satır Sınırlama)
CTE (Common Table Expressions) ve WITH Şartı
CTE'ler (Ortak Tablo İfadeleri), sorgularınızı daha okunabilir hale getirmek için kullanılan geçici sonuç setleridir. WITH şartı kullanılarak oluşturulurlar ve özellikle karmaşık sorguların yönetimini kolaylaştırırlar.
Daha fazla bilgi: SQL CTE (WITH Şartı)
Küme Operatörleri (Set Operators)
Union gibi küme operatörleri, iki veya daha fazla sorgunun sonuçlarını birleştirmenizi sağlar. Bu, verileri birleştirmek veya karşılaştırmak için güçlü bir araçtır.
Daha fazla bilgi: SQL Set Operators (SQL Küme Operatörleri)
Execution Plans (Yürütme Planları)
Yürütme planları, bir veritabanının sorgunuzu nasıl işleyeceğini gösteren grafik veya metin tabanlı yapılardır. Performans optimizasyonu için oldukça önemlidir.
Daha fazla bilgi: SQL Execution Plans (SQL Yürütme Planları)
SQL Nesnelerine Yorum Ekleme
SQL, tablolar, sütunlar veya diğer nesneler üzerine yorum eklemenize olanak tanır. Bu, kodun anlaşılabilirliğini artırır ve işbirliği yaparken büyük kolaylık sağlar.
Daha fazla bilgi: SQL Comments (SQL Yorumları)
Veri İçe Aktarma
Dış kaynaklardan (CSV, XML, JSON gibi) veritabanına veri aktarmanın çeşitli yolları vardır. Bu, özellikle büyük veri setlerini yönetirken kritik bir adımdır.
Daha fazla bilgi:
- MySQL Workbench Import CSV
- SSMS Import
- SQL Developer Import
SQL ve JSON Kullanımı
JSON (JavaScript Object Notation), veri saklama ve paylaşma için yaygın olarak kullanılan bir formattır. SQL veritabanları, JSON veri yapısını destekleyerek, daha esnek ve modern veri yönetimi sağlar.
Daha fazla bilgi:
- JSON in Oracle
- JSON in SQL Server
- JSON in MySQL
- JSON in PostgreSQL
İleri Seviye SQL Rehberi
Pivot ve Unpivot
Pivot ve Unpivot, satır verilerini sütunlara dönüştürmenizi sağlayan SQL özellikleridir. Bu teknikler, verilerinizi farklı açılardan analiz etmenize olanak tanır ve genellikle Excel’de gördüğünüz özelliklerin SQL versiyonlarıdır.
Daha fazla bilgi:
- Oracle PIVOT and UNPIVOT
- SQL Server Pivot
- MySQL Pivot
- PostgreSQL Pivot
- Modern SQL Pivot Article
Düzenli İfadeler (Regular Expressions)
Düzenli ifadeler, metin dosyalarında belirli yapıları aramak ve eşleştirmek için kullanılan bir programlama konseptidir. SQL’de düzenli ifadeler kullanarak veri içindeki desenleri tanımlayabilir ve sorgularınızı daha esnek hale getirebilirsiniz.
Daha fazla bilgi:
- RegExr – Düzenli İfadeler Oluşturma Aracı
- Oracle REGEXP Functions
- SQL Server Regular Expressions
- MySQL Regular Expressions
- PostgreSQL Regular Expressions
Isolation Levels (İzolasyon Düzeyleri)
İzolasyon düzeyleri, veritabanlarında işlemler arasındaki veri erişim düzeylerini tanımlar. Bu, aynı anda birden fazla işlemin veri üzerinde nasıl etkileşimde bulunacağını belirler.
Daha fazla bilgi: SQL İşlemleri ve İzolasyon Düzeyleri
Sürekli Entegrasyon ve Teslimat (CI/CD)
Sürekli Entegrasyon (CI), kodunuzun sürekli olarak test edilmesini sağlar ve hataları erken aşamada bulmanıza yardımcı olur. Sürekli Teslimat (CD) ise yazılımınızı her zaman kullanılabilir durumda tutar. Bu yaklaşımlar veritabanı yönetimi için de geçerlidir.
Daha fazla bilgi: Veritabanı Sürüm Kontrolü, CI/CD ve Dağıtım için Nihai Kılavuz
SQL’de Hiyerarşik Veri
Hiyerarşik veri, bir tabloda birden fazla veri düzeyini saklamanıza olanak tanır. Örneğin, çalışanlar ve yöneticiler arasındaki ilişkileri veya ürün kategorilerini bu yapıda saklayabilirsiniz.
Daha fazla bilgi: SQL'de Hiyerarşik Veriler: Nihai Kılavuz
Analitik Fonksiyonlar
Analitik fonksiyonlar (veya pencere fonksiyonları), sorgu sonuçları üzerinde kapsamlı hesaplamalar yapmanıza olanak tanır. Bu fonksiyonlar, veri analizi ve raporlama işlemlerini kolaylaştırır.
Daha fazla bilgi: SQL Window Functions: Nihai Kılavuz
Karakter Kümesi (Character Sets)
Karakter kümesi, bilgisayar sistemlerinde tanımlanmış karakterlerin listesidir. Doğru karakter kümesi seçimi, veri uyumluluğu ve dili desteklemek için önemlidir.
Daha fazla bilgi: Oracle Karakter Setleri
MERGE Komutu
MERGE komutu, belirli bir koşula göre veri eklemeyi veya güncellemeyi sağlar. Bu, veritabanındaki veri bütünlüğünü korumak için kullanışlıdır.
Daha fazla bilgi:
- Merge: Oracle, SQL Server
- MySQL Insert On Duplicate Key
- PostgreSQL Upsert
Dış Tablolar (External Tables)
Dış tablolar, bir dış dosyaya (örneğin, CSV dosyası) bağlı olan ve veritabanında tablo gibi davranan yapılardır. Bu özellik, verilerinizi dış kaynaklardan veritabanınıza aktarmanızı kolaylaştırır.
Daha fazla bilgi:
- Oracle External Tablo
- SQL Server External Tablo
- MySQL External Tablo
- PostgreSQL Foreign Tablo
Dinamik SQL (Dynamic SQL)
Dinamik SQL, SQL ifadelerini programlama sırasında oluşturmanıza olanak tanır. Bu, esnek ve dinamik sorgular oluşturmanıza yardımcı olur.
Daha fazla bilgi: Dinamik SQL: Bir Kılavuz
SQL Injection (SQL Enjeksiyonu)
SQL Injection, kullanıcıların veritabanınıza zararlı SQL komutları enjekte etmesine olanak tanıyan bir tekniktir. Güvenliği artırmak için bu tür saldırılara karşı korunmak önemlidir.
Daha fazla bilgi: SQL Injection
Prosedürel Dil Rehberi
Oracle PL/SQL
PL/SQL, Oracle veritabanının prosedürel programlama dilidir. Bu dil, SQL’in ötesine geçerek, If ifadeleri ve değişkenler gibi prosedürel kavramların kullanılmasını sağlar. PL/SQL, veritabanı uygulamalarını daha güçlü ve esnek hale getirir.
SQL Server T-SQL
T-SQL, SQL Server’ın prosedürel programlama dilidir. Bu dil, SQL sorgularının yanı sıra, koşul ifadeleri, döngüler ve hata yönetimi gibi prosedürel yapıların kullanılmasına olanak tanır. T-SQL, SQL Server'da daha karmaşık işlemleri ve iş akışlarını yönetmenizi sağlar.
MySQL Saklı Yordamlar (Stored Procedures)
MySQL’de prosedürel dil kullanarak saklı yordamlar (stored procedures) oluşturabilirsiniz. Saklı yordamlar, tekrar kullanılabilir SQL kodları oluşturmanıza ve veritabanı işlemlerini daha verimli hale getirmenize yardımcı olur.
PostgreSQL pl/pgSQL
PL/pgSQL, PostgreSQL’in prosedürel dilidir ve SQL’e prosedürel özellikler ekler. Bu dil, veritabanı uygulamalarında koşul ifadeleri, döngüler ve hata yönetimi gibi özellikler sunarak, daha karmaşık iş akışları oluşturmanıza yardımcı olur.
Veritabanı Nesneleri
Görünümler (Views)
Görünüm (View), kaydedilmiş bir SQL ifadesini temsil eden bir veritabanı nesnesidir. Görünümler, sorguları basitleştirmeye, kodu yeniden kullanmaya ve güvenliği artırmaya yardımcı olur. Veritabanı içinde veri manipülasyonunu daha kolay hale getirir.
Daha fazla bilgi: SQL Görünümleri
Oracle Eşanlamlıları (Synonyms)
Eşanlamlı (Synonym), başka bir veritabanı nesnesine atıfta bulunan bir nesnedir. Eşanlamlılar, genellikle güvenlik sağlamak veya veritabanı yapısındaki değişiklikleri yönetmek için kullanılır.
Daha fazla bilgi: Oracle'da Eşanlamlılar
Veritabanı Yönetimi
Yetkiler
Yetkiler, kullanıcılara belirli faaliyetleri veya fonksiyonları gerçekleştirme izni sağlar. Bu izinler, kullanıcı veya roller üzerinde eklenebilir veya kaldırılabilir.
Daha fazla bilgi:
- Oracle'da Yetkiler
- SQL Server'da İzinler
- MySQL'de Yetkiler
- PostgreSQL'de Yetkiler
Roller
Roller, gruplandırılmış izinlerin bir araya getirildiği yapılardır. Kullanıcıları rollere atamak, veritabanı yönetimini daha etkili ve düzenli hale getirir.
Daha fazla bilgi:
- Oracle'da Roller
- SQL Server'da Roller
- MySQL'de Roller
- PostgreSQL'de Roller
Kullanıcı Yönetimi
Kullanıcı oluşturma ve silme, veritabanı yönetiminin temel işlemlerindendir. Bu işlemler, veritabanı güvenliğini ve erişimini yönetmek için gereklidir.
Daha fazla bilgi:
- Oracle'da Kullanıcı Oluşturma
- SQL Server'da Kullanıcı Oluşturma
- MySQL'de Kullanıcı Oluşturma
- PostgreSQL'de Kullanıcı Oluşturma
Veri Sözlüğü
Veri sözlüğü, veritabanı hakkında bilgi sağlayan ve veritabanının yapısını tanımlayan bir alandır. Veri sözlüğü, tablolar ve görünümler hakkında detaylı bilgiler sunar.
Daha fazla bilgi:
- Oracle Veri Sözlüğü
- SQL Server Veri Sözlüğü
- MySQL Veri Sözlüğü
- PostgreSQL Sistem Katalogları