Veri Tabanı Yönetimi ve SQL

SQL Veri Tabanı Oluşturma ve Yönetme

SQL veri tabanı oluşturma ve yönetme, verilerin belirli bir mantıksal düzende depolanması, hızlı bir şekilde sorgulanması ve güvenle saklanması sürecini ifade eder. Günümüzde web sitelerinden mobil uygulamalara, e-ticaret platformlarından bankacılık yazılımlarına kadar hemen her dijital sistemin temelinde veri tabanı yönetim sistemleri (VTYS) yer alır. Veriyi doğru bir mimariyle kurgulamak, bir yazılım projesinin hem mevcut performansını hem de gelecekteki ölçeklenebilirliğini doğrudan belirler.

⚡ Kısa Cevap: SQL veri tabanı oluşturma işlemi; verilerin satır ve sütunlardan oluşan tablolar halinde tutulmasını sağlayan `CREATE DATABASE` ve `CREATE TABLE` komutlarıyla başlar. Veri yönetimi ise ekleme (INSERT), okuma (SELECT), güncelleme (UPDATE) ve silme (DELETE) işlemleri üzerinden veri bütünlüğü korunarak yürütülür.
🎯 Bu Derste Öğrenecekleriniz
  • SQL ve İlişkisel Veri Tabanı (RDBMS) kavramlarının çalışma mantığını kavrama
  • Sıfırdan veri tabanı ve ilişkisel tablolar tanımlama komutlarını uygulama
  • Doğru veri tiplerini seçerek veri bütünlüğünü sağlama yöntemleri
  • Temel SQL sorguları (CRUD işlemleri) ile etkin veri yönetimi sağlama
  • Veri tabanı performansını ve güvenliğini artırmaya yönelik stratejiler
📌 Bu Konuda Bilmeniz Gerekenler
  • SQL Bir Programlama Dili Değildir: SQL (Structured Query Language), veri tabanları ile iletişim kurmayı sağlayan yapılandırılmış bir sorgulama dilidir.
  • Veri Bütünlüğü Esastır: Hatalı veri tipi seçimleri veya eksik kısıtlamalar (constraints), veri tabanında bozulmalara yol açar.
  • İlişkisel Mimari (RDBMS): Veriler tek bir devasa tabloda toplamak yerine, birbiriyle mantıksal olarak bağlı düzenli tablolarda saklanır.
  • Komut Türleri: SQL komutları DDL (Tanımlama), DML (İşleme) ve DCL (Denetleme) olmak üzere temel gruplara ayrılır.

SQL ve Veri Tabanı Yönetim Sistemi (VTYS) Nedir?

Veri tabanı, birbiriyle ilişkili verilerin düzenli biçimde saklandığı dijital bir arşivdir. Bilgisayar ortamındaki basit bir metin dosyasından farklı olarak veri tabanları; binlerce kullanıcının eş zamanlı erişimine imkan tanır ve milyonlarca kayıt arasından milisaniyeler içinde arama yapabilmeyi mümkün kılar. Bu düzeni sağlayan ve veri akışını kontrol eden yazılımlara ise Veri Tabanı Yönetim Sistemi (VTYS veya RDBMS) adı verilir.

SQL (Structured Query Language – Yapılandırılmış Sorgu Dili), söz konusu veri tabanı yönetim sistemleriyle iletişim kurmak için kullanılan evrensel standarttır. MySQL, PostgreSQL, Microsoft SQL Server (MSSQL), Oracle ve SQLite gibi yaygın sistemlerin tamamı SQL mimarisini temel alır. SQL aracılığıyla veri tabanına yeni bilgiler ekleyebilir, mevcut verileri güncelleyebilir veya kapsamlı raporlar oluşturabilirsiniz.

Veri tabanı yönetiminin özünde, ham veriyi ‘anlamlı bilgiye’ dönüştürmek yatar. Örneğin bir okul yönetim sisteminde öğrencilerin adı, soyadı, okul numarası, aldığı dersler ve sınav notları ayrı tablolarda tutulur. SQL sorguları sayesinde ‘Matematik dersinden 80 üzeri alan öğrencilerin listesi’ tek bir satırla saniyeler içinde elde edilir. Konu ilerledikçe Veri Tabanı Nedir? Veri Tabanı Yönetimi Konu Anlatımı ile bağlantılı noktalar da karşımıza çıkar.

Sıfırdan SQL Veri Tabanı Oluşturma: CREATE DATABASE Komutu

