29/11/2019

SQL-2 SQL veri tipleri

Ş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.

Leave a Reply