Bu yazımızda Sql veri tiplerinin özellikleri ve kullanım alanlarından bahsedeceğiz. Veritabanı içerisinde tablolar oluşturulurken, depolanacak her veri için, en ideal veri tipinin belirlenmesi gerekir. Sebebi performansı etkilediği içindir. Küçük uygulamalarda göze çarpmasada büyük uygulamalarda veri tiplerini doğru şekilde belirlemiş olmak, verilerin disk alanında daha az yer kaplamasını, verileri daha seri çekmesini sağlar yani performansa olumlu…
Bu yazımızda Sql veri tiplerinin özellikleri ve kullanım alanlarından bahsedeceğiz. Veritabanı içerisinde tablolar oluşturulurken, depolanacak her veri için, en ideal veri tipinin belirlenmesi gerekir. Sebebi performansı etkilediği içindir. Küçük uygulamalarda göze çarpmasada büyük uygulamalarda veri tiplerini doğru şekilde belirlemiş olmak, verilerin disk alanında daha az yer kaplamasını, verileri daha seri çekmesini sağlar yani performansa olumlu yönde katkıda bulunur. Veri tabanımızı oluştururken veri tiplerini doğru seçmek bizim için çok önemlidir. Veri tabanımızın performansını etkileyebilecek önemli konulardan birisidir. Şimdi sırasıyla kullanabileceğimiz veri tiplerinin neler olduğunu inceleyelim:
Eğer amacınız veri tabanı geliştirme ve yönetimi ise, veri türleri kategorilerindeki benzerlik ve farklılıkları not etmek ve stored procedure’ler için tür ve dizayn parametreleri oluştururken depolama alanınızı buna göre planlamak isteyebilirsiniz.
1) Metinsel Veri Tipleri
char: Unicode’u desteklemeyip char(n) şeklinde kullanılırlar. 8000 karaktere kadar değer alabilirler. Belirtilenden(n) az karakter girilse dahi giriş yapılan boyut kadar yer kaplar. Veri giriş boyutları benzer, sabit olan veri kümelerinde kullanılması önerilir
nchar: Unicode(uluslararası karakter setini, tanımlı tüm alfabeleri içerir.)destekler. Chardan farklı olarak maksimum 4000 karaktere kadar değer alabilir.
varchar: Chardan farklı olarak verinin boyutu kadar yere kaplar. 8000 karaktere kadar depolama yapar. Birbirinden farklı uzunlukta veri girişi yapılacağı zaman kullanılması önerilir. Varchar (MAX) kullanımı ile 2GB’a kadar depolama yapılabilir.
nvarchar: Verinin boyutu kadar yer kaplar. Varchardan farklı olarak unicode’u destekler.4000 karaktere kadar değer alabilir.
text: Belirtilenden az değer girilse bile boyutu kadar yer kaplar.2GB’a kadar metinsel veri depolar. Unicode’u desteklemez.
ntext: Text’den farklı olarak girilen karakter boyutu kadar yer kaplar ve unicode’u destekler.
!NOT: Microsoft, Text ve Ntext veri türlerini performans kaybı yaşanma ihtimalinden dolayı kullanmayı önermiyor.
2) Binary (ikilik) Veri Tipleri
Binary string veri türleri, bir geliştiricinin serileştirilmiş dosya, byte stream’ler ve diğer özel veriler gibi binary bilgileri depolamasına izin verir. Binary veri türü, sayısal ve karakter dizisi veri türleriyle karşılaştırıldığında aralık ve depolama gereksinimlerindeki farklılıkları vardır. Sabit ve değişken uzunlukta binary string verilerinin her ikisini de kullanabilirsiniz. Bunlar arasındaki farklar ilerleyen bölümlerde yer alan karakter veri türü bölümünde açıklanacaktır.
Binary: 1 ve 0 ları temsil eden ikilik taban veri tipidir. Sabit uzunluklu veri tiplerinde kullanılırlar.8000 byte’a kadar depolama yapabilir.
Varbinary: Binary’den farklı olarak girilen karakter kadar yer kaplar. Bu yüzden uzunlukların değişken olduğu durumlarda tercih edilir.
Image: Resim dosyalarını saklamak için kullanılır. En fazla 2 GB’a kadar veri depolar. Bunun yerine varbinary(MAX) kullanılması tercih edilir.
!Not: Image veri türü de bir binary string veri türüdür ancak SQL Server’ın gelecekteki bir sürümünde kaldırılacaktır. Bunun yerine varbinary(max) kullanılmalıdır.
3) Sayısal Veri Tipleri
Sayısal veri türleri exact numeric and approximate numeric olmak üzere iki alt kategoriden birine girer.
Bit: Bir byte uzunluğunda tam sayı veri tipidir. Genellikle evet/hayır şeklinde mantıksal bilgileri tutmak için kullanılır.
Int: 4 byte büyüklüğünde, -2 milyar /+2 milyar arasında değer tutabilen tam sayı veri tipidir.
Bigint: 8 byte büyüklüğünde -2⁶³ ve 2⁶³ arasında değer tutabilen tam sayı veri tipidir.
Smallint: 2 byte büyüklüğünde -32.768 ve 32.768 arası değer alabilen tam sayı veri tipidir.
Tinyint: 1 byte büyüklğüne sahip, 0–255 arası tam sayı veriler için kullanılan tam sayı veri tipidir.
4) Parasal Veri Tipleri
Money: 8 byte boyutunda, yaklaşı -2⁶⁴ ile 2⁶⁴ arasında parasal değerleri tutmak için kullanılır. 4 basamağa kadar duyarlı ondalık tipli verileri saklar.
Smallmoney: 4 byte uzunluğunda yaklaşık -214.000 ile 214.000 arası parasal değerleri tutmak için kullanılır. Money tipinde olduğu gibi 4 basamağa kadar duyarlı ondalık tipli verileri saklarken kullanılır.
5)Tarih-Zaman Veri Tipleri
Date: Tarihleri YYYY-AA-GG (yıl-ay-gün) formatında saklar. 3 byte uzunluğunda veri tipidir.
Smalldatetime: Tarih ve zaman verilerini yıl-ay-gün ve saat-dakika-saniye-salise şeklide saklar. 4 byte uzunluğunda veri tipidir.
Datetime: YYYY-AA-GG şeklinde tarih ve zaman verilerini tutan 8 byte uzunluğunda veri tipidir. 1 Ocak 1753–31 Aralık 9999 arası veriler için kullanılır.
Datetime2: Datetime’dan farklı olarak 1 Ocak 0001–31 Aralık 9999 tarihleri arası verileri tutan ekstra olarak salise hassasiyeti daha yüksektir. Kapladığı alan salise hassasiyetine göre 6–8 byte arası değişebilir.
Time: Sadece saat verilerini saat-dakika-saniye-salise(7 basamaklı) şeklinde saklayan , boyutu kullanıcı tarafından değiştirilebilen 3–5 byte arası yer kaplayan veri tipidir.
Datetimeoffset: Ülkelere göre değişen zaman farkını hesaplayıp tutarken kullanılır.
6) Diğer Veri Tipleri
Sql_variant: sayı,metin, binary gibi farklı veri tiplerini depolamak için kullanılan veri tipidir. Yani bir sütun ya da fonksiyonda birden fazla veri tipi kullanmamız gerektiğinde tercih etmeliyiz.
Geometry: Öklid koordinat sistemine ait verileri tutmak için kullanılır. Geometrik şekillerin en-boy-yükselik verilerini saklar.
Timestamp: Tabloya kayıt eklendiğinde , güncellendiğinde binary türünde özel değer alan veri tipidir.
Aşağıdaki veri türleri tablolarda veya view’lardaki sütunlarında kullanılamaz; stored procedure’ler içerisinde değişken veya parametre olarak kullanılırlar:
Veri Türü Önceliği
Sorgularınızdaki farklı veri türlerini birleştirirken veya karşılaştırırken (örneğin Where veya Join içerisinde), SQL Server’ın bir değerin veri türünü diğer değerin veri türüne dönüştürmesi gerekir. Hangi veri türünün dönüştürüleceği, ikisi arasındaki önceliğe bağlıdır.
SQL Server’da, tüm veri türlerinin sıralaması önceliğe göredir. Herhangi iki veri türü kendi aralarında biri düşük önceliğe, diğeri yüksek önceliğe sahip olacaktır. Dönüştürme sırasında SQL Server, daha düşük veri türünü daha yüksek olan veri türüne dönüştürmeye çalışır. Tipik olarak bu işlem özel koda ihtiyaç duyulmadan örtülü (implicit) olarak gerçekleşir. Ancak bu veri tipi öncelik düzenini temel olarak anlamanız önemlidir, böylece veri türlerini birleştirmek veya dönüştürmek için ne zaman manuel olarak (explicit) dönüştürmeniz gerektiğini anlarsınız.
Size ve Veritabanlarınıza Yardımcı Olmak İçin Bekliyoruz!