Yeni bir proje geliştirirken atılacak ilk adım, verilerin depolanacağı ana veri tabanını (database) tanımlamaktır. SQL dilinde bu işlem, oldukça sade bir komut yapısıyla gerçekleştirilir.

📖 Örnek: Veri Tabanı Oluşturma Komutu

CREATE DATABASE OkulYonetimi;

Bu komut çalıştırıldığında sunucuda ‘OkulYonetimi’ adında boş bir veri tabanı alanı ayrılır. Ancak komutu yürütmeden önce dikkat edilmesi gereken bazı kritik detaylar vardır. Sistem uyumluluğunu korumak adına veri tabanı isimlerinde Türkçe karakter (ı, ş, ğ, ü, ö, ç) ve boşluk kullanmaktan kaçınmalısınız.

Oluşturulan veri tabanı üzerinde çalışmaya başlamak için sistemin hangi veri tabanına odaklanacağını belirtmeniz gerekir. Birçok SQL sisteminde bu komut şu şekilde uygulanır:

USE OkulYonetimi;

💡 İpucu: Aynı isimde bir veri tabanının zaten var olup olmadığından emin değilseniz, olası hataların önüne geçmek için CREATE DATABASE IF NOT EXISTS OkulYonetimi; kalıbını kullanabilirsiniz. Bu komut, veri tabanı yoksa yenisini oluşturur, varsa mevcut olana dokunmadan işlemi tamamlar.

Tablo Yapısı Tasarlama ve Tablo Oluşturma (CREATE TABLE)

Veri tabanı alanını hazırladıktan sonra, verilerin asıl saklanacağı ‘Tablo’ (Table) yapılarını inşa etme aşamasına geçilir. Tablolar, satır (row) ve sütunlardan (column) meydana gelir. Sütunlar verinin niteliğini ve türünü, satırlar ise kaydedilen her bir veri girdisini temsil eder.

Bir tablo tasarlarken her sütun için doğru **Veri Tipi** seçimi yapmak hayati önem taşır. Yaygın olarak kullanılan temel veri tipleri şunlardır:

  • INT / INTEGER: Tam sayı değerlerini tutar (Örn: Öğrenci No, Yaş).
  • VARCHAR(uzunluk): Değişken uzunluktaki metin ifadelerini saklar (Örn: Ad, Soyad, E-posta).
  • DATE / DATETIME: Tarih ve saat bilgilerini tutar (Örn: Doğum Tarihi, Kayıt Zamanı).
  • DECIMAL / FLOAT: Ondalıklı sayısal değerleri saklar (Örn: Ürün Fiyatı, Not Ortalaması).
  • BOOLEAN: Doğru/Yanlış (1 veya 0) mantıksal durumlarını tutar (Örn: Aktif mi?).
📖 Örnek: Öğrenciler Tablosu Oluşturma

CREATE TABLE Ogrenciler (
    OgrenciID INT PRIMARY KEY AUTO_INCREMENT,
    Ad VARCHAR(50) NOT NULL,
    Soyad VARCHAR(50) NOT NULL,
    Eposta VARCHAR(100) UNIQUE,
    KayitTarihi DATE DEFAULT CURRENT_DATE
);

Yukarıdaki örnekte yer alan anahtar kavramlar veri bütünlüğü açısından hayati önem taşır: MySQL Veri Tabanı Kurulumu ve Kullanımı, bu açıdan bakıldığında konuyu tamamlayan güzel bir örnektir.

  • PRIMARY KEY (Birincil Anahtar): Her satırı benzersiz biçimde tanımlayan sütundur. İki farklı kaydın birincil anahtarı aynı olamaz.
  • NOT NULL: İlgili sütunun boş bırakılamayacağını ifade eder.
  • UNIQUE: Sütundaki tüm değerlerin benzersiz olmasını zorunlu kılar (Aynı e-posta adresi ikinci kez kaydedilemez).
  • AUTO_INCREMENT: Yeni kayıt eklendikçe otomatik olarak artan sayısal bir kimlik üretir.

Veri Ekleme, Okuma ve Güncelleme (INSERT, SELECT, UPDATE)

Tablo mimarisi tamamlandıktan sonra dinamik veri yönetimi sürecine adım atılır. Yazılım dünyasında bu aşama, **CRUD** (Create, Read, Update, Delete) olarak adlandırılan temel veri operasyonlarını kapsar.

1. Veri Ekleme (INSERT INTO)

Tabloya yeni bir veri kaydı dahil etmek için `INSERT INTO` komutundan yararlanılır. Hedef sütun isimleri sıralandıktan sonra eklenecek değerler `VALUES` parantezi içine yazılır.

