MySQL de Veri Tipleri
Hepinize merhaba dostlarım :). Önceki yazımda veri tabanının ne olduğundan, ne amaçla kullandığımızdan ve tabloların nasıl oluşturulacağından bahsetmiştim. Okumayan dostlarım için buraya link bırakıyorum
https://blog.mfsoftware.net/yazi/veri-tabani-ve-tablo-nedir
bu yazımda ise dostlarım MySQL de veri tabanı ve tablo oluşturduktan sonra karşımıza çıkan ve ileriki zamanlarda da bizi selamlayan veri tiplerinden bahsedeceğim :). Ama gelin öncelikle veri tipi nedir bunu mantıksal bir şekilde açıklayalım dostlarım
Veri Tipi Nedir ?
Dostlarım veri tipi aslında bizim sql e kaydedeceğimiz verinin tipini belirler. Bizim verimiz bir metinsel ifade olabilir, bir sayısal değer olabilir veya bir tarihsel değer olabilir. İşte bu verileri her zaman sabit bir veriye koyamayız :). Örnek vermek gerekirse her yere metinsel ifade koyduk ama yeri geldi matematiksel işlem yaptıracağız. Mantıksal bir düşünce yapacak olursak da metinsel ifadelerde matematiksel işlemler de yapılmaz. İşte dostlarım bu ve bunun gibi işlemlerde bizim imdadımıza veri tipleri yetişiyor :).
Veri tiplerine bakacak olursak dostlarım bunlar 3 e ayrılıyor ve bunların her biri de kendi içinde bazı gruplara ayrılıyor. Gelin hep beraber inceleyelim
- Metinsel ifadelerde kullanılan veri tipleri
- VARCHAR
- TEXT
- LONGTEXT
- Sayısal ifadelerde kullanılan veri tipleri
- INT
- FLOAT
- DOUBLE
- TINYINT
- Zaman ifadelerinde kullanılan veri tipleri
- TIMESTAMP
- DATE
Şekildeki gibi dostlarım yoğun olarak kullanılan veri tipleri bunlardır. Öğrenmek için sabırsızlandığınızı seziyorum dostlarım :). Sözü daha fazla uzatmadan gelin bu veri tiplerine hangi zamanlarda kullanacağımıza kısaca değinelim dostlarım :)
1.1-) Varchar
Dostlarım varchar veri tipi çok büyük bir alan gerektirmeyen durumlarda örnek vermek gerekirse ad,soyad,email,gsm vs gibi küçük çaplı verilerin tutulması gerektiği zamanlarda kullanabiliriz. Amacımız zaten programlamacı olduğumuz için yeteri kadar bellek kullanmak ve sitemizin açılış hızını hızlandırmak :).
Dostlarım varchar veri tipine kullanıyoruz ama bu kaç karaktere kadar işimize yarar diye soruyorsanız helal olsun size çok güzel bir soru diyorum ve varchar veri tipinin kapsadığı alan 0-255 karaktere kadar işimizi görür diyerek varchar konusunu burada noktalıyorum :).
1.2-) Text
Dostlarım text veri tipi de bir nevi varchar a benzer ama uzun bir yazı kaydedecek isek örnek vermek gerekirse sitemize iletişim sayfası yazdık. Gelen ziyaretçi bizimle iletişime geçmek istediğinde eğer varchar kullanırsak o mesaj alanı için ve aynı zamanda da ziyaretçi çok uzun bir mesaj gönderirse (255 karakteri geçen) mesajı gönderdiği zaman karşısına bir hata alır. Hatanın Türkçe çevirisinde de mesaj gönderen kişiye şu hata çıkar: "Dostum sen mesaj gönderiyorsun tamam ama siyeti oluşturan programcı bu mesajın tipine varchar demiş. Senin yazdığın mesaj da bu karakter sınırını aşıyor. Mümkünse kısa bir yazı yazmanı öneririm" diye ekranına mesaj çıkıyor. Tabi bu hata mesajının ziyaretçiye çıkmasını istemediğimiz için ve iletişim mailinin mantıken 255 karakterden fazla olacağı için text kullanmamızda fayda var dostlarım.
Text veri tipini kullandık diyelim iyi hoş da bu kaç karaktere kadar destekler diye merak ediyorsunuz artık anlıyorum dostlarım. Bu veri tipi de 65000-66000 karaktere kadar desteklendiğini belirterek text veri tipini burada noktalıyorum dostlarım :).
1.3-) Longtext
Önceki yazımda nasıl text varchar a benziyorsa bu veri tipi de hem varchar a hem de text veri tipine benziyor dostlarım. Aslında anlamışsınızdır hepsinde tek fark destekledikleri alan dostlarım. Ama sizin aklınızdaki soru şu
Varchar ve Text veri tipini hadi kullanım yerlerini anladık. Longtext nerede kullanılıyor ?
Dostlarım gelin bunun da örneğini vereyim. Bir blog sitesi açtınız yazınızı yazıyorsunuz ve yazınız kapsamlı bir yazı olsun diyelim. Yazdıkça yazdınız uzadı ve text konusunda dediğim 65-66 bin karakteri geçti. O zaman ne yapacaksınız ? Tabii ki de iyi bir programcı kod yazarken bunun analizini yapar ve sql veri tabanında yazılar tablosunda içerik kısmını ona göre ayarlar :).
Dostlarım aklınıza takılan soruyu artık sonlara yaklaşırken tahmin etmek kolay :). Longtext veri tipinin desteklediği karakter sayısı: 4.2 milyar karakter
2.1-) Int
Artık metinsel veri tiplerini bitirdiğimize göre dostlarım sayısal veri tiplerine yavaştan yavaştan giriş yapalım :). Dostlarım int veri tipinin amacı bizim veri tabanında belirttiğimiz alanda en başta dediğim gibi matematiksel işlemler yapmamızda matematiksel işlemler yapmamıza yarayan, o alana tam sayı yazmamızı sağlayan veri tipidir. Örnek vermek gerekirse blog sayfamızda yazıların kaç kere okunduğunu göstermek istediğimiz durumlarda bu veri tipini kullanırız dostlarım.
Int veri tipinin kapsadığı değer aralıkları ise dostlarım: + - 2 milyar aralığındadır
2.2-) Float
Yeri geldi artık tam sayılarla değil finansal işlemlerle çalışmaya borsa yazılımları ile ilgili script yazmaya başladık diyelim. Paranın lira değerini tutuyoruz ama kuruş değerlerini tutmuyoruz. Bu finansal açıdan büyük bir sorun dostlarım. Bu durumlarda ise imdadımıza float veri tipii koşuyor dostlarım. Virgülden sonra 2 basamak alıyor ve işlerimizin sorunsuz şekilde yürümesini sağlıyor :).
Float veri tipinin alacağı değer aralıkları ise dostlarım: + - 3.4 milyar aralığındadır.
2.3-) Double
Artık dostlarım inovasyonlarınızı çok ilerlettiniz kimya konularında yazılım yapıyorsunuz diyelim. Virgülden sonra 2 basamak sizleri yanlış bir hesaba sürükleyeceğini göze alarak bir veri tipi kullanmak istiyorsunuz diyelim. Mesela angstrom sayısı ile işlem yapacaksınız bu sayının da virgülden sonra birden fazla basamağı var dostlarım bilirsiniz :). Bu gibi durumlarda ise yardımımıza koşan veri tipi double dır :). Artık bu veri tipini kullanarak rahat rahat kimyasal hesaplamalar yapabilirsiniz dostlarım :).
Double veri tipinin alacağı değer aralıkları ise dostlarım: + - 5 milyar aralığındadır
2.4-) Tinyint
Dostlarım küçük sayılar tutmak istediğimiz zamanlarda (sadece 0,1 gibi) int yerine tinyint kullanmamız bizim için çok faydalı ve alandan tasarruf amaçlı olacaktır. Bu veri tipini de kullanacağımız alanlara örnek vermek gerekirse dostlarım blog siteniz olsun ve yorum gelsin diyelim. Yorumları hemen okumak yerine onların aktiflik değerini 0 yapıp daha sonra bizim akkktiflik verdiğimizde bunların 1 olması gerektiği durumlarda bunu ayarlayabiliriz :). Yani açıkça anlatmak gerekirse onay sistemlerinde kullanmamız avantajlı bir yapıdır dostlarım :)
Tinyint veri tipinin alacağı değer aralıkları ise dostlarım: -128 +127 aralığındadır
3.1-) Timestamp
Metinsel ve sayısal veri tipleri de bitti. Şimdi sırada zamansal veri tiplerine giriş yapalım :). Dostlarım timestamp veri tipi biz o alanı doldur deyince (genelde current_timestamp özelliği seçilir veri tabanından) o anki sistemin tarih ve saatini alır. Bu nerelerde işimize yarar diye soruyorsanız dostlarım örneğin bir üyelik paneli yazdık ve ziyaretçinin birisi sistemimize üye oldu. Üye olur olmaz (biz current_timestamp özelliğini aktif ettiğimiz için) sistemimize ne zaman üy olduğunun tarih ve saat bilgisini verecektir dostlarım.
Tarih Saat Bilgisini ise bizim tarih biçimimiz gibi (Örneğin: 17.02.2021 17:58:24) kaydetmek yerine 2021-02-17 17:58:24 olarak kayıt edecektir :).
Timestamp veri tipinin alacağı değer aralıklarını soruyorsanız dostlarım bir zaman damgası olduğu için alacağı + - aralık yoktur :)
3.2-) Date
Bu veri tipi ise dostlarım timestamp a benzer lakin current_timestamp gibi özelliğe ihtiyaç duymaz, saatin kaç olduğundan duyarsızdır sadece tarihi alır :).
Tarihi de bizim tarih biçimimiz gibi (Örneğin: 17.02.2021) değil 2021-02-17 olarak sisteme kaydeder dostlarım :).
Date veri tipinin alacağı aralık ise dostlarım: 1000-01-01 ile 9999-12-31 arasındadır
Evet dostlarım elimden geldiğince MySQL üzerindeki veri tiplerini anlatmaya çalıştım. Umarım hepiniz için faydalı olur. Başlarda önceki yazılarımda da dediğim gibi karmaşık gelebilir. İstikrarlı ve azimli olduğunuz sürece, bol pratik yaptığınız takdirde başarıyı yakalayacağınızı söyleyebilirim dostlarım :)
Hayallerinizi gerçekleştirmeniz ve güzel yerlere gelmeniz dileklerimle... İyi çalışmalar dilerim :)
Yazar Hakkında
Kendi Halinde Bir Backend Developer