Veri Tabanı25 11 202515 dk okumaLoading...

SQL Veri Türleri: Kapsamlı Rehber

Yazar:CO2MIT Academy Ekibi

Giriş

SQL veri türleri, veritabanında saklanacak verilerin türünü ve formatını belirleyen temel yapı taşlarıdır. Doğru veri türü seçimi, veri bütünlüğü, performans ve depolama verimliliği açısından kritik öneme sahiptir. Bu yazıda, SQLSQL (Structured Query Language): Veri tabanlarında veri sorgulama ve yönetimi için kullanılan standart programlama dilidir. veri türlerini kategorilere ayırarak detaylı bir şekilde inceleyeceğiz.

Veri Türü Nedir?

Veri türü, bir sütunda saklanabilecek verinin türünü, boyutunu ve formatını tanımlar. Her sütunSütun (Column): Tablodaki belirli bir veri tipindeki alanlar. Her sütun bir veri türüne sahiptir. yalnızca belirtilen veri türüne uygun değerleri kabul eder. Bu, veri tutarlılığını ve bütünlüğünü sağlar.

Sayısal Veri Türleri

Sayısal veri türleri, tam sayılar ve ondalıklı sayılar için kullanılır. Farklı veritabanı sistemleriVeritabanı Sistemi: MySQL, PostgreSQL, SQL Server gibi farklı veritabanı yönetim sistemleri kendi özel veri türlerine sahip olabilir. farklı isimler kullanabilir, ancak temel kavramlar benzerdir.

Tam Sayı Türleri

Veri Türü Boyut Değer Aralığı Açıklama
TINYINT 1 byte -128 to 127 (signed)
0 to 255 (unsigned)
Çok küçük tam sayılar için
SMALLINT 2 bytes -32,768 to 32,767 (signed)
0 to 65,535 (unsigned)
Küçük tam sayılar için
INT / INTEGER 4 bytes -2,147,483,648 to 2,147,483,647 (signed)
0 to 4,294,967,295 (unsigned)
Standart tam sayı türü, en yaygın kullanılan
BIGINT 8 bytes -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807 Çok büyük tam sayılar için

Ondalıklı Sayı Türleri

  • DECIMAL(p, s) / NUMERIC(p, s): Sabit hassasiyetli ondalıklı sayılar. p toplam basamak sayısı, s ondalık basamak sayısıdır. Finansal veriler için idealdir.
  • FLOAT: Tek hassasiyetli kayan noktalı sayı (32-bit). Yaklaşık değerler için kullanılır.
  • DOUBLE / REAL: Çift hassasiyetli kayan noktalı sayı (64-bit). Daha yüksek hassasiyet gerektiren durumlar için.
💡 İpucu: Finansal işlemler için DECIMAL kullanın. FLOAT ve DOUBLE yuvarlama hatalarına neden olabilir.

Metin Veri Türleri

Metin veri türleri, karakter dizilerini saklamak için kullanılır. Boyut ve performans açısından farklılık gösterirler.

Sabit Uzunluklu Metin

  • CHAR(n): Sabit uzunlukta karakter dizisi. Maksimum 255 karakter. Kısa ve sabit uzunlukta veriler için (telefon numaraları, posta kodları).

Değişken Uzunluklu Metin

  • VARCHAR(n): Değişken uzunlukta karakter dizisi. Maksimum uzunluk belirtilir. En yaygın kullanılan metin türü.
  • TEXT: Uzun metinler için. Boyut sınırı veritabanı sistemine göre değişir (genellikle 65,535 byte).
  • MEDIUMTEXT: Orta uzunlukta metinler için (yaklaşık 16 MB).
  • LONGTEXT: Çok uzun metinler için (yaklaşık 4 GB).

CHAR vs VARCHAR

Özellik CHAR VARCHAR
Depolama Sabit boyut (belirtilen uzunluk kadar) Değişken boyut (gerçek uzunluk + 1-2 byte)
Performans Daha hızlı (sabit boyut) Biraz daha yavaş (değişken boyut)
Kullanım Sabit uzunlukta veriler Değişken uzunlukta veriler

Tarih ve Zaman Veri Türleri

Tarih ve zaman verilerini saklamak için özel veri türleri kullanılır. Bu türler, tarih hesaplamaları ve formatlamaları için optimize edilmiştir.

  • DATE: Sadece tarih bilgisi (YYYY-MM-DD formatında). Örnek: 2025-11-25
  • TIME: Sadece zaman bilgisi (HH:MM:SS formatında). Örnek: 14:30:00
  • DATETIME: Tarih ve zaman birlikte (YYYY-MM-DD HH:MM:SS). Örnek: 2025-11-25 14:30:00
  • TIMESTAMP: Unix zaman damgası. Otomatik güncelleme özelliği olabilir. Genellikle kayıt oluşturma/güncelleme zamanlarını takip etmek için kullanılır.
  • YEAR: Sadece yıl bilgisi (1901-2155 arası).
⚠️ Dikkat: TIMESTAMP türü zaman dilimi (timezone) bilgisini içerir, DATETIME içermez. Uygulamanızın gereksinimlerine göre seçim yapın.

Boolean Veri Türleri

