2 Mart 2014 Pazar

SQL SERVER VERİ TİPLERİ

Veri tipleri tablolarda tutacağımız verilerin yapısını belirlemeye yarar. Tabloları oluştururken doğru veri tiplerini kullanmak bize sonradan (hazırladığımız veri tabanını kullanırken) kaynak ve performans açısından büyük kazançlar sağlar. Aksi takdirde hazırladığımız veri tabanları gereğinden büyük boyutta veriler tutmamıza sebep olacağı için hazırladığımız veri tabanını kullanan programların performansını da olumsuz yönde etkileyecektir. 
SQL Server’ daki veri tiplerini 7 temel kategori altında toplayabiliriz:
· Kesin Sayısal (Exact Numeric) Veri Tipleri
· Yaklaşık Sayısal (Approximate Numeric) Veri Tipleri
· Parasal (Monetary) Veri Tipleri
· Tarih ve Zaman (Date and time) Veri Tipleri
· Karakter (Character) Veri Tipleri
· İkili (Binary) Veri Tipleri
· Özel Amaçlı (Special Purpose) Veri Tipleri
1. Kesin Sayısal (Exact Numeric) Veri Tipleri:
Ondalıklı veya ondalıksız kesin sayıları içerir. Bu tip verileri Herhangi bir kısıtlama veya istisnai durum olmaksızın istediğiniz matematiksel işlemde kullanabilirsiniz. Kapasiteleri işlemciden bağımsız olarak sabittir. Mesela, int veri tipinin Intel veya AMD işlemcilerde kapladığı alan 4 byte’ tır. Dolayısıyla, veri tabanınızı bilgisayarlar arasında rahatlıkla taşıyabilirsiniz. 
· Bigint (8 byte): Pozitif ve negatif tam sayıları tutmaya yarar. -263 ile 263-1 arasındaki tam sayıları tutabilir. 
· Int (4 byte): Pozitif ve negatif tam sayıları tutmaya yarar. -231 ile 231-1 arasındaki tam sayıları tutabilir. 


