Sql & Ver Nasıl Yapılır?

Sql & Ver Nasıl Yapılır?
Sql & Ver Nasıl Yapılır?

SQL ve Veri İşlemleri: Adım Adım Veritabanı Yönetimi

SQL (Structured Query Language), ilişkisel veritabanı yönetim sistemlerinde veri tanımlama, sorgulama ve manipülasyon işlemleri için kullanılan standart dildir. 2026 yılı itibarıyla modern uygulamalarda verinin güvenli ve performanslı bir şekilde işlenmesi, yazılım geliştirme süreçlerinin temel taşı olmaya devam etmektedir. Bu rehberde, SQL kullanarak veritabanı üzerinde nasıl işlem yapacağınızı, verileri nasıl yöneteceğinizi ve güvenli sorgu yazım tekniklerini adım adım öğreneceksiniz.

Bu makale, veritabanı dünyasına yeni adım atan geliştiricilerden, mevcut SQL bilgilerini tazelemek isteyen profesyonellere kadar geniş bir kitleye hitap etmektedir. Veritabanı tasarımı, temel CRUD (Create, Read, Update, Delete) işlemleri ve SQL injection gibi kritik güvenlik açıklarına karşı alınacak önlemleri pratik örneklerle inceleyeceğiz.

Gereksinimler ve Ön Hazırlık

SQL işlemlerini gerçekleştirebilmek için bilgisayarınızda bir veritabanı yönetim sistemi (RDBMS) kurulu olmalıdır. 2026 standartlarına uygun olarak PostgreSQL veya MySQL 9.x sürümleri önerilmektedir. Ayrıca, veritabanı ile etkileşime geçmek için DBeaver, DataGrip veya komut satırı arayüzü (CLI) kullanabilirsiniz.

  • Veritabanı Sunucusu: PostgreSQL 17 veya MySQL 9.0.
  • İstemci Yazılımı: DBeaver (Ücretsiz ve çok platformlu).
  • Temel Bilgi: Tablo yapısı ve ilişkisel veritabanı mantığına giriş.

Kurulumu tamamladıktan sonra, yerel sunucunuza bağlanarak ilk veritabanınızı oluşturmaya hazır hale gelebilirsiniz.

Adım 1: Veritabanı ve Tablo Oluşturma

Veritabanı üzerinde işlem yapmadan önce verilerin saklanacağı bir yapıya ihtiyacınız vardır. SQL'de CREATE komutu ile veritabanı ve tablo oluşturulur. Aşağıdaki örnekte, kullanıcı bilgilerini tutacak bir tablo tasarımı yer almaktadır.

-- Yeni bir veritabanı oluşturma
CREATE DATABASE proje_veritabani;