INSERT INTO Ogrenciler (Ad, Soyad, Eposta)
VALUES ('Ahmet', 'Yılmaz', 'ahmet.yilmaz@email.com');

2. Veri Okuma ve Sorgulama (SELECT)

Veri tabanında kayıtlı verileri listelemek ve filtrelere göre çekmek için `SELECT` komutu kullanılır. Tablodaki tüm sütunları getirmek istediğinizde yıldız (`*`) sembolüne başvurulur.

SELECT * FROM Ogrenciler;

Sadece belirli kriterleri sağlayan verileri çekmek için sorguya `WHERE` koşulu eklenir:

SELECT Ad, Soyad FROM Ogrenciler WHERE Ad = 'Ahmet';

3. Veri Güncelleme (UPDATE)

Mevcut bir kaydın verilerini değiştirmek gerektiğinde `UPDATE` komutundan faydalanılır. Güncellenecek yeni değerler `SET` ifadesiyle belirtilir.

UPDATE Ogrenciler
SET Eposta = 'ahmet.yenieposta@email.com'
WHERE OgrenciID = 1;

⚠️ Dikkat: `UPDATE` veya `DELETE` komutlarını uygularken `WHERE` şartını eklemeyi kesinlikle ihmal etmeyin! `WHERE` koşulu belirtilmediği takdirde tablodaki TÜM kayıtlar güncellenir veya silinir. Bu durum geriye dönülmesi zor veri kayıplarına yol açabilir.

Veri Silme ve Tablo Düzenleme (DELETE, TRUNCATE, ALTER TABLE)

Veri tabanı yönetimi sürecinde zaman zaman gereksiz verilerin temizlenmesi veya mevcut tablo yapısının güncellenmesi gerekebilir.

Veri Silme İşlemleri: DELETE ve TRUNCATE

Tablodan belirli bir kaydı çıkarmak için `DELETE FROM` yapısı tercih edilir:

DELETE FROM Ogrenciler WHERE OgrenciID = 1;

Tablonun şemasını bozmadan içerisindeki tüm verileri tek seferde ve son derece hızlı biçimde temizlemek isterseniz `TRUNCATE TABLE` komutuna başvurabilirsiniz. `TRUNCATE`, standart `DELETE` işlemine kıyasla çok daha performanslı çalışır ve otomatik artan kimlik sayaçlarını sıfırlar.

Tablo Yapısını Değiştirme (ALTER TABLE)

Projenin gereksinimleri değiştikçe mevcut bir tabloya yeni sütun eklemek, sütun tipini değiştirmek ya da bir sütunu kaldırmak gerekebilir. Bu gibi durumlarda `ALTER TABLE` komutu devreye girer.

-- Tabloya Telefon sütunu ekleme
ALTER TABLE Ogrenciler ADD Telefon VARCHAR(15);

-- Tablodan Telefon sütununu silme
ALTER TABLE Ogrenciler DROP COLUMN Telefon;

Veri Tabanı İlişkileri ve Normalizasyon Temelleri

İlişkisel veri tabanlarının sunduğu en büyük avantaj, farklı tablolar arasında mantıksal bağlar kurabilmesidir. Veri tekrarını önlemek ve veri bütünlüğünü korumak amacıyla uygulanan bu tasarım ilkelerine **Normalizasyon** denir.

Tablolar arasındaki bağlantılar **FOREIGN KEY (Yabancı Anahtar)** aracılığıyla kurulur. Sık karşılaşılan 3 temel ilişki türü bulunmaktadır:

  • Bire-Bir (1:1) İlişki: Bir tablodaki tek bir kayıt, karşı tablodaki yalnızca tek bir kayıtla eşleşir (Örn: Vatandaş – T.C. Kimlik Kartı).
  • Bire-Çok (1:N) İlişki: En yaygın kullanılan ilişki modelidir. Bir tablodaki bir kayıt, diğer tablodaki birden fazla kayıtla ilişkilenebilir (Örn: Bir Sınıf – Çok Sayıda Öğrenci).
  • Çoka-Çok (N:M) İlişki: Her iki tablodaki kayıtlar birbiriyle birden fazla eşleşme gösterebilir. Bu yapı intermediate (köprü) bir tablo aracılığıyla çözümlenir (Örn: Öğrenciler – Alınan Dersler).
