Sütunlarda tutulacak veri türünü belirtmek için kullanılır. Örneğin tamsayı türünden değer tutacaksak, veri türünü INT olarak seçeriz, ya da metin türünden değer tutacak isek, veri türünü VARCHAR olarak seçebiliriz. Bu dersimizde en çok kullanılan veri türlerinden bahsedeceğiz.
Sayıdal değerleri hafızada tutmaya yarayan veri türleridir. Nümerik veri türü olarak da adlşandırılırlar. 3 temel nümerik veri türü vardır. Bunlar; tamsayı, ondalıklı sayı ve binary sayı veri türleridir. Şimdi bunları teker teker ele alalım.
INT veri türü integer yani tamsayı türünden verileri tutmak için kullanılır. 32 bit genişliğinde tamsayı barındırabilir. Alabileceği işaretli değer aralığı -2,147,483,647 ile +2,147,483,647 arasında sınırlıdır. İşaretsiz ise 0 ile 4,294,967,295 arasında değer alabilir. Bu veritürüne sahip sütundan çekilen değer, numerik değer olarak algılanır. Bu verinin tahmini uzunluğunu biliniyorsa uzunluk değeri atanabilir.
Bu veri türü 1 byte değerindeki verileri tutmaya yarar. Tutabileceği veri aralığı işaretli -128’den 127’ye kadardır. İşaretsiz ise 0 – 256 arasında tam sayı değerlerini tutabilir.
İki byte yani 16 bit değerindeki verileri turmak için kullanılır. Tutabileceği veri aralığı işaretli -32,768 ile 32,767 arasındadır. İşaretsiz ise 0 ile 65,535 arasındaki sayıları hafızada tutabilmektedir.
Üç byte yani 24 bit değerindeki tamsayı türü verileri hafızada tutmaya yarar. Hafızada işaretli 8,388,608 ile 8,388,607 sayıları arasındaki tam sayıları ya da işaretsiz 0 ile 16,777,215 sayıları arasındaki tam sayıları tutabilir.
BIGINT veri türü ise hafızada 8 byte yani 64 bit değerindeki tam sayı verilerini tutabilir.
Burada dikkat edeceğimiz bir husus var. Türkçe’de virgül ondalıklı basamak ayracı, nokta ise binlik ayracı olarak kullanılırken, İngilizce’de tam tersi, nokta ondalıklı basamak ayracı olarak, virgül ise binlik ayracı olarak kullanılmaktadır. Veritabanına kayıt yaparken de bu husus göz önünde bulundurulup, İngilizce standardına göre kullanılmalıdır.
Decimal veri türü hafızada ondaliklı M,D türünden veri tutmak için kullanılır. M değeri virgülden önceki ve sonraki toplam basamak sayısını verir, D değeri ise virgülden sonraki basamak sayısını verir. Örneğin 102.35 sayısını hafızada tutmak için, DECIMAL(5,2) şeklinde veri türü tanımlamamız gerekmektedir. Buradaki 5 değeri virgülsüz toplam basamak değerini, 2 değeri ise virgülden sonraki gösterilecek basamak değerini temsil etmektedir.
Float veri türü yine ondalıklı sayıları depolayabileceğimiz bir veri türüdür. Bu veri türüne sahip sütun tanımlanırken, Decimal türünde olduğu gibi, sayının virgülsüz basamak sayısının tamı ve virgülden sonra kullanılacak basamk sayısı belirtilerek tanımlanır. Örneğin 65.325 sayısını saklayacağımız float türü bir sütun tanımlarken, FLOAT(5,3) olarak tanımlarız. Buradaki 5 rakamı, sayının noktasız olarak basamak uzunluğu, 3 rakamı ise noktadan sonraki hane sayısını ifade eder. Float veri türünde eğer ondalıklı hane daha uzun ise sayıyı yuvarlama gibi bir problemi vardır. FLOAT(5,2) olarak tanımladığımız bir sütunda 525.199 sayısını saklamak istersek, MySQL otomatik olarak bu sayıyı 525.20 olarak saklayacaktır.
Yine DOUBLE türü yine ondalıklı sayıları temsil etmek için kullanılır. 8 byte değerinde veri alabilir. FLOAT türü ile aynı özellikleri taşır.
Char veri türü maksimum 255 karakter veri tutabilir. Bu veri türünde genelde sabit uzunluktaki veriler tutulur. Örneğin 5 karakter uzunluğunda veri tutulacak ise, veritabanına 5 karakter veri kaydedilmelidir. 5 karakter uzunluğundaki sütuna 3 karakter veri kaydedilir ise, veritabanında yine 5 karakter değerinde alan açılır ve kalan karakter değerleri boşluklar ile tamamlanır.
Bu veri türü karakter türünden veri saklamak için kullanılmaktadır. Maksimum veri tutma boyutu 65.535 byte’tır. Eğer saklanacak verinin yaklaşık olarak karakter uzunluğu biliniyor ise, uzunluk değeri atanabilir. Örneğin VARCHAR veri türüne sahip bir sütun altında mail adresi saklanacak ise, bir mail adresinin tahmini uzunluğu 50 karakter olabilir. Bu durumda VARCHAR(50) değeri verilebilir. Eğer saklanacak verinin karakter uzunluğu bilinmiyor ise, VARCHAR(MAX) olarak değer verilebilir.
Bu veri türünün bir özelliği ise, hafızada yalnızca içinde bulundurduğu veri kadar alan kaplamasıdır. Örneğin VARCHAR(6) şeklinde tanımlanan sütunda, 6 yerine 3 karakterlik veri saklarsak, veritabanında bu veri 4 karakterlik alan kaplar. İçerisine yerleştirilen veriden her zaman 1 byte fazla alan kaplamaktadır.
CHAR ve VARCHAR veri türü arasındaki en bariz fark aşağıdaki tabloda verimiştir;
Yukarıdaki tabloda görüldüğü üzere VARCHAR veri türü, veritabanında her zaman 1 byte fazladan alan kaplar.
TEXT veri türü özelliğine sahip bir sütunda, uzunluğu VARCHAR(MAX) kadar olan yani 65535 byte veri tutmak için kullanılır. Bu veri türü eski sürümleri desteklemek için kullanılır. Bu sebeple, TEXT yerine VARCHAR(MAX) kullanılması önerilir.
Tarihsel türdeki verileri saklamak için uygundur. Yalnızca tarih verisi tutar, saat, dakika ve saniye içermez. Alabileceği tarih aralığı 1000.01.01 ile 9999.12.31 (YYYY.MM.DD) aralığındadır.
Tarih ve Saat bilgilerinin aynı anda tutulacağı durumlarda kullanılır. Alabileceği maksimum aralık 1000.01.01 00:00:00 ile 9999.12.31 23:59:59 (YYYY.MM.DD hh:mm.ss) aralığındadır.
32 bit değerinde bir zaman damgasını belirten veri türüdür. Her bir bit değeri 1 saniyeye denk gelmektedir. Alabileceği maksimum tarih aralığı 1970-01-01 00:00:01 ile 2038-01-19 03:14:07 arasındadır. 32 bitlik bir çok işletim sisteminde bu veri türünün 2038 yılında sorun oluşturacağı beklenmektedir. Nedeni ise görüldüğü üzere 2038-01-19 03:14:07 tarihinde zaman damgasının, 32 bitin tamamını doldurmasıdır. 64 bitlik sistemlerde ise bunun bir sorun teşkil etmeyeceği belirtilmektedir.
Yalnızca saat-dakika-saniye cinsinden verileri kaydetmek için kullanılmaktadır. Bu veri türünün amacı gerçek saati değil, toplam saati barındırabilmesidir. Örneğin bir cihazın bir haftada toplam kaç saat çalıştığını tutabilmektedir. Alabileceği maksimum zaman aralığı -838:59:59 ile 838:59:59 (hh:mm:ss) aralığındadır. Yine bu veri türüne kayıt yapılırken en sağdan başlayarak kayıt yapılır. Eğer kayıt yapılacak süre 11 saat 22 dakika ise bu veri 11:22:00 olarak girilmelidir. Eğer 11:22 olarak girilirse MySQL bu değeri 11 dakika 22 saniye olarak algılayacaktır.
64 bit uzunluğunda binary türü verileri saklamak için kullanılır. Bilindiği üzere binary veriler 1 ve 0 değerlerinden oluşan 2 tabanlı sayısal verilerdir.
Bu veri türü TINYINT(1) veri türüne eşdeğerdir. 1 bitlik değer alabilir. 0 ve 1 değerleri alabilmesi beklenir ama daha farklı değerler kaydedilebilir. Ancak bu veri türüne sahip alanlarda 0 değeri false (yanlış) olarak algılanırken diğer değerler true (doğru) olarak algılanır.
MySQL de bahsedeceğimiz veri türleri şimdilik bu kadar. Ancak diğer desteklenen türler için derslerimiz arasında kullandıkça açıklamalarını yapacağız.