-- Kullanıcılar tablosunu oluşturma
CREATE TABLE kullanicilar (
    id SERIAL PRIMARY KEY,
    ad VARCHAR(50) NOT NULL,
    email VARCHAR(100) UNIQUE NOT NULL,
    kayit_tarihi TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

Bu kod bloğunda SERIAL veri tipi, her yeni kayıt için otomatik artan bir kimlik numarası oluşturur. UNIQUE kısıtlaması ise aynı e-posta adresiyle birden fazla kayıt girilmesini engeller.

Adım 2: Veri Ekleme (INSERT) İşlemleri

Tablonuz hazır olduğuna göre, veritabanına veri eklemek için INSERT INTO ifadesini kullanırız. Veri eklerken sütun isimlerini belirtmek, gelecekte yapılabilecek değişikliklerde hata payını düşürür.

-- Tabloya veri ekleme
INSERT INTO kullanicilar (ad, email) 
VALUES ('Ahmet Yılmaz', 'ahmet@example.com');

INSERT INTO kullanicilar (ad, email) 
VALUES ('Ayşe Demir', 'ayse@example.com');

Veri ekleme işlemi sırasında kayit_tarihi alanını boş bıraktık; çünkü tabloyu oluştururken DEFAULT CURRENT_TIMESTAMP değerini atadık. Bu, veritabanının otomatik olarak o anki zamanı kaydetmesini sağlar.

Adım 3: Verileri Sorgulama (SELECT)

Eklediğiniz verileri görüntülemek için SELECT komutu kullanılır. Verileri filtrelemek için WHERE koşulunu kullanmak, performans açısından kritik öneme sahiptir.

-- Tüm kullanıcıları listeleme
SELECT * FROM kullanicilar;

-- Belirli bir kullanıcıyı e-posta ile bulma
SELECT ad FROM kullanicilar WHERE email = 'ahmet@example.com';

SELECT * kullanımı küçük tablolar için pratik olsa da, büyük ölçekli uygulamalarda sadece ihtiyacınız olan sütunları (örneğin: SELECT ad, email) çağırmanız veritabanı yükünü azaltır.

Adım 4: Veri Güncelleme ve Silme

Veritabanındaki bilgileri değiştirmek için UPDATE, silmek için ise DELETE komutlarını kullanırız. Bu komutları kullanırken WHERE koşulunu eklemeyi unutmak, tüm tablonun bozulmasına yol açabilir.

-- Kullanıcı adını güncelleme
UPDATE kullanicilar 
SET ad = 'Ahmet Can Yılmaz' 
WHERE id = 1;

-- Kullanıcıyı silme
DELETE FROM kullanicilar 
WHERE id = 2;
Kritik Uyarı: UPDATE veya DELETE işlemlerini gerçekleştirmeden önce mutlaka SELECT ile etkilenen satırları kontrol edin. WHERE koşulu olmayan bir DELETE komutu, tablonuzdaki tüm verileri kalıcı olarak siler.

Adım 5: SQL Güvenliği ve SQL Injection

SQL injection, saldırganların veritabanı sorgularına kötü niyetli kodlar enjekte etmesidir. Bunu önlemenin en güvenli yolu "Prepared Statements" (Hazırlanmış İfadeler) kullanmaktır. Asla kullanıcıdan gelen veriyi doğrudan sorgu metnine eklemeyin.

-- Hatalı (Güvensiz) Kullanım:
-- "SELECT * FROM users WHERE name = '" + kullaniciGirdisi + "'";

-- Doğru (Güvenli) Kullanım (Parametreli Sorgu):
PREPARE sorgu_hazirla(text) AS 
SELECT * FROM kullanicilar WHERE email = $1;

EXECUTE sorgu_hazirla('ahmet@example.com');

Parametreli sorgular, veritabanı motorunun gelen girdiyi kod olarak değil, sadece veri olarak işlemesini sağlar. Bu, 2026 yılı uygulama geliştirme standartlarında zorunludur.

SQL İşlem Yöntemleri Karşılaştırması

Yöntem Avantajı Dezavantajı
Ham SQL Sorguları Hızlı ve doğrudan kontrol SQL Injection riski yüksek
ORM (Object Relational Mapping) Güvenli ve nesne tabanlı Karmaşık sorgularda yavaş olabilir
Parametreli Sorgular Güvenli ve optimize Ekstra kodlama gerektirir

Sıkça Sorulan Sorular

SQL öğrenmek için ne kadar süre gerekir?

Temel SQL komutlarını öğrenmek birkaç gün sürer. Ancak veritabanı optimizasyonu ve karmaşık ilişkisel sorgular üzerine uzmanlaşmak düzenli pratikle birkaç ay alabilir.

SQL Injection'dan nasıl korunurum?

Her zaman parametreli sorgular (Prepared Statements) kullanın ve veritabanı kullanıcısına sadece ihtiyacı olan yetkileri (Read-Only vb.) verin.

Hangi veritabanı yönetim sistemini seçmeliyim?

Küçük projeler için SQLite, orta ve büyük ölçekli kurumsal projeler için PostgreSQL günümüzün en güçlü ve güvenilir tercihleridir.

İndeksleme (Indexing) neden önemlidir?

İndeksler, veritabanının veriyi arama hızını devasa oranda artırır. Özellikle sık sorgulanan sütunlarda indeks kullanmak, uygulamanızın performansını doğrudan etkiler.

Veritabanı yedeklemesi nasıl yapılır?

Veritabanı sistemlerinin kendi araçları (örneğin PostgreSQL için pg_dump) ile düzenli yedekler almalı ve bu yedekleri farklı bir sunucuda saklamalısınız.

Sorumluluk Reddi: Bu makaledeki kod örnekleri eğitim amaçlıdır. Üretim ortamında (production) kullanacağınız veritabanı işlemlerinde mutlaka yedekleme yapın, yetkilendirmeleri kısıtlayın ve uygulama katmanında güvenlik testlerini tamamlayın.

İleri Düzey SQL Performans Optimizasyonu ve Hata Ayıklama (Debugging)

Veritabanı yönetiminde sadece çalışan kod yazmak yeterli değildir; yazılan sorguların yüksek veri hacimleri altında ne kadar hızlı ve verimli çalıştığı da kritik önem taşır. Yanlış tasarlanmış bir sorgu, binlerce satırlık bir tabloda milisaniyeler içinde çalışırken, milyonlarca satıra ulaşıldığında sunucu kaynaklarını tüketerek sistem kilitlenmelerine (deadlock) yol açabilir.

Sonuç

SQL, verinin olduğu her yerde karşınıza çıkacak en temel yetkinliktir. Bu rehberde; veritabanı ve tablo oluşturma, CRUD işlemleri ve SQL Injection'a karşı korunma yöntemlerini öğrendiniz. Bir sonraki adım olarak, "Joins" (Tabloları Birleştirme) ve "Transactions" (İşlem Yönetimi) konularını inceleyerek veritabanı bilginizi daha profesyonel bir seviyeye taşıyabilirsiniz. Pratik yapmaya devam edin; veritabanı yönetimi tecrübe ile gelişir.

Bu yazıya tepkinizi paylaşın:
Zeynep Arslan

Kullanıcı deneyimi odaklı içerik üretiminde uzmanlaşmış bir editörüm. Özellikle DIY projeleri ve teknik rehberler üzerine detaylı içerikler üretiyorum.

Yorumlar (0)

Yorum Yaz