SQl
SQL

SQL Veri Tipleri

Veritabanı tabloları oluştururken kullandığımız her veri için en uygun veri tipinin belirlenmesi gerekir. Bu veri tiplerini seçerken dikkat etmemiz gereken en önemli husus doğru olan veri tipini seçmektir. Bunun nedeni veri tipi seçiminin programın performansını etkilemesindendir. Küçük uygulamalarda pek göze çarpmasada büyük uygulamalarda veri tiplerini doğru bir şekilde belirlemiş olmak verilerin disk alanında daha az yer kaplamasına ve veritabanı ile uygulama arasındaki iletişimin daha seri bir şekilde gerçekleşmesini sağlar yani programın performansını olumlu yönde etkiler.

Şimdi sırasıyla bu veri tiplerine ve özelliklerine bakalım, böylelikle hangi veri tipi hangi aralıkta hangi değerleri alıyor ve bellekte kendine ne kadar yer açıyor bunları öğrenmiş olacağız.

bigint : 8 byte büyüklüğündeki tam sayı değerleri için kullanılan ve  ile  sayıları arasında değer alabilen bir tam sayı veri tipidir.

binary(n) : Makine dilini yani 1 ve 0 ları temsil eden ikilik taban veri tipidir. Sabit uzunluklu veri tiplerinde kullanılırlar. 8000 byte’a kadar depolama yapabilir. Belirtilen “n” değerden az veri girilse bile girilen değer kadar yer kaplar.

bit : Bir byte uzunluğunda tam sayı veri tipidir. Mantıksal veri tipleri için kullanılır. Bu veri tiplerinde iki tane sonuç vardır. Yani 0 veya 1 ya da True-False gibi değerleri tutar.

char(n) : Unicode (uluslararası karakter seti) olmayan sabit uzunlukta karakter verisi saklamak için kullanılır. Örneğin; TC Kimlik No, Telefon No gibi. En fazla 8000 karaktere kadar veri saklayabilir. Gireceğimiz sabit uzunluktaki verinin karakter uzunluğu kadar değer verilir.  Belirtilen “n” değerden az veri girilse bile girilen değer kadar yer kaplar.

date : Tarihleri YYYY-MM-DD (yıl-ay-gün) şeklinde saklayan 3 byte uzunluğunda veri tipidir. 0001-01-01 ile 9999-12-31 tarihleri arasındaki tüm değerleri tutabilir.

datetime : YYYY-MM-DD hh:mm:ss:mmm şeklinde tarih ve zaman verilerini tutan 8 byte uzunluğunda veri tipidir. 1 Ocak 1753 ile 31 Aralık 9999 tarihleri arasındaki tarih ve zaman verilerini tutmak için kullanılır.

datetime2(n) : Datetime ile arasındaki fark salise hassasiyetinin daha yüksek olmasıdır. 7 basamağa kadar salise hassasiyeti kullanıcı tarafından belirlenebilir. Kapladığı alan salise hassasiyetine göre 6-8 byte arası değişir.

datetimeoffset(n) : Ülkelere göre değişen zaman farkını  tutmak için kullanılır. Yaptığımız uygulamalarda farklı ülkelerin tarih ve saat bilgilerini kullanacak olursak bu veri tipini kullanabiliriz.

decimal(n,m) : Ondalıklı veriler için kullanılır.  ile  arasında değer alır. Float ve Double veri tipleri ile benzerlik gösterir. Tek farkları boyutlarıdır. Decimal içine parametreler alır. Örnek verecek olursak mesela decimal(4,2) diye bir veri tipi tanımladım. Bu veri tipinin barındıracağı veri kümesi şu şekilde olmalıdır. Öncelikle dört basamaklı rastgele bir sayı yazıyorum “1234”, şimdide iki basamak sağdan sola doğru sayıp virgül koyuyorum. Yani decimal(4,2) sayımız “12,34” tür.

float : Kullanılmak istenen boyuta göre ortalama değer alır. Yani kaplayacağı alanı siz belirlersiniz. Kullanımı float(n) şeklindedir. “n” parametresi belirtilirse 1 ile 53 arasında bir değer olmalıdır. Eğer belirtilmezse varsayılan değeri 53’tür. Buradaki “n” size sayının kaç basamak olduğunu ve bellekte bu sayı için kaç byte’lık bir alan ayrılacağını belirtmek içindir. Verdiğimiz bu “n” değerine göre kaydetmek istediğimiz sayı yuvarlanır. Asıl değer değilde yaklaşık bir değer kaydedilmiş olur.

geograpy : Coğrafi koordinatları ve GPS verilerini tutmak için kullanılır.

geometry : Öklid koordinat sistemine ait verileri tutmak için kullanılır. Geometrik şekillerin en, boy, yükseklik verilerini saklar.

hierarchyid : Ağaç veri modeli veya hiyerarşik olarak sınıflandırılmış verileri saklamak için kullanılır. Genelde tablolar arası ilişki kullanıldığından pek tercih edilen bir veri tipi değildir.

