SQL Server ile bir veritabanı oluşturma işlemini gerçekleştirirken oluşturacağınız tablonun kolonların en doğru veri tipini kullanmak bir çok farklı oluşacak sorunları engellemek gibi, boş yere kaybedilecek veri kaybından da kurtulursunuz. Eğer veritabanı öğrenmeye başlamak istiyor iseniz öncelikle SQL Veri Tiplerinin ne olduğunu kavramak ve arasında ki farkı öğrenerek başlamanız gerekmektedir.
Oluşturduğunuz bir veri tabanı tablosunda her bir sütunun ismi ve SQL Veri Türleri ise bu sütunun tutabileceği veri türlerini örnek olarak parasal, tarih ve saat, tam sayı verileri gibi tutabilmenizi sağlar.
SQL Veri Tipleri ve Açıklamaları
Bir veritabanı yöneticisi yada geliştiricisi bir tablo oluşturduğunda bu tablonun her birine vereceği ismi ve saklayacağı veri türünü iyi seçmesi gerekmektedir. Veri türü, her sütunun içinde hangi veri türünün beklendiğini anlamak için SQL için bir yönergedir ve ayrıca SQL’in depolanan verilerle nasıl etkileşimde bulunacağını tanımlar.
SQL ‘da 3 farklı veri tipleri vardır. Bunlar string yani metin, sayı ve tarih veri tipleridir.
[accordion] [accordion_content title=”SQL String Veri Tipleri” icon=”” active=”active”]
Veri Tipi | Açıklama | Max. Boyut | Kapladığı Alan |
---|---|---|---|
char(n) | Sabit genişlikli karakter dizesi | 8,000 characters | Tanımlanan genişlik |
varchar(n) | Değişken genişlikli karakter dizesi | 8,000 characters | 2 bytes + karakter sayısı |
varchar(max) | Değişken genişlikli karakter dizesi | 1,073,741,824 characters | 2 bytes + karakter sayısı |
text | Değişken genişlikli karakter dizesi | 2GB of text data | 4 bytes + karakter sayısı |
nchar | Sabit genişlikli Unicode dizesi | 4,000 characters | Tanımlanan genişlik x2 |
nvarchar | Değişken genişlikli Unicode dizesi | 4,000 characters | |
nvarchar(max) | Değişken genişlikli Unicode dizesi | 536,870,912 characters | |
ntext | Değişken genişlikli Unicode dizesi | 2GB of text data | |
binary(n) | Sabit genişlik ikili dize | 8,000 bytes | |
varbinary | Değişken genişlik ikili dize | 8,000 bytes | |
varbinary(max) | Değişken genişlik ikili dize | 2GB | |
image | Değişken genişlik ikili dize | 2GB |
[/accordion_content][accordion_content title=”SQL Sayı Veri Tipleri” icon=”” active=”active”]
Veri Tipi | Açıklama | Kapladığı Alan |
---|---|---|
bit | 0, 1 veya NULL olabilecek tam sayı | |
tinyint | 0’dan 255’e kadar tam sayılara izin verir | 1 byte |
smallint | -32.768 ve 32.767 arasında tam sayılar sağlar | 2 bytes |
int | -2,147,483,648 ve 2,147,483,647 arası tam sayılara izin verir | 4 bytes |
bigint | -9,223,372,036,854,775,808 ve 9,223,372,036,854,775,807 numaralı sayıları verir. | 8 bytes |
decimal(p,s) | Sabit hassasiyet ve ölçek numaraları. -10 ^ 38 + 1’den 10 ^ 38 -1’e kadar sayılara izin verir. P parametresi, saklanabilen maksimum toplam basamak sayısını gösterir (hem ondalık noktanın solunda hem de sağında). p 1’den 38’e bir değer olmalıdır. Varsayılan değer 18’dir. S parametresi ondalık noktanın sağında saklanan azami basamak sayısını belirtir. s, 0’dan p’ye kadar bir değer olmalıdır. Varsayılan değer 0’dır | 5-17 bytes |
numeric(p,s) | Sabit hassasiyet ve ölçek numaraları. -10 ^ 38 + 1’den 10 ^ 38 -1’e kadar sayılara izin verir. P parametresi, saklanabilen maksimum toplam basamak sayısını gösterir (hem ondalık noktanın solunda hem de sağında). p 1’den 38’e bir değer olmalıdır. Varsayılan değer 18’dir. S parametresi ondalık noktanın sağında saklanan azami basamak sayısını belirtir. s, 0’dan p’ye kadar bir değer olmalıdır. Varsayılan değer 0’dır | 5-17 bytes |
smallmoney | Parasal veriler -214.748.3648’den 214.748.3647’ye | 4 bytes |
money | Parasal veriler -922.337.203.685.477.5808’den 922.337.203.685.477.5807’ye | 8 bytes |
float(n) | -1.79E + 308’den 1.79E + 308’e kadar olan kesirli hassas sayı verileri. N parametresi, alanın 4 veya 8 bayt tutup tutmayacağını gösterir. float (24) 4 baytlık bir alanı ve float (53) 8 baytlık bir alanı tutar. N’nin varsayılan değeri 53’tür. | 4 or 8 bytes |
real | -3.40E + 38’den 3.40E + 38’e kadar olan kayan hassas sayı verileri | 4 bytes |
[/accordion_content][accordion_content title=”SQL Tarih Veri Tipleri” icon=”” active=”active”]
Veri Tipi | Açıklama | Kapladığı Alan |
---|---|---|
datetime | 1 Ocak 1753’den 31 Aralık 9999’a kadar | 8 bytes |
datetime2 | 1 Ocak’tan 0001’e, 31 Aralık 9999’a kadar | 6-8 bytes |
smalldatetime | 1 Ocak 1900’dan 6 Haziran 2079’a kadar | 4 bytes |
date | Yalnızca bir tarih saklayın. 1 Ocak, 0001’den 31 Aralık 9999’a kadar | 3 bytes |
time | Sadece 100 nanosaniye hassasiyette bir zaman saklayın | 3-5 bytes |
datetimeoffset | Datetime2 ile saat diliminin ofset eklenmesiyle aynı | 8-10 bytes |
timestamp | Bir satır oluşturulduğunda veya değiştirildiğinde güncellenen benzersiz bir numara saklar. Zaman damgası değeri bir iç saati temel alır ve gerçek zamana karşılık gelmez. Her tabloda yalnızca bir zaman damgası değişkeni olabilir |
[/accordion_content][accordion_content title=”SQL Diğer Veri Tipleri” icon=”” active=”active”]
Veri Tipi | Açıklama |
---|---|
sql_variant | Metin, ntext ve zaman damgası haricinde, çeşitli veri türlerine ait 8.000 bayta kadar veri depolar. |
uniqueidentifier | Küresel olarak benzersiz bir tanımlayıcı (GUID) saklar. |
xml | XML formatlı verileri depolar. Maksimum 2GB |
cursor | Veritabanı işlemlerinde kullanılan imlecin referansını saklar |
table | Sonradan işleme için bir sonuç kümesi saklar. |
[/accordion_content] [/accordion]
Yukarıda yer alan veri tipleri biliyorum ki gözünüzü korkutuyor. Evet korkutabilir bu doğaldır ama asıl önemli olan bunları kullanım sırasına göre teker teker öğrenmektir. Biz bu eğitim serimizde ise ezberleme yolu üzerinden değil yavaş yavaş öğrenerek ve deneme yanılma yolu üzerinden akılda kalıcı bir şekilde öğrenme yolunu tercih edeceğiz. Sizlerde SQL Veri Tipleri nelerdir diye bir aştırma yaptığınızda şuanda öncelikle size lazım olan, işinizi görecek olan veri tiplerini öğrenerek başlamayı tercih edin.
Hepsini bir anda öğrenmek isterseniz bu öğrenme işi hepsini bir birine karıştırmanız ve veri tabanı kavramından çabuk sıkılmanıza neden olacaktır. Bu yüzden geleceğin yazılımcıları biz olacağımızdan dolayı emin adımlarla bu yolda yürümek en iyi seçenek olacaktır.