SQL Veri Tipleri Konu Anlatımı ve Örnek Kullanımları
SQL veri tipleri, bir veri tabanı tablosundaki her bir sütunun ne tür veriler saklayabileceğini, bu verilerin bellekte ne kadar yer kaplayacağını ve üzerlerinde hangi işlemlerin yapılabileceğini belirleyen temel tanımlamalardır. Veri tabanı yönetim sistemlerinde (RDBMS) doğru veri tipini seçmek, sistemin performansını optimize etmek, depolama alanından tasarruf sağlamak ve veri bütünlüğünü korumak adına hayati bir öneme sahiptir. Günlük hayatta kullandığımız bankacılık uygulamalarından sosyal medya platformlarına kadar her dijital sistem, arka planda bu veri tipleri sayesinde milyarlarca veriyi düzenli bir şekilde işlemektedir.
- SQL veri tiplerinin temel kategorilerini ve özelliklerini öğreneceksiniz.
- Sayısal, metinsel ve tarihsel veriler için en uygun tipleri seçmeyi kavrayacaksınız.
- Veri tiplerinin depolama ve performans üzerindeki etkilerini analiz edebileceksiniz.
- Gerçek dünya senaryolarında SQL veri tiplerinin nasıl uygulandığını örneklerle göreceksiniz.
- SQL veri tipleri genel olarak Sayısal, Metinsel (Karakter) ve Tarih/Saat olmak üzere üç ana gruba ayrılır.
- VARCHAR ve INT en sık kullanılan veri tipleridir.
- Veri tipi seçimi, veri tabanının sorgu hızını doğrudan etkiler.
- Her veri tabanı yönetim sistemi (MySQL, PostgreSQL, SQL Server) küçük sözdizimi farklarına sahip olabilir ancak mantık aynıdır.
SQL Veri Tiplerine Giriş ve Temel Kavramlar
Veri tabanı tasarımı sürecinde atılan ilk ve en önemli adımlardan biri, tabloları oluştururken her bir sütun (column) için uygun veri tipini belirlemektir. SQL veri tipleri, sisteme girilen verinin bir sayı mı, bir metin mi yoksa bir tarih mi olduğunu söyler. Bu ayrım yapılmadığında, örneğin bir doğum tarihi sütununa yanlışlıkla isim yazılabilir veya matematiksel işlem yapılması gereken bir fiyat alanına geçersiz karakterler girilebilir.
Veri tipleri sadece kısıtlama getirmekle kalmaz, aynı zamanda verinin disk üzerinde kaplayacağı alanı da belirler. Örneğin, sadece 0 ile 255 arasındaki sayıları saklayacağınız bir alan için devasa bir sayı tipi seçmek, binlerce satırlık bir tabloda ciddi yer israfına yol açar. Bu nedenle her öğrencinin ve geliştiricinin SQL veri tiplerini detaylarıyla bilmesi gerekir.
Sayısal Veri Tipleri (Numeric Data Types)
Sayısal veri tipleri, matematiksel hesaplamalarda kullanılan verileri saklamak için tasarlanmıştır. Bu tipler kendi içinde tam sayılar ve ondalıklı sayılar olarak ikiye ayrılır. SQL’de en çok karşılaşılan sayısal tipler şunlardır:
- INT (Integer): Standart tam sayı tipidir. Genellikle ID’ler, adet bilgileri veya yaş gibi veriler için kullanılır.
- TINYINT: Çok küçük tam sayıları saklamak için kullanılır (0-255 arası).
- BIGINT: Çok büyük rakamlar (örneğin dünya nüfusu veya büyük finansal işlemler) için tercih edilir.
- DECIMAL / NUMERIC: Kesin ondalıklı sayılar için kullanılır. Özellikle para birimleri ve finansal raporlamalarda hata payını sıfıra indirmek için tercih edilir.
- FLOAT / REAL: Yaklaşık ondalıklı sayılar için kullanılır. Bilimsel hesaplamalarda, çok hassas olmayan ama geniş aralıklı sayılarda performans sağlar.
Metinsel (Karakter) Veri Tipleri
Metin tabanlı veriler, isimlerden adreslere, uzun makalelerden kullanıcı yorumlarına kadar geniş bir yelpazeyi kapsar. SQL’de metinleri saklamak için kullanılan temel tipler şunlardır:
CHAR ve VARCHAR Arasındaki Fark Nedir?
SQL öğrenenlerin en çok karıştırdığı konulardan biri CHAR ve VARCHAR farkıdır. CHAR(n) tipi sabit uzunluktadır. Eğer 10 karakterlik bir alan tanımlayıp 3 karakter yazarsanız, kalan 7 karakter boşlukla doldurulur. VARCHAR(n) ise değişken uzunluktadır; sadece yazdığınız karakter kadar yer kaplar.
- CHAR: Sabit uzunluklu veriler (T.C. Kimlik No, ülke kodları, plaka kodları) için idealdir.
- VARCHAR: Değişken uzunluklu veriler (İsim, e-posta, adres) için kullanılır ve depolama dostudur.
- TEXT: Çok uzun metinler, blog yazıları veya ürün açıklamaları için kullanılır.
Aşağıdaki SQL komutu, farklı veri tiplerini içeren basit bir ‘Kullanicilar’ tablosu oluşturur:
CREATE TABLE Kullanicilar (
id INT PRIMARY KEY,
ad_soyad VARCHAR(100),
ulke_kodu CHAR(2),
biyografi TEXT
);
Tarih ve Saat Veri Tipleri
Verilerin ne zaman oluşturulduğunu veya bir etkinliğin ne zaman gerçekleşeceğini takip etmek için tarih veri tipleri kullanılır. SQL, zamanı yönetmek için oldukça esnek yapılar sunar:
- DATE: Sadece tarih saklar (YYYY-AA-GG formatında).
- TIME: Sadece saat saklar (SS:DD:SS formatında).
- DATETIME: Hem tarih hem de saat bilgisini bir arada saklar.
- TIMESTAMP: Genellikle bir kaydın oluşturulma veya güncellenme anını otomatik olarak kaydetmek için kullanılır.
- YEAR: Sadece yıl bilgisini saklar.
| Veri Tipi | Kategori | En Yaygın Kullanım Alanı |
|---|---|---|
| INT | Sayısal | ID, Adet, Sıralama |
| VARCHAR | Metinsel | İsim, E-posta, Şehir |
| DECIMAL | Sayısal | Fiyat, Maaş, Oran |
| DATE | Zaman | Doğum Günü, Randevu |
| BOOLEAN | Mantıksal | Aktif/Pasif, Evet/Hayır |
Diğer Özel Veri Tipleri
Modern SQL sistemleri sadece sayı ve metinle sınırlı değildir. Gelişen teknolojiyle birlikte yeni ihtiyaçlar doğmuştur:
- BOOLEAN: Sadece Doğru (TRUE) veya Yanlış (FALSE) değerlerini alır.
- BLOB (Binary Large Object): Resim, video veya ses gibi ikili dosyaları veri tabanında saklamak için kullanılır.
- JSON: Modern web uygulamalarında sıkça kullanılan JSON formatındaki verileri doğrudan sorgulanabilir şekilde saklar.
Veri Tipi Seçerken Dikkat Edilmesi Gereken Stratejiler
Bir veri tabanı uzmanı gibi düşünmek istiyorsanız, veri tipi seçerken şu üç kuralı asla unutmamalısınız: Doğruluk, Performans ve Esneklik. İhtiyacınızdan büyük bir veri tipi seçmek sorguları yavaşlatır. Örneğin, sadece 0-100 arası notların girileceği bir sütun için BIGINT kullanmak, otoyolda bisikletle gitmeye benzer; gereksiz bir kapasite kullanımıdır.
Ayrıca, verinin ileride büyüme ihtimalini de göz önünde bulundurmalısınız. Bir e-ticaret sitesinde ürün ID’leri için küçük bir sayı tipi seçerseniz, ürün sayısı arttığında sistem hata verebilir. Bu dengeyi kurmak tecrübe ile sabitlenir.
- Bir kişinin T.C. Kimlik numarasını saklamak için hangi veri tipi daha uygundur (CHAR mı VARCHAR mı)? Neden?
- Para birimi saklarken neden FLOAT yerine DECIMAL tercih edilmelidir?
- Bir blog sitesindeki uzun makale içerikleri için hangi metin veri tipi kullanılmalıdır?
- Sadece ‘Aktif’ veya ‘Pasif’ durumunu belirtmek için hangi veri tipi en az yer kaplar?
- ‘2023-10-25 14:30:00’ şeklindeki bir veriyi saklamak için hangi tarih tipi seçilmelidir?
Öğrendiklerinizi Pekiştirin
SQL veri tipleri, veri dünyasının alfabesi gibidir. Bu alfabeyi ne kadar iyi çözerseniz, karmaşık veri tabanı yapılarını o kadar rahat yönetebilirsiniz. Pratik yapmak için kendi bilgisayarınıza bir SQL yönetim aracı (MySQL Workbench veya PostgreSQL pgAdmin gibi) kurabilir ve farklı veri tipleriyle tablolar oluşturarak denemeler yapabilirsiniz. Unutmayın, en iyi öğrenme yöntemi hata yapmak ve o hatayı SQL kodları içinde düzeltmektir.
- SQL veri tipleri, verilerin yapısını ve boyutunu belirler.
- Sayısal Tipler: INT, DECIMAL, FLOAT gibi seçenekler sunar.
- Metinsel Tipler: Sabit uzunluk için CHAR, değişken uzunluk için VARCHAR kullanılır.
- Tarih Tipleri: DATE, DATETIME ve TIMESTAMP zaman yönetimini sağlar.
- Doğru Seçim: Performansı artırır ve veri hatalarını önler.