ℹ️ Bilgi: Normalizasyon, veri tabanındaki veri gereksizliğini (redundancy) en aza indirmeyi hedefleyen kurallar bütünüdür. 1NF, 2NF ve 3NF gibi aşamalarla kurgulanır. İyi tasarlanmış bir normalizasyon mimarisi hem disk tasarrufu sağlar hem de tutarsız veri girişini engeller.

SQL Veri Tabanı Yönetimi ve Güvenlik İpuçları

Bir veri tabanını sıfırdan kurmak kadar onu güvenli ve performanslı tutmak da kritik önem taşır. Veri tabanı yöneticilerinin (DBA) öncelikle dikkat etmesi gereken stratejik adımlar şunlardır:

1. Düzenli Yedekleme (Backup & Restore)

Sistem çökmeleri, donanım arızaları ya da olası siber güvenlik tehditlerine karşı veri tabanının düzenli periyotlarla yedeği (backup) alınmalıdır. Yaşanabilecek aksaklıklarda veri tabanı bu yedeklerle eski haline dönüştürülür (restore).

2. Kullanıcı Yetkilendirmesi (DCL)

Sistemdeki tüm kullanıcıların tam yetkiyle çalışması büyük bir güvenlik açığı yaratır. `GRANT` komutuyla kullanıcılara yalnızca görev alanlarına uygun yetkiler tanınmalı, yetki ihtiyacı bittiğinde ise `REVOKE` komutuyla izinler derhal geri alınmalıdır.

3. İndeks Kullanımı (Indexing)

Milyonlarca satırdan oluşan devasa tablolarda arama hızını artırmak için sık sorgulanan sütunlara (Örn: T.C. Kimlik No, E-posta) indeks eklenmelidir. İndeks yapısı, bir kitabın fihristi gibi çalışarak aranan veriye erişim süresini belirgin biçimde kısaltır.

SQL Komut Türleri Karşılaştırma Tablosu

SQL dilindeki komutlar üstlendikleri işlevlere göre farklı kategorilere ayrılır. Aşağıdaki tabloda bu gruplar ve örnek komutları özetlenmiştir: Veri Tabanı Güvenliği: SQL Injection’dan Korunma Yolları da bu konunun pratikteki bir başka yansımasını gösterir.

KategoriAçıklamaÖrnek Komutlar
DDL (Data Definition Language)Veri tabanı ve tablo yapılarını tanımlar, günceller veya siler.CREATE, ALTER, DROP, TRUNCATE
DML (Data Manipulation Language)Tablo içindeki verileri ekler, günceller, sorgular veya siler.SELECT, INSERT, UPDATE, DELETE
DCL (Data Control Language)Kullanıcı erişim izinlerini ve sistem güvenliğini yönetir.GRANT, REVOKE

Pratik Yapma Zamanı: Örnek Bir SQL Senaryosu

Edindiğimiz teorik bilgileri pekiştirmek adına basit bir kütüphane yönetim sistemi senaryosunu adım adım kodlayalım.

📖 Uygulama Senaryosu: Kütüphane Veri Tabanı

-- 1. Veri Tabanını Oluşturma
CREATE DATABASE KutuphaneDB;
USE KutuphaneDB;

-- 2. Kitaplar Tablosunu Oluşturma
CREATE TABLE Kitaplar (
    KitapID INT PRIMARY KEY AUTO_INCREMENT,
    KitapAdi VARCHAR(100) NOT NULL,
    Yazar VARCHAR(100),
    Fiyat DECIMAL(6,2),
    StokMiktari INT DEFAULT 0
);

-- 3. Tabloya Örnek Veri Ekleme
INSERT INTO Kitaplar (KitapAdi, Yazar, Fiyat, StokMiktari)
VALUES ('Nutuk', 'Mustafa Kemal Atatürk', 150.00, 50),
       ('Sefiller', 'Victor Hugo', 120.50, 20);

-- 4. Fiyatı 130 TL'den Büyük Kitapları Listeleme
SELECT KitapAdi, Fiyat FROM Kitaplar WHERE Fiyat > 130;

Öğrendiklerinizi Pekiştirin

SQL ile veri tabanı oluşturma ve yönetimi, yazılım geliştirme ve veri analitiği alanlarında atılacak en sağlam adımlardan biridir. Doğru veri tiplerini seçmek, birincil ve yabancı anahtar ilişkilerini eksiksiz kurgulamak ve sorgu güvenliğini üst düzeyde tutmak yetkin bir veri tabanı mimarisinin temel taşlarıdır. Öğrendiklerinizi pekiştirmek için kendi ortamınıza MySQL veya MSSQL kurarak pratik sorgular yazmaya hemen başlayabilirsiniz.

