SQL Dersleri 4 – Create Table – Tablo Oluşturma ve MySQL Veri Tipleri

MySQL veritabanı üzerinden SQL derslerimize devam ediyoruz. Önceki dersimizde veritabanı oluşturmuştuk. Bu dersimizde ise tablolar oluşturmayı ve tablolarda saklanabilen veri tiplerinden bahsedeceğiz.

Veritabanımıza tablo eklemeden önce seçmemiz gerekiyor.

Komutuyla veritabanımızı seçiyoruz. Aşağıdaki komutlarla ilk öğrenciler tablomuzu oluşturalım.

Şimdi kodlarımızı biraz inceleyelim. Öncelikle şunu bilmek lazım ki bir tablo, satır ve sütunlardan oluşur. Her sütunda çeşitli türlerde veri tipleri saklanmaktadır. Bizde tablomuzu oluştururken saklayacağımız veri tiplerini belirtmek durumundayız. Oluşturduğumuz tabloda Adı,Soyadı alanı string değerler içereceğinden VarChar, öğrenci numarası ve sınıfı gibi alanlar sayısal değer olduğu için integer, dağum tarihi alanını ise DateTime tipinden tanımladım. Ayrıca her tablodaki kayıtların benzersiz olması için Id sütununun Auto increment olarak tanımladım.

Şimdi bu değişik veri tipleri nelerdir? MySql’de kullanabileceğimiz veri tipleri hangileridir. Bunlara bir bakalım.

MySQL Veri Tipleri

MySQL’de 7 farklı grupta veri tipleri bulunmaktadır. Bunlar Tamsayı, Gerçel Sayı, Metin, İkili, Tarih Zaman, Uzaysal ve Diğer veri tipleridir. Bunlardan en fazla kullanılan veri tiplerini kısaca tanıyalım.

Tamsayı Veri Tipleri

TINYINT : -128 ile +127 arasında değerler içeren integer veri tipidir.
SMALLINT : –32.768 ile +32.767  arasında değerler içeren integer veri tipidir.
MEDIUMINT : –8.388.608 ile +8.388.607  arasında değerler içeren integer veri tipidir.
INT  veya INTEGER : –2.147.483.648 ile +2.147.483.647  arasında değerler içeren integer veri tipidir.
BIGINT : –9.223.372.036.854.775.808 ile +9.223.372.036.854.775.807 arasında değerler içeren integer veri tipidir.

Gerçel Sayı Veri Tipleri

FLOAT : Ondalıklı değerler tutulan veri tipidir. Tam sayı alanı ile birlikte ondalık alanın basamak sayısı en fazla 23 karakter olabilir. Bu nedenle küçük ondalıklı sayıları burada tutabiliriz.
DOUBLE : Tam sayı alanı ile birlikte ondalık alanın basamak sayısı en fazla 53 karakter olabilir. Büyük ondalıklı sayıları bu veri tipinde saklarız.
DECIMAL :Tam sayı alanı ile birlikte ondalık alanın basamak sayısı en fazla 53 karakter olabilir. Büyük ondalıklı sayıları bu veri tipinde saklarız.

Metin Veri Tipleri

CHAR : En fazla 255 karakterlik string tipinde alan tutar. Girilen değer boyuttan küçük ise de belirtilen boyutta yer kaplar. Sabit uzunluktaki değerler için tercih edilebilir.
VARCHAR : En fazla 255 karakterlik string tipinde alan tutar. Girilen değer kadar yer kaplar. Bu nedenle özel bir nedeni yoksa VarChar veri tipi her zaman tercih edilmeli.
TINYTEXT : En fazla 255 karakterlik string tipinde alan tutar.
TEXT : En fazla 65.535 karakterlik string tipinde alan tutar. (Yaklaşık 20 sayfalık A4 dokümanına karşılık geliyor.)
MEDIUMTEXT : En fazla 16.777.215 karakterlik string tipinde alan tutar. (Yaklaşık 4900 sayfalık A4 dokümanına karşılık geliyor.)
LONGTEXT En fazla 4.294.967.295 karakterlik string tipinde alan tutar. (Yaklaşık 1.255.000 sayfalık A4 dokümanına karşılık geliyor.)