image : Resim dosyalarını saklamak için kullanılır. En fazla 2 GB’a kadar veri depolar.  Fakat pek tercih edilmez. Çünkü veri tabanına görsel fotoğraflar vb. eklemek veri tabanı’nın performansını olumsuz yönde etkiler. Bunun yerine varbinary(MAX) veri tipi kullanılarak dosya yolu gösterme işlemi tercih edilir. Programda bulunmasının nedeni önceki SQL versiyonlarını desteklemek amacıyla bulunmaktadır.

int : 4 byte büyüklüğünde yaklaşık -2 milyar ile +2 milyar arası değer alabilen tam sayı veri tipidir.

money : 8 byte boyutunda yaklaşık  ile  arasında parasal değerleri tutmak için kullanılır. 4 basamağa kadar ondalık kısım duyarlılığı vardır.

nchar(n) : Char’dan farklı olarak 4000 karaktere kadar değer alabilir. Unicode (uluslararası karakter seti) destekler. Belirtilen “n” değerden az veri girilse bile girilen değer kadar yer kaplar.

ntext :Text’ten farklı olarak girilen karakter boyutu kadar yer kaplar. En fazla 2 GB’a kadar metinsel veri depolama yapar. Unicode (uluslararası karakter seti) destekler.

numeric(n,m) : Ondalıklı veriler için kullanılır. İşlev ve özellik bakımından decimal ile aynıdır. Bu yüzden pek tercih edilmez. Daha çok decimal veri tipi kullanılır.

nvarchar(n) : Girilen verinin boyutu kadar yer kaplar. Varchar’dan farklı olarak Unicode (uluslararası karakter seti) destekler. 4000 karaktere kadar değer alabilir. “n” değeri olarak MAX parametresi girilirse  byte’a kadar veri depolayabilir. Buda yaklaşık 2 GB’a tekamül eder.

real : Float veri tipinin parametre olarak 24 değerini aldığında ortaya çıkan halidir.

smalldatetime : Tarih ve zaman verilerini YYYY-MM-DD hh:mm:ss:mmm şeklinde saklayan 4 byte uzunluğunda veri tipidir.

smallint : 2 byte büyüklüğünde  ile  arasında değer alabilen tam sayı veri tipidir.

smallmoney : 4 byte uzunluğunda yaklaşık -214.748.3648 ile 214.748.3647 arasındaki parasal değerleri tutmak için kullanılır. Money tipinde olduğu gibi 4 basamağa kadar duyarlı ondalık tipli veri saklayabilir.

sql-variant : Sayı, metin, binary gibi farklı veri tiplerini depolamak için kullanılan veri tipidir. Genelde veri tipi bilinmeyen veriler için kullanılır.

text: Belirtilen değerden az veri girilse bile boyutu kadar yer kaplar. 2 GB’a kadar metinsel veri depolar. Unicode (uluslararası karakter seti) desteklemez.

time : Sadece saat verilerini hh:mm:ss:mmm şeklinde saklayan veri tipidir. Datetime2 gibi salise hassasiyeti maksimum 7 basamaktır ve kullanıcı tarafından değiştirilebilen boyutu 3-5 byte arası yer kaplayan veri tipidir.

timestamp : Tabloya kayıt eklendiğinde veya güncellendiğinde binary türünde özel bir değer alan veri tipidir. Diğer tarih veri tipleriyle alakası yoktur. O anki tarih ve saati otomatik olarak ekler. Kullanıcı bu alanı değiştiremez veya değer atayamaz. Eğer tarih ve saat elle eklenecekse o zaman veri tipi “datetime” olarak ayarlanmalıdır.

tinyint : 1 byte büyüklüğünde 0 ile 255 arasında değer alabilen tamsayı veri tipidir.

uniqueidentifier : 16 byte uzunluğunda eşsiz bir GUID değeri saklamak için kullanılır. GUID; harf ve sayılardan oluşan eşsiz bir datadır. İki guıd birbirinden tamamen farklıdır. Eşit olamazlar.

varbinary(n) : Binary’den farklı olarak girilen karakter kadar yer kaplar. 8000 karaktere kadar depolama yapabilir. Parametre olarak max değeri girilirse depolama boyutu  byte’a kadar yükseltilebilir.

varchar(n) : Char’dan farklı olarak verinin boyutu kadar yer kaplar. 8000 karaktere kadar depolama yapar. Birbirinden farklı uzunlukta veri girişi yapılacağı zaman kullanılması önerilir. Varchar(max) ile kullanımı 2GB’a kadar yükseltilebilir.

xml : XML türündeki hiyerarşik verileri saklamak için kullanılır. Kapasitesi 2 GB’ı aşmaz. Bellekteki boyutu saklanan xml verisine göre değişir.

Başvurulan Kaynaklar

https://docs.microsoft.com/en-us/sql/t-sql/data-types/data-types-transact-sql?view=sql-server-ver15

Bir cevap yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir