Serverdaki kayıtlar arttıkça tasarım esnasında veri tipini doğru kullanmış olmanın önemi kendini gösterir. Veritabanının hazırlanması esnasında dikkat edilmesi gereken konuların en başında gelen veri tipi seçimi, o kolonda tutulacak her türlü veri için yeterli olmalı ancak bunu yaparken de kullanılabilecek en küçük alana karşılık gelmeli. Yani marjinal faydayı sağlayacak tipi kullanmalıyız.
SQL Server 2008 veri tiplerini 7 başlık altında inceleyebiliriz.
- Karakter Veri Tipleri ( Character Data Types )
- Kesin Sayısal Veri Tipleri ( Exact Numeric Data Types )
- Tahmini Sayısal Veri Tipleri ( Approximate Numeric Data Types )
- Parasal Veri Tipleri ( Monetary Data Types )
- Tarih ve Zaman Veri Tipleri ( Date and Time Data Types )
- İkili Veri Tipleri ( Binary Data Types )
- Özel Amaçlı Veri Tipleri ( Special Purpose Data Types )
1. Karakter Veri Tipleri
En çok kullanılan veri tiplerinden biri olan karakter veri tiplerini metinsel ifadeleri tutmak için kullanırız. İçerecekleri karakter sayısını parantez içinde parametre olarak alırlar. Genelde “n” ve “var” öneklerinden birini ya da ikisini birden alırlar.
“n” ve “var” öneklerini tek tek anlatmak yerine yeri gelince değinmek daha iyi anlamamızı sağlayacağı için hemen veri tiplerini anlatmaya başlayalım.
char (p) : Sabit uzunlukda karakter dizisi alabilir. En fazla 8.000 karakter (8.000 byte) alabilir. İçine alacağı verinin uzunluğu tam belli olduğu durumlarda kullanılır. Örneğin TC Kimlik numaralarının uzunluğu 11 karakterdir ve değişmez. Dolayısıyla bu alan için char(11) veri tipi tanımlayabiliriz. Girdiğimiz değer 11 karakterin altında da olsa kalan kısmı boşluk karakteriyle doldurarak 11 karaktere tamamlar. Gerekmediği durumlarda kullanmamız durumunda daha sonra girdiğimiz veriyi işleyebilmek için trim etmek gibi ekstra işlemler yapmamıza neden olacaktır.
nchar(p) : “n” öneki unicode karakter seti kullandığını gösterir. Bunun anlamı daha geniş bir karakter aralığına sahip olmakla birlikte char veri tipine göre kapladığı alanın 2 katı olduğudur. ANSI standartlarında bir karakter 1 byte yer kaplar, ancak unicode karakterler için bu yeterli değildir ve 2 byte yer kaplar. Dolayısı ile en fazla 4.000 karakter (8.000 byte) tutabilir. Örneğin farklı dillerde destek verecekseniz (hem japonca, hem arapça vs) kullanılması uygun olacaktır.
varchar(p) : “var” öneki gireceğimiz verinin uzunluğunun değişken olduğu durumlarda kullanacağımız karakter veri tipidir. Yani “kolonda tutualacak her bir veri p sayıda oalcaktır” diyemeyeceğimiz ya da demeyeceğimiz durumlarda kullanılabilir. “var” öneki variable (değişken) kelimesinin kısaltılmasından gelir. varchar veri tipi en fazla 8.000 karakter (8.000 byte) içerebilir. Örneğin “serdar” kelimesi char(10) tipinde tutulursa sabit 10 karakterlik alan ayrılacağı için 10 bytle’lık yer kaplar, oysa varchar(10) tanımlı bir kolonda 6 harften oluştuğu için 6 bytelık yer kaplayacaktır. Kişi isimleri, e-posta adresi, doğumyeri, vs verileri bu veri tipinde saklayabiliriz.
varchar(MAX) : SQL Server 2005 ile hayatımıza giren veri tiplerinden bir tanesi varchar(MAX) ve (MAX) parametresi. Aslında text ile aynı olmasına karşın üstünlük olarak içinde tuttuğu verinin uzunluğuna göre boyutunun değişmesi ve mesela iki kolondaki verinin eşitliğinin sorgulanması gibi özellikler sağlaması sayılabilir. En fazla 2.147.483.647 karakter (2 gigabyte) alabilir.
nvarchar(p) : Değişken uzunluktaki unicode veriler için kullanılır. En fazla 4.000 karakter (8.000 byte) tutabilir. Yukarıdaki örnekle devam edersek, unicode olmasından dolayı her bir karakterin 2 bytelık alan işgal etmesinden dolayı “serdar” kelimesi için nvarchar(10) veri tipi 6*2 byte =12 byte yer kaplayacaktır.
nvarchar(MAX) : ntext’e alternatif olarak yine SQL Server 2005 ile kullanılmaya başlanan nvarchar(MAX), değişken uzunluktaki unicode veriler için kullanılır. En fazla 1.073.741.823 karakter (2 gigabyte) tutabilir.
text : Değişken uzunluktaki veriler için kullanılır. Alacağı karakter en fazla 2.147.483.647 (2 gigabyte)’dir. varchar(MAX)’ın gelmesiyle kullanımı yavaş yavaş azalmaktadır.
ntext : En fazla 1.073.741.823 karakter ( 2 gigabyte) alabilir. Değişken uzunluktaki unicode veriler için kullanılır.
text ve ntext varchar(MAX) ve nvarchar(MAX)’ın gelmesiyle beraber misyonunu tamamlamış görünüyor. Her ne kadar geriye dönük uyumluluk açısından baktığımızda çok doğru gözükmese de Microsoft SQL Server’ın ileriki versiyonlarında text, ntext ve image veri tiplerini kaldıracağını duyurmuş durumda.