Veritabanı ve SQL Yol Haritası: SQL Hakkında Bilmeniz Gereken Her Şey

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ı