· Smallint (2 byte): Pozitif ve negatif tam sayıları tutmaya yarar. -215 (-32768) ile 215-1 (32767) arasındaki tam sayıları tutabilir. 
· Tinyint (1 byte): Sadece 0 ile 255 arasındaki tamsayıları tutabilir.
· Decimal (x,y): Boyutu 5 ile 17 byte arasında değişir. Int ve türevi olan bigint, smallint ve tinyint veri tiplerinden farklı olarak ondalıklı sayıları tutmaya yarar. İki parametre alır. İlk parametre (x) sayının kaç karakter uzunluğunda olacağını, ikinci parametre (y) ise bu karakterlerin kaçının ondalık kısım olduğunu ifade eder. Örneğin decimal(4,2) şeklinde tanımlanan bir değişken 12,34 sayısı gibi 4 karakterden oluşan ve ilk iki karakterin tam sayı değerini, son iki karakterin ise ondalık kısmı ifade ettiği sayıları temsil eder. 
· Numeric (x,y): Boyutu 5 ile 17 byte arasında değişir. Kullanımı decimal ile aynıdır. 
Yukarıdaki veri tiplerinden en çok kullanılan int ve decimal dir. Kullanacağımız sayılar 32767’ yi geçmeyecekse int yerine smallint kullanılması doğrudur veya 255’ ten daha az olacaksa tinyint kullanılmalıdır. Bu durumun bize 2 katıkısı vardır: Harddiskte daha az alan kullanmış oluruz ve daha da önemlisi hazırlayacağımız veri tabanını kullanan programların performansı daha iyi olur. Çünkü yapılan sorgularda veri tabanından küçük veriler çekilecektir. 
2. Yaklaşık Sayısal (Approximate Numeric) Veri Tipleri 
Bu veri tipleri ondalıklı sayıları tutabilir. Decimal veri tipinin tutamadığı sayıları saklamak için kullanılırlar. Ama approximate numeric veri tipini kullanmanın bazı dezavantajları vardır. Kaydettiğiniz sayının ondalık kısmının kayıpsız bir şekilde saklanacağı garantisi yoktur. Mesela 1.2345 sayısını float(4) şeklinde tanımladığınızda sayının son 2 karakterini atıp 1.23 olarak tutacaktır. Yani veri kaybına sebep olacaktır. Onun için bu sayılara approximate (yaklaşık) sayısal denir. Ayrıca approximate numeric veri tipindeki veriler AMD ve Intel işlemcili bilgisayarlar arasında taşındığında çeşitli hatalara sebep olacaktır. 
İki tane approximate numeric veri tipi vardır:
· Float(x): Boyutu 4 ile 8 byte arasındadır. x değeri maksimum 53 olabilir. 
· Real: Boyutu 4 byte tır. SQL-92 standartlarını sağlamak için yerini float almıştır. Ancak hala real tipi de geçerli bir veri tipidir. 
3. Parasal (Monetary) Veri Tipleri
Parasal verileri tutmaya yarar. 2 tane parasal veri tipi vardır:
· Money(8 byte): -922 337 203 685 47,5808 ile 922 337 203 685 477,5807 arası parasal veri tutabilir.
· Smallmoney(4 byte): 214 748,3648 ile 214 748,3647 arası parasal veri tutabilir. 
4. Tarih ve Zaman (Date and time) Veri Tipleri
Tarih ve zamanı tutarlar. Sadece tarih veya sadece zaman tutan bir veri tipi henüz mevcut değildir. İki tane tarih ve zaman veri tipi vardır: 
· Datetime (8 byte): 1 Ocak 1753 ile 31 Aralık 9999 tarihleri arasındaki herhangi bir tarihi saatiyle birlikte tutar. 3.33 milisaniyelik bir hassasiyete sahiptir. 
· Smalldatetime (4 byte): 1 Ocak 1990 ile 6 Haziran 2079 tarihleri arasındaki herhangi bir tarihi saatiyle birlikte tutar. 10 dakikalık bir hassasiyete sahiptir. 
5. Karakter (Character) Veri Tipleri
ANSI standartlarına uyan herhangi bir karakter 1 byte yer kaplar. Ancak Unicode karakterleri hafızada tutabilmek için 1 byte yeterli değildir ve ekstradan 1 byte daha kullanılır ve toplam 2 byte veri tutarlar. Peki, bu Unicode karakterler nedir? Unicode karakterler farklı dillere özgü karakterlerdir. Mesela Türkçe’ de kullandığımız ç,ğ,ş,ö gibi harfler bizim dilimize özgüdür ve ANSI standartlarında yer almamaktadır. Bu karakterleri veri kaybı olmadan saklayabilmek için Unicode olarak tanımlarız. 8 tane karakter veri tipi vardır ve Unicode olanlar başında n harfi olanlardır: 
· Char(n): Boyutu1 ile 8000 arasında değişir. Maksimum 8000 karakter tutar. 
· Nchar(n): Boyutu 2 ile 8000 arasında değişir. Maksimum 4000 karakter tutar.
· Varchar(n): Boyutu1 ile 8000 arasında değişir. Maksimum 8000 karakter tutar.
· Varchar(MAX): Maksimum 2 gigabyte (1.073.741.824 karakter) veri saklar.
· Nvarchar(n): Boyutu 2 ile 8000 arasında değişir. Maksimum 4000 karakter tutar.
· Nvarchar(MAX): Maksimum 2 gigabyte (536.870.912 karakter) veri saklar.
· Text: Maksimum 2 gigabyte (1.073.741.824 karakter) veri saklar.
· Ntext: Maksimum 2 gigabyte (536.870.912 karakter) veri saklar.
Karaker veri tiplerini kısaca özetlemek gerekirse temelde 2 tane veri tipi vardır: Char ve text. Bu iki tip n (unicode) ve var (variable) öneklerini alırlar ve diğer veri tipleri oluşur. n öneki daha önce de belirttiğim gibi özel karakterler olan Unicode karakterleri temsil ederler. Bu karakterlerin her biri 2 byte yer kaplar. Var eki ise boyutun değişken olduğu anlamına gelir. Mesela “örnekveri” kelimesini nchar(20) şeklinde tanımladığımızda 40 byte yer tutarken nvarchar(20) şeklinde tanımlarsak 9*2=18 byte yer tutar. n parametresi ise maksimum karakter uzunluğunu belirtir. Varchar(MAX) taki MAX parametresi 1.073.741.824 sayısını ve nvarchar(MAX) taki MAX parametresi ise 536.870.912 sayısını temsil eder. Bu iki veri tipi text ve ntext e alternatif olarak SQL Server 2005’ te ortaya çıkmıştır. Bunların text ve ntext ten iyi yönleri boyutlarının tuttukları veriye göre değişmesidir. Oysaki text ve ntext te içerik ne olursa olsun boyut 2 gigabyte tır. Ayrıca text ve ntext te iki verinin eşitliğini sorgulama veya birden fazla veriyi birleştirme gibi özellikler yoktu. 
6. İkili (Binary) Veri Tipleri
SQL Server’ da dosyaları saklamak için binary veri tiplerini kullanırız. 4 çeşit binay veri tipi vardır: 
· Binary(n): Boyutu 1 ile 8000 byte arasında değişir. Sabit boyutta binary veri tutmak için kullanılır. 
· Varbinary(n): Boyutu 1 ile 8000 byte arasında değişir. Değişken boyutta binary veri tutmak için kullanılır. 
· Varbinary(MAX): Boyutu maksimum 2 gigabyte tır. Değişken boyutta binary veri tutmak için kullanılır. 
· Image: Boyutu maksimum 2 gigabyte tır.
Küçük boyuttaki dosyalar için binary ve varbinary veri tiplerini kullanırız. Varbinary(MAX) SQL Server 2005’ te ortaya çıkmıştır. Image veri tipinin özelliklerine ilaveten varbinary tipinin özelliklerini de taşır. Image veri tipi sadece resim dosyaları için değildir, bütün dosyaları kaydetmede kullanılabilir. Tek şart dosya boyutunun 2 gigabyte tan daha az olmasıdır. 
7. Özel Amaçlı (Special Purpose) Veri Tipleri
SQL Server 2005’ te standart veri tiplerine ilaveten 7 tane de özel veri tipi vardır:
· Bit: 0,1 veya null verilerini tutar. Temel bayrak değerleri için kullanılır. False(Yanlış) için 0, true (doğru) için ise 1 değeri tutulur. 
· Timestamp: Otomatik üretilen bir değerdir. Her veri tabanı içinde sistem saatinden farklı bir zaman sayacı vardır. Bir tabloda sadece bir tane timestmap kolon olabilir, o da satır eklendiğinde, güncellendiğinde, vs. veritabanının içindeki sayacın ürettiği timestamp değerini tutar. 
· Uniqueidentifier: Bir satırı tek (aynı kopyası bulunmayan) yapmak için tanımlanan 16 bitlik kimliktir (GUID-Global Unique Identifier) . 
· Sql_variant: Tuttuğu verinin tipi verinin içeriğine göre değişir. Maksimum 8000 byte veri tutar. 
· Cursor: Kursör tanımlanan uygulamalar tarafından kullanılır. İşlemler için kursöre bir referans içerir. Bu veri tipi tabloda kullanılamaz. 
· Table: Sonraki işlemde kullanılmak üzere bir “result set” tutmak için kullanılır. Bu veri tipi sütun için kullanılamaz. Sadece tetikleyici (trigger), saklı yordam (stored procedure) ve fonksiyonlarla tablo üretirken kullanılır. 
· Xml: Boyutu 2 gigabyte a kadar olan Xml dokümanlarını tutmaya yarar. Seçenekler yardımıyla sadece belirtilen yapıdaki bir xml dokümanını saklamasını da sağlayabiliriz.
Disqus Yorumları Yükle

0 yorum