🏗️ Veri Mimarisinin Dört Ayağı: Oluşturmadan Sorgulamaya SQL Aşamaları
1. 🧱 Yapılandırma Aşaması (DDL - Data Definition Language)
Bu aşama, projenin temelini oluşturan veritabanının ve tabloların yapısını tanımladığımız yerdir.
A. Veritabanı Oluşturma
İlk olarak, tüm tablolarımızın içinde barınacağı çalışma alanını (veritabanını) oluştururuz.
- Komut:
CREATE DATABASECREATE DATABASE ProjeVeriTabani; - Kullanım: Bu veritabanının aktif olarak kullanılacağını sisteme bildiririz.
USE ProjeVeriTabani;
B. Tablo Yapılarını Oluşturma
Verileri organize edeceğimiz tabloları, her bir sütunun (alanın) veri tipini (metin, sayı, tarih) ve kısıtlamalarını (Primary Key, Not Null vb.) belirleyerek oluştururuz.
- Komut:
CREATE TABLECREATE TABLE Musteriler ( MusteriID INT PRIMARY KEY, Ad NVARCHAR(50) NOT NULL, Soyad NVARCHAR(50) NOT NULL, DogumTarihi DATE );
C. Yapıyı Değiştirme (Gerektiğinde)
Proje ilerledikçe, mevcut tablolara yeni sütunlar ekleme veya mevcut sütunların özelliklerini değiştirme ihtiyacı doğabilir.
- Komut:
ALTER TABLEALTER TABLE Musteriler ADD EpostaAdresi NVARCHAR(100); -- Yeni bir sütun ekler
2. 📝 Veri Yönetimi Aşaması (DML - Data Manipulation Language)
Yapı hazırlandıktan sonra sıra, içine gerçek veriyi doldurmaya, yönetmeye ve güncel tutmaya gelir.
A. Veri Ekleme
Yeni kayıtları, oluşturduğumuz tablonun yapısına uygun olarak sisteme dahil ederiz.
- Komut:
INSERTINSERT INTO Musteriler (MusteriID, Ad, Soyad, DogumTarihi) VALUES (1, 'Ali', 'Yılmaz', '1985-05-10');
B. Veri Güncelleme
Mevcut verilerdeki hataları düzeltmek veya güncel bilgileri (adres, telefon vb.) kaydetmek için kullanılır. WHERE koşulu burada anahtardır.
- Komut:
UPDATEUPDATE Musteriler SET Soyad = 'Yılmazer' WHERE MusteriID = 1; -- Sadece ID'si 1 olan kaydı günceller
C. Veri Silme
Artık gerekmeyen veya geçersiz hale gelen kayıtları sistemden temizleriz. Yine, WHERE koşulu ile yanlışlıkla tüm veriyi silmekten kaçınırız.
- Komut:
DELETEDELETE FROM Musteriler WHERE DogumTarihi < '1970-01-01'; -- Belirtilen tarihten önce doğanları siler
3. 📊 Veri Sorgulama Aşaması (DQL - Data Query Language)
Veritabanının en çok kullanılan ve en kritik aşamasıdır. Burası, ham veriden anlamlı bilgiye ulaştığımız yerdir.
A. Temel Sorgulama ve Filtreleme
Belirli bir tablodan veri çekme ve istenilen koşullara göre filtreleme.
- Komut:
SELECTveWHERESELECT Ad, Soyad, EpostaAdresi FROM Musteriler WHERE Ad = 'Ali';
B. Gruplama ve Özetleme
Verileri gruplayarak özet istatistikler (toplam, ortalama, adet) çıkarma.
- Komut:
GROUP BYSELECT COUNT(*) AS ToplamMusteriSayisi FROM Musteriler;
C. Tabloları Birleştirme (JOIN)
Birden fazla tabloyu, aralarındaki ilişkisel anahtarları (foreign key) kullanarak birleştirme ve tek bir sonuç kümesinde sunma.
- Komut:
JOIN(Müşteri adı ve yaptığı siparişin tarihini birleştirerek getirir.)SELECT M.Ad, S.SiparisTarihi FROM Musteriler AS M INNER JOIN Siparisler AS S ON M.MusteriID = S.MusteriID;
D. Sıralama
Sorgu sonucunu belirlenen sütunlara göre düzenli bir şekilde gösterme.
- Komut:
ORDER BYSELECT * FROM Musteriler ORDER BY Soyad ASC, Ad DESC; -- Önce soyada artan, sonra ada azalan sırala
4. 🔒 İzinler ve Kontrol Aşaması (DCL & TCL)
Bu aşama, veritabanının güvenliğini ve veri bütünlüğünü sağlayan kısımdır.
A. Yetkilendirme (DCL - Data Control Language)
Kimlerin hangi tabloya erişebileceğini ve hangi işlemleri (okuma, yazma vb.) yapabileceğini belirleme.
- Komut:
GRANT(Yetki verme) veREVOKE(Yetki geri alma)GRANT SELECT ON Musteriler TO 'AnalistKullanicisi';
B. İşlem Yönetimi (TCL - Transaction Control Language)
Veritabanında yapılan bir dizi işlemin (transaction) başarılı bir şekilde tek bir bütün olarak kaydedilmesini veya başarısız olursa geri alınmasını sağlama.
- Komut:
COMMIT(Kalıcı kaydetme) veROLLBACK(Geri alma)BEGIN TRANSACTION; -- İşlemleri başlat UPDATE Stok SET Miktar = Miktar - 5 WHERE UrunID = 101; INSERT INTO SatisLog VALUES (...); -- Eğer her iki işlem de başarılıysa: COMMIT; -- Eğer bir hata oluşursa: ROLLBACK; -- Her şeyi başlangıç durumuna geri al