İkilik Veri Tipleri

BINARY : En fazla 8.000 karakter ikili veri depolar. Girilen değer boyuttan küçük ise de belirtilen boyutta yer kaplar.
VARBINARY : En fazla 8.000 karakter ikili veri depolar. Girilen değer kadar yer kaplar.

Zamansal Veri Tipleri

DATE : “1000-01-01″ ile”9999-12-31” arası değerleri kabul eder. MySQL’de tarih formatı YYYY-AA-GG biçimindedir.
TIME : “-838:59:59” ile “838:59:59” arasındadır. (Pozitif değerde 35 gün, pozitif ve negatif yönde 70 gün) MySQL’de saat formatı HH:MM:SS  (Saat-Dakika-Saniye) biçimindedir.
YEAR : Yıl bilgisi 2 veya 4 basamaklı olarak saklanabilir. İki basamaklı verilerde 70 ile 69 (1970 ile 2069 yılları) değeri depolanır. Dört basamaklı verilerde 1901 ile 2155 arası değerler depolanır.
DATETIME : Date ve Time tiplerinin birleştirilmiş hali gibidir. ‘YYYY-AA-GG HH:MM:SS’ şeklinde veri depolar. “1000-01-01 00:00:00” ile “9999-12-31 23:59:59” arasındaki tarihleri depolar.

Tablo Oluşturma

Yukarıdaki tablo oluşturma kodumuzu incelemek üzere tekrar yazalım.

Create Table metoduyla tablo oluşturuyoruz. Tablo oluştururken sütunları parametre olarak atıyoruz. Yukarıda veri tiplerinden bahsetmiştik. Şimdi bir kaç tanımdan daha bahsederek konuyu tamamlayalım.

İlk sütunumuz Id isimli, int tipinde, null değer içermeyen, Auto increment bir alan. Auto increment özelliği bu sütuna otomatik artış veren tanımdır. Bu artışın benzersiz olması için ise Primary key tanımıyla işaretliyoruz. Artık tablomuzda Id alanında benzersiz kayıtlar üretilecektir.

Collate tanımı ile tablomuzun dil desteğini tanımlıyoruz.
Engine tanımı ile veri depolama moturunu seçiyoruz. MySQL’da iki çeşit veri depolama motoru mevcuttur. InnoDB ve MyISAM. MySQL varsayılan veri depolama motoru olarak MySQL 5.5‘den itibaren InnoDB kullanmaktadır.
InnoDB ve MyISAM arasındaki farklılıklar şöyle.

  • InnoDB veri tutarlılığını gözetir, MyISAM ise gözetmez.
  • InnoDB, kayıt seviyesinde kilitleme yapılabilir, MyISAM ile ancak tablo seviyesinde kilitleme yapılabilir.
  • InnoDB’nin otomatik kendini onarma yeteneği vardır. MyISAM’ın ise bu tür bir yeteneği bulunmuyor.

Bizde tablolarımızı oluştururken InnoDB  veri depolama moturunu tercih ediyoruz. Auto Increment tanımı ile primary key alanımızın (Id alanının) hangi değerden başlayacağını belirtiriz.

Şimdi diğer tablolarımızı ekleyelim.

Derslerin tutulacağı tablo.

Öğretmen bilgilerinin tutulacağı tablo. Bu tablo dersler tablosuyla ilişkilidir.

Son olarak notlar tablosunu ekliyoruz. Bu tabloda hem derslerle hemde öğrenciler tablosuyla ilişkilidir.

Tablolarımızın içlerini xveri.com yardımıyla doldurdum. İndirmek için tıklayınız

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir