Giriş
Modern web uygulamalarında ve veri analitiği süreçlerinde en sık karşılaşılan sorulardan biri, ilişkisel veritabanlarından doğru veriyi güvenli ve performanslı bir şekilde nasıl çekeceğimizdir. Bu rehberde, veritabanı yönetiminin temel taşı olan Sql & Ver Nasıl Yapılır? sorusuna derinlemesine ve pratik bir yanıt arayacağız. SQL (Structured Query Language - Yapılandırılmış Sorgu Dili) kullanarak verileri sorgulamak, filtrelemek ve belirli koşullara göre listelemek, yazılım geliştiricilerin her gün gerçekleştirdiği en kritik işlemlerden biridir.
SQL dünyasında "ver" komutu doğrudan bir anahtar kelime olmasa da, veritabanından veri çekme (SELECT) ve bu verilere koşul uygulama (WHERE - yani Türkçe mantığıyla "koşul ver") süreçlerini temsil eder. Bu makale, sıfırdan ileri seviyeye kadar SQL sorguları yazmayı, veritabanından güvenli bir şekilde veri çekmeyi ve bu verileri filtrelemeyi adım adım öğretecektir. İster yeni başlayan bir yazılımcı olun, ister mevcut bilgilerinizi 2026 yılı standartlarına göre güncellemek isteyen bir kıdemli geliştirici, bu rehberde aradığınız tüm pratik çözümleri bulacaksınız.
Yazılım geliştirmede veritabanı sorgularının doğru tasarlanması, uygulamanın yanıt süresini (latency) doğrudan etkiler. Yanlış yazılmış bir filtreleme sorgusu, milyonlarca satırlık bir tabloda sunucu kaynaklarını tüketebilir. Bu nedenle, sadece sorgu yazmayı değil, aynı zamanda bu sorguların arka planda nasıl çalıştığını ve nasıl optimize edileceğini de öğreneceğiz. Hazırsanız, veritabanı dünyasına adım atalım ve SQL ile veri sorgulama işlemlerini uygulamalı olarak inceleyelim.
Ön Hazırlık ve Gereksinimler
SQL sorgularını yazmaya ve test etmeye başlamadan önce, üzerinde çalışabileceğimiz bir veritabanı ortamına ihtiyacımız vardır. Bu rehberdeki örnekler, endüstri standardı olan ve modern özellikleri destekleyen ilişkisel veritabanı yönetim sistemleri (RDBMS) ile tam uyumludur.
Sorguları çalıştırmak için aşağıdaki araçlardan birini bilgisayarınıza kurmuş olmanız veya çevrimiçi bir SQL editörü kullanmanız önerilir:
- PostgreSQL (Sürüm 15 veya üzeri): Gelişmiş özellikleri ve standartlara tam uyumu nedeniyle modern projelerde en çok tercih edilen açık kaynaklı veritabanıdır.
- MySQL (Sürüm 8.0 veya üzeri) / MariaDB: Web uygulamalarında yaygın olarak kullanılan, hızlı ve güvenilir bir diğer açık kaynaklı alternatiftir.
- DBeaver veya pgAdmin: Veritabanınızı görsel olarak yönetmek ve SQL sorgularınızı çalıştırmak için kullanabileceğiniz güçlü veritabanı istemcileridir.
- VS Code SQL Araçları: Geliştirme ortamınızdan çıkmadan sorgu çalıştırmak istiyorsanız, Visual Studio Code için geliştirilmiş SQL eklentilerini tercih edebilirsiniz.
Bu rehber boyunca, bir e-ticaret platformunun kullanıcı yönetim sistemini simüle eden senaryolar üzerinden ilerleyeceğiz. Bu sayede öğrendiğiniz teorik bilgileri gerçek dünya projelerine kolayca uyarlayabilirsiniz.
Adım 1: SQL Veritabanı ve Tablo Oluşturma
Veri sorgulama (SELECT) ve filtreleme (WHERE) işlemlerini gerçekleştirebilmek için öncelikle yapılandırılmış bir tabloya ihtiyacımız vardır. SQL'de tablolar, belirli veri tiplerine sahip sütunlardan ve bu sütunlara karşılık gelen satırlardan oluşur.
İlk adımda, kullanıcı bilgilerini tutacağımız "kullanicilar" adında bir tablo oluşturacağız. Bu tabloda kullanıcıların benzersiz kimlik numaraları (ID), adları, soyadları, e-posta adresleri, yaşları, üyelik durumları ve kayıt tarihleri yer alacaktır.
CREATE TABLE kullanicilar (
id SERIAL PRIMARY KEY,
ad VARCHAR(50) NOT NULL,
soyad VARCHAR(50) NOT NULL,
eposta VARCHAR(100) UNIQUE NOT NULL,
yas INT CHECK (yas >= 18),
durum VARCHAR(15) DEFAULT 'Aktif',
kayit_tarihi TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
Yukarıdaki SQL kod bloğu, veritabanında yeni bir tablo tanımlar. SERIAL PRIMARY KEY ifadesi, her yeni kullanıcı eklendiğinde otomatik olarak artan benzersiz bir kimlik numarası oluşturur. VARCHAR(50) ifadesi, en fazla 50 karakter uzunluğunda metinsel verileri saklamak için kullanılır. CHECK (yas >= 18) kısıtlaması (constraint), veritabanına sadece 18 yaş ve üzerindeki kullanıcıların kaydedilmesini garanti altına alarak veri tutarlılığını sağlar.
Adım 2: Tabloya Örnek Veri Ekleme (INSERT INTO)
Oluşturduğumuz boş tablo üzerinde sorgulama yapamayacağımız için, tablomuzu test verileriyle doldurmamız gerekir. SQL'de tabloya yeni satırlar eklemek için INSERT INTO komutu kullanılır.
Aşağıdaki sorgu ile "kullanicilar" tablomuza farklı yaş, durum ve isimlere sahip 5 adet örnek kullanıcı ekleyeceğiz. Bu çeşitlilik, sonraki adımlarda yapacağımız filtreleme işlemlerinin doğruluğunu test etmemizi kolaylaştıracaktır.
INSERT INTO kullanicilar (ad, soyad, eposta, yas, durum) VALUES
('Ahmet', 'Yılmaz', 'ahmet.yilmaz@example.com', 28, 'Aktif'),
('Mehmet', 'Kaya', 'mehmet.kaya@example.com', 34, 'Pasif'),
('Ayşe', 'Demir', 'ayse.demir@example.com', 22, 'Aktif'),
('Fatma', 'Çelik', 'fatma.celik@example.com', 45, 'Aktif'),
('Can', 'Öztürk', 'can.ozturk@example.com', 19, 'Askıda');
Bu sorgu çalıştırıldığında, veritabanı motoru her bir parantez içindeki veriyi sırasıyla ilgili sütunlara yerleştirir. "id" ve "kayit_tarihi" sütunları için değer belirtmedik; çünkü bu sütunlar tablo oluşturulurken tanımladığımız varsayılan değerleri (otomatik artan sayı ve sistem saati) otomatik olarak alacaktır.
Adım 3: SQL SELECT ile Temel Veri Çekme
Veritabanında saklanan verileri ekrana getirmek veya uygulamanıza çekmek için SELECT komutunu kullanırsınız. Bu işlem, SQL'in en temel ve en sık kullanılan parçasıdır.
Aşağıdaki örnek kod, "kullanicilar" tablosundaki tüm satırları ve sadece belirli sütunları (ad, soyad ve eposta) çekmek için kullanılır. Üretim ortamlarında (production) performans gerekçesiyle her zaman sadece ihtiyacınız olan sütunları seçmeniz önerilir.
SELECT ad, soyad, eposta FROM kullanicilar;
Bu sorgu çalıştırıldığında, veritabanı tablodaki tüm kullanıcıların sadece ad, soyad ve e-posta bilgilerini içeren bir sonuç kümesi (result set) döner. Eğer tablodaki tüm sütunları çekmek isteseydik SELECT * FROM kullanicilar; yazabilirdik; ancak bu yaklaşım gereksiz ağ trafiğine ve bellek kullanımına yol açtığı için büyük projelerde kaçınılması gereken bir yöntemdir.
Adım 4: SQL WHERE ile Koşullu Sorgulama (Filtreleme)
"Sql & Ver Nasıl Yapılır?" konusunun en önemli aşaması, verileri belirli kriterlere göre filtrelemektir. SQL'de bu işlem WHERE yan cümleciği (clause) ile gerçekleştirilir. WHERE, veritabanı motoruna "Sadece şu koşula uyan verileri bana ver" talimatını iletir.
Aşağıdaki örnekte, yaşı 25'ten büyük olan ve üyelik durumu "Aktif" olan kullanıcıları listeleyeceğiz. Bu sorgu, birden fazla koşulu birleştirmek için AND operatörünü kullanır.
SELECT ad, soyad, yas, durum
FROM kullanicilar
WHERE yas > 25 AND durum = 'Aktif';
Bu sorguyu çalıştırdığınızda, veritabanı motoru önce tablodaki tüm satırları tarar (veya varsa indeksleri kullanır), ardından her satır için "yas > 25" ve "durum = 'Aktif'" koşullarının her ikisinin de sağlanıp sağlanmadığını kontrol eder. Örnek verilerimiz arasından sadece "Ahmet Yılmaz" (28 yaşında ve Aktif) bu kriterleri karşıladığı için sonuç kümesinde yalnızca o listelenecektir.
Kritik Güvenlik Uyarısı: Kullanıcıdan alınan girdileri (input) doğrudan SQL sorgularının içine dinamik metin birleştirme (string concatenation) yöntemiyle eklemeyin. Bu durum, siber saldırganların veritabanınızı ele geçirmesine neden olan "SQL Injection" zafiyetine yol açar. Her zaman parametreli sorguları (Prepared Statements) tercih edin.
Adım 5: Gelişmiş Mantıksal Operatörler ve Filtreleme
Gerçek dünya senaryolarında filtreleme koşulları çok daha karmaşık olabilir. SQL, verileri hassas bir şekilde süzebilmeniz için OR (veya), IN (içinde), BETWEEN (arasında) ve LIKE (benzer) gibi güçlü operatörler sunar.
Aşağıdaki örnek kodda, durumu "Aktif" veya "Askıda" olan ve aynı zamanda yaşı 20 ile 40 arasında bulunan kullanıcıları listeleyeceğiz. Koşulların öncelik sırasını belirlemek için parantez işaretlerini kullanacağız.
SELECT ad, soyad, yas, durum
FROM kullanicilar
WHERE (durum = 'Aktif' OR durum = 'Askıda')
AND yas BETWEEN 20 AND 40;
Bu sorguda kullanılan BETWEEN 20 AND 40 ifadesi, 20 ve 40 değerleri de dahil olmak üzere bu aralıktaki tüm sayıları kapsar. Parantez kullanımı ise işlem önceliğini belirler; veritabanı önce parantez içindeki OR koşulunu değerlendirir, ardından çıkan sonucu AND koşulu ile birleştirir. Eğer parantezleri kullanmasaydık, SQL'in işlem önceliği kuralları nedeniyle sorgumuz beklenmeyen yanlış sonuçlar üretebilirdi.
Adım 6: Güvenli SQL Sorguları Yazma (SQL Injection Engelleme)
Yazılım geliştirmede güvenlik her zaman birinci önceliktir. SQL sorgularını doğrudan veritabanı konsolunda yazarken güvendeyizdir; ancak bu sorguları bir programlama dili (PHP, Python, Node.js vb.) aracılığıyla çalıştırırken parametreli sorgular kullanmalıyız.
Aşağıdaki örnek kodda, PHP PDO (PHP Data Objects) kütüphanesi kullanılarak bir kullanıcının dinamik girdilerle nasıl güvenli bir şekilde sorgulanacağı gösterilmiştir. Bu yöntem, gelen verileri otomatik olarak temizleyerek SQL Injection saldırılarını tamamen engeller.

Yorumlar (0)
Yorum Yaz