✏️ Kendinizi Test Edin
  1. `PRIMARY KEY` ile `UNIQUE` kısıtlaması arasındaki temel fark nedir?
  2. Bir tablodaki tüm verileri en hızlı şekilde temizleyip tablo yapısını korumak için hangi komut tercih edilmelidir?
  3. `UPDATE` sorgusunda `WHERE` koşulu yazılmazsa nasıl bir sonuç ortaya çıkar?
  4. İlişkisel veri tabanı (RDBMS) yapısında iki tabloyu birbiriyle bağlamak adına hangi anahtar türünden yararlanılır?
📝 Konu Özeti
  • Veri tabanı, bilgilerin düzenli ve hızlı biçimde depolandığı sistemdir; SQL ise bu sistemle iletişim kurma dilidir.
  • `CREATE DATABASE` komutuyla veri tabanı, `CREATE TABLE` komutuyla da veri tabanı içindeki tablolar inşa edilir.
  • Tablo oluşturulurken her sütuna uygun veri tipi (`INT`, `VARCHAR`, `DATE` vb.) atanmalıdır.
  • Veri eklemek için `INSERT`, okumak için `SELECT`, güncellemek için `UPDATE`, silmek için `DELETE` komutlarına başvurulur.
  • Filtreleme yapan `WHERE` ifadesinin eksik kullanımı telafisi güç veri kayıplarına yol açabilir.
  • Normalizasyon ilkeleri ve `FOREIGN KEY` kullanımı, veri tekrarını önleyerek sistem bütünlüğünü güvenceye alır.

Sıkça Sorulan Sorular

❓ SQL veri tabanı oluşturma komutu nedir?
SQL dilinde yeni bir veri tabanı oluşturmak için `CREATE DATABASE veri_tabani_adi;` komutu kullanılır. Bu komut sunucu üzerinde boş bir veri depolama alanı ayırır.
❓ Primary Key (Birincil Anahtar) nedir ve ne işe yarar?
Primary Key, bir tablodaki her satırı benzersiz şekilde tanımlayan özel bir sütundur. Tekrar eden değer alamaz ve NULL (boş) olamaz.
❓ DELETE ile TRUNCATE arasındaki fark nedir?
DELETE komutu tablodan belirli satırları WHERE koşulu ile siler ve geri alınabilir. TRUNCATE ise tablodaki tüm verileri hızlıca temizler ve kimlik sayacını sıfırlar.
❓ SQL bir programlama dili midir?
Hayır, SQL genel amaçlı bir programlama dili değil, ilişkisel veri tabanlarındaki verileri sorgulamak, yönetmek ve işlemek için tasarlanmış yapılı bir sorgu dilidir.
❓ RDBMS nedir?
RDBMS (Relational Database Management System), verileri tablolar halinde tutan ve tablolar arasındaki ilişkileri yöneten İlişkisel Veri Tabanı Yönetim Sistemidir.
❓ MySQL ile Microsoft SQL Server (MSSQL) arasındaki fark nedir?
Her ikisi de RDBMS sistemidir. MySQL açık kaynak kodlu ve geniş topluluk desteğine sahipken, MSSQL Microsoft tarafından geliştirilen ticari ve kurumsal odaklı bir yazılımdır.
❓ Foreign Key (Yabancı Anahtar) ne işe yarar?
Foreign Key, bir tablodaki sütunun başka bir tablodaki Primary Key ile ilişkilendirilmesini sağlar. Bu sayede veriler arası mantıksal bağlar kurulur.
❓ SQL öğrenmek zor mudur?
Hayır, SQL dili İngilizce konuşma diline yakın açık komut yapısına sahip olduğu için öğrenmesi en kolay ve en mantıksal teknik dillerden biridir.
📚 Kaynaklar
  • BTK Akademi — Veri Tabanı Yönetim Sistemleri ve SQL Eğitimi Müfredatı
  • TÜBİTAK BİLGEM — Veri Yönetimi ve Yazılım Teknolojileri Standartları

Deniz Karay

DersMerkezi.net.tr’nin yazarı, eğitim alanında yıllara dayanan deneyime sahip bir uzmandır ve öğrencilerin öğrenme sürecini desteklemeyi hedefler. Matematik, fen bilimleri, tarih, dil ve edebiyat başta olmak üzere birçok ders alanında içerik üretir ve konuları sade, anlaşılır ve adım adım rehberler halinde sunar.

İlgili Makaleler

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Başa dön tuşu