Şimdi SQL veri tabanı sisteminde bir veriyi nasıl tuttuğumuz çok önemli. bu nedenle bu tipleri ve farklarını biraz tablo ile inceleyeceğim.
Sayısal Tipler
Typenname | Wertebereich | UNSIGNED | Speicherplatz |
TINYINT | -128 bis 127 | 0 bis 255 | 1 Byte |
SMALLINT | -32768 bis 32767 | 0 bis 65535 | 2 Byte |
MEDIUMINT | -8388608 bis 8388607 | 0 bis 16777215 | 3 Byte |
INT | -2147483648 bis 2147483647 | 0 bis 4294967295 | 4 Byte |
BIGINT | -9223372036854775808 bis 9223372036854775807 | 0 bis 18446744073709550615 | 8 Byte |
FLOAT(M, D) | Abhängig von den Werten |
| 4 Byte |
DOUBLE(M, D) | Abhängig von den Werten |
| 8 Byte |
DECIMAL(M, D) | Abhängig von den Werten |
| Wert von M + 2 Bytes |
Float (4,3) demek toplam 4 basamak var bunlardan 3 tanesi virgülden sonra sıfırdan küçük olan basamaklardır. 5,334 gibi.
Bir değer içine uygun veri kaydetmek gerekir. Örneğin unsigned tinyint max 255 değeri alabilir. Bu durumda başlka bir yerden transfer yaparken eğer daha büyük bir değer kaydediyorsak en fazla 255 e kadar olan kısmı alınır gerisi atılır bu durumda veri değişir ve yanlış olur.
AUTO_INCREMENT, UNSIGNED, ve ZEROFILL özellikleri sadece sayısal veri tiplerinde kullanılabilir.
- Auto_increment özelliği ile bilinmesi gereken bazı noktalar vardır. Bu özellik ile sütun bir önceki integer değerden bir fazlası ile artarak devam eder/Ancak aradan bir değer silinirse o değer geri dönülüp yazılmaz. Yani sütun değeri 5 iken 3 olan sütun silinip yeni veri girildiğinde yeni değer 6 olur. Auto increment ten faydalanmak için insert komutu aşağıda ki gibi NULL,0 yada () şeklinde kullanılır.
CREATE TABLE Test (Auto_Test int NOT NULL AUTO_INCREMENT);
INSERT INTO Test (Auto_Test) values(NULL);
INSERT INTO TEST (Auto_Test) values(0);
INSERT INTO Test (Auto_Test) values();
- Auto_Increment in belirli bir değerden başlamasını isteyebiliriz bu durumda
CREATE TABLE Test(
Test_ID INT NOT NULL AUTO_INCREMENT
AUTO_INCREMENT = 9000,
Another_Column INT);
şeklinde değer atayabiliriz.
- Auto_Increment hangi veri tipi için verildi ise o tipin max değerine kadar çalışır. Sonrasında hata verir. Örneğin tinyint e Auto_increment verilirse ve 256ncı değer girilmeye çalışılırsa hata mesajı verecektir.
- Auto_Increment ile doulbe, float tipileri kullanılamaz.
Auto_Fill
- INT(8) ZEROFILL ile 23 girildiğinde, 00000023 gösterilir.
Karakter ve String veri tipleri
Typenname | Max. Größe | Speicherplatz |
CHAR(X) | 255 Byte | X Byte |
VARCHAR(X) | 255 Byte | X+1 Byte |
TINYTEXT | 255 Byte | X+1 Byte |
TINYBLOB | 255 Byte | X+2 Byte |
TEXT | 65535 Byte | X+2 Byte |
BLOB | 65535 Byte | X+2 Byte |
MEDIUMTEXT | 1.6 Mbyte | X+3 Byte |
MEDIUMBLOB | 1.6 Mbyte | X+3 Byte |
LONGTEXT | 4.2 Gbyte | X+4 Byte |
LONGBLOB | 4.2 Gbyte | X+4 Byte |
Bunlarda en önemlisi CHAR ve VARCHAR dır. CHAR sabit boyut kullanırken VARCHAR verilen karakter sayısı +1 olarak boyut tutar.
- CHAR çok daha hızlı işlenir. Ancak VARCHAR ile dşsk alanından tasarruf edilir.
- VARCHAR a 3 karakterlik veri girersek veri boyutu 3+1 ;= 4 byte olur.
TEXT ve BLOB (Binary Large Object) ile büyük boyutta veriler tutulur. Örneğin bir web sayfasında mevcut olan textleri tutmak gibi. Bir web sayfasında 2 satır varken bir diğerinde kitap yazılmış olabilir.
ENUM is sabit içerikte veri tutan bir yapıdır. Mümkün verilerden sadece birini tutar.
CREATE TABLE Test(
Return ENUM('Y','N') DEFAULT 'N',
Size ENUM('S','M','L','XL','XXL'),
Color ENUM('Black','Red','White')
)
Enum ya null yada listedeki bir değeri içermek zorundadır. Listede olmayan bir değer girildiğinde boşluk atar.
Enum ile tek değer seçilebilirken SET ile birden çok değer seçilebilir.
CREATE TABLE Test(
Advertiser SET('Web Page','Television','Newspaper');
);
şu değerler sütuna girilebilir.
"Web Page"
"Television"
"Newspaper"
" "
Görüldüğü gibi çeşitli veri tipleri vardır ve ne kullanılacağı planlamaya kalmıştır ancak hata yapılmış ise ALTER TABLE komutu ile değiştirilebilir.