Veri tabanları artık o kadar çok büyük boyutlara ulaştı ki içerisinden bir şeyler aramak neredeyse imkansız hale geldi. Bu nedenle verileri tiplere ayırmak hem veri tabanı alanımızı doğru ve mantıklı kullanmamıza olanak sağlayacaktır. Örneğin; veri tabanı alanları VARCHAR olarak tanımlar istediğimiz kadar istediğimiz tip de değer girebiliriz. Ancak bu bize fayda dan çok zarar sağlamaya başlayacaktır. Ancak veri filtreleme işlemine geldiğimizde bu seçimimiz bizim için büyük bir fiyasko olacaktır. Tarih aralığını karakter olarak girdiğim bir alanda yapamayacağım. Yada yaşı 20 den büyük dediğim zaman içindeki karakter tipi VARCHAR olduğu için bana mantıklı sonuçlar çıkmayacaktır.
Her kolonun bir tipi vardır. Standart veri tipleri aşağıda verilmiştir.
Veri Tipi | Açıklaması | İzin verilen değerler | Örnek |
VARCHAR(n) | Uzunluğu en fazla n karakter olabilen bir metin | [0-9a-zA-Z]+{n} |
“örnek” |
CHAR(n) | Uzunluğu net olarak n karaketer olabilen bir metin | [0-9a-zA-Z]{n} |
“örnek” |
SMALLINT | 16 bitlik pozitif veya negatif olabilen sayı | \-?[0-9]+ |
584 |
INTEGER | 32 bitlik pozitif veya negatif olabilen sayı | \-?[0-9]+ |
-8748 |
FLOAT | Ondalıklı rakam | \-?[0-9]+[\.[0-9]+]? |
48.96 |
NUMBER(n,[d]) | n haneli bir sayı, virgülden sonra d hane (eğer belirtildiyse) | \-?[0-9]+[\.[0-9]+]? |
484.65 |
DATE | Tarih (YYYY-AA-GG) | [0-9][0-9][0-9][0-9]\-[0-1][0-9]\-[0-3][0-9] |
2009-03-24 |
TIME | Saat | [0-2][0-9]\:[0-5][0-9]\:[0-5][0-9] |
11:24:56 |
TIMESTAMP | 01.01.1970’den bu yana geçen saniyeyi veren Unix ZamanPulu (Hem tarihi hem saati verir) | [0-9]+ |
18648689595962 |
BLOB | Binary (ikili koddaki veriler, örneğin resim dosyaları vs.) | Herşey |
Tanımlanmış bir boolean (doğru/yanlış) veri tipi yoktur, bunun yerine sayı tipleri kullanılır.