Boolean veri türü, doğru/yanlış değerlerini saklamak için kullanılır. Farklı veritabanı sistemleri farklı yaklaşımlar kullanır:

  • BOOLEAN / BOOL: TRUE veya FALSE değerleri. Bazı sistemlerde 1/0 veya 'Y'/'N' olarak da saklanabilir.
  • TINYINT(1): MySQL'de boolean için kullanılan alternatif (0 = false, 1 = true).

Binary Veri Türleri

İkili (binary) verileri saklamak için kullanılır. Dosyalar, resimler veya şifrelenmiş veriler için uygundur.

  • BINARY(n): Sabit uzunlukta ikili veri.
  • VARBINARY(n): Değişken uzunlukta ikili veri.
  • BLOB: Binary Large Object. Büyük ikili veriler için (resimler, dosyalar).
  • MEDIUMBLOB: Orta boyutlu ikili veriler.
  • LONGBLOB: Çok büyük ikili veriler.
💡 Best Practice: Büyük dosyaları veritabanında saklamak yerine, dosya sisteminde saklayıp veritabanında sadece yolunu (path) tutmak genellikle daha iyi bir yaklaşımdır.

Özel Veri Türleri

Bazı veritabanı sistemleri, özel ihtiyaçlar için ek veri türleri sunar:

PostgreSQL Özel Türleri

  • JSON / JSONB: JSON verilerini saklamak için. JSONB ikili format kullanır ve daha hızlı sorgulama sağlar.
  • ARRAY: Dizi verilerini saklamak için.
  • UUID: Evrensel benzersiz tanımlayıcılar için.
  • ENUM: Önceden tanımlanmış değer listesi.

MySQL Özel Türleri

  • ENUM: Önceden tanımlanmış değer listesi. Örnek: ENUM('küçük', 'orta', 'büyük')
  • SET: Birden fazla değer seçilebilen liste.
  • GEOMETRY: Coğrafi veriler için (nokta, çizgi, poligon).

Veri Türü Seçimi: En İyi Uygulamalar

1. Doğru Boyut Seçimi

  • Gereksinimden büyük veri türü kullanmayın. Bu hem depolama alanını hem de performansı olumsuz etkiler.
  • Gelecekteki büyüme ihtimalini göz önünde bulundurun, ancak aşırı büyük türler seçmeyin.

2. NULL Değerler

  • Gerekli olmayan sütunlar için NULL izni verin.
  • Zorunlu alanlar için NOT NULL kısıtlaması kullanın.

3. Varsayılan Değerler

  • Uygun durumlarda DEFAULT değerleri kullanın.
  • Örneğin: created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP

4. Performans Optimizasyonu

  • İndekslenmiş sütunlar için daha küçük veri türleri seçin.
  • VARCHAR yerine CHAR kullanabileceğiniz durumları değerlendirin.
  • Büyük metin alanlarını ayrı tablolarda saklamayı düşünün.

Veritabanı Sistemlerine Göre Farklılıklar

Farklı veritabanı sistemleriVeritabanı Sistemi: MySQL, PostgreSQL, SQL Server, Oracle gibi farklı veritabanı yönetim sistemleri. aynı kavramlar için farklı isimler kullanabilir:

Kavram MySQL PostgreSQL SQL Server
Tam Sayı INT INTEGER INT
Ondalıklı DECIMAL NUMERIC DECIMAL
Metin VARCHAR VARCHAR NVARCHAR
Büyük Metin TEXT TEXT NVARCHAR(MAX)
Tarih-Zaman DATETIME TIMESTAMP DATETIME2

Yaygın Hatalar ve Çözümleri

Hata 1: Yanlış Veri Türü Seçimi

Problem: Telefon numarası için INT kullanmak (başında 0 olan numaralar kaybolur).

Çözüm: VARCHAR veya CHAR kullanın.

Hata 2: Gereksiz Büyük Veri Türleri

Problem: Küçük sayılar için BIGINT kullanmak.

Çözüm: İhtiyacınıza uygun en küçük veri türünü seçin.

Hata 3: Finansal Veriler için FLOAT Kullanımı

Problem: Para miktarları için FLOAT kullanmak (yuvarlama hataları).

Çözüm: DECIMAL(10, 2) gibi sabit hassasiyetli türler kullanın.

Sonuç

SQL veri türleri, veritabanı tasarımının temel taşlarıdır. Doğru veri türü seçimi, veri bütünlüğü, performans ve bakım kolaylığı açısından kritik öneme sahiptir. Her veri türünün kendine özgü özellikleri, avantajları ve sınırlamaları vardır. Projenizin gereksinimlerini dikkatlice analiz ederek en uygun veri türlerini seçmek, başarılı bir veritabanı tasarımının anahtarıdır.

Unutmayın: Veri türü seçimi, veritabanı performansını ve ölçeklenebilirliğini doğrudan etkiler. Gelecekteki değişiklikler için esneklik bırakırken, gereksiz kaynak kullanımından kaçınmak önemlidir.

Kaynakça

  • SQL Standard (ISO/IEC 9075)
  • MySQL 8.0 Reference Manual - Data Types
  • PostgreSQL Documentation - Data Types
  • Database Design for Mere Mortals - Michael J. Hernandez