MySQL Veri Tipleri ve Sınırlamaları

MySQL Veri Tipleri ve Sınırlamaları

MySQL veritabanında kullanılan temel ve diğer veri tipleri ve sınırlamaları hakkında bilgi sahibi olmak, verilerin yanıltıcı veya hatalı olmasını engelleyerek veritabanı yönetiminin etkinliğini artırır Bu makalede, temel veri tipleri olan INTEGER, FLOAT, DOUBLE, VARCHAR ve DATE'den diğer veri tiplerine ve bunların sınırlamalarına kadar tüm detaylar ele alınacaktır ENUM, SET, TEXT ve BLOB gibi diğer veri tipleri ve özellikleri de tartışılacaktır Ayrıca ENUM veri tipi, belirli bir veri kümesinde seçenekler sağlayarak kullanıcıya kısıtlama ve esneklik sunan bir MySQL veri tipidir

MySQL Veri Tipleri ve Sınırlamaları

MySQL veritabanı yönetim sistemi, verilerin doğru şekilde depolanması ve işlenmesinde önemli bir rol oynar. Bu nedenle, veri tipleri ve sınırlamaları hakkında geniş bir bilgi sahibi olmak, verilerin yanıltıcı veya hatalı olmasını engelleyerek veritabanı yönetiminin etkinliğini artırır.

Bu makale, temel MySQL veri tiplerinden diğer veri tiplerine ve bunların sınırlamalarına kadar tüm detayları ele almaktadır. Ek olarak, JSON, XML ve GIS veri tiplerinin özellikleri de tartışılacaktır.

Ayrıca bu makale, veri tipleri ve sınırlamalarının nasıl kullanılacağını sorgulama ve tanımlama esnasında aktif olarak göstererek, tüm bilgi ve becerilerin uygulanabilir ve kullanışlı hale gelmesini sağlayacaktır.


Temel Veri Tipleri

MySQL veritabanında kullanılan temel veri tipleri, verilerin saklanması ve sorgulanması için özellikle belirlenmiştir. Bu veri tipleri, sayılar, metinler ve tarihler gibi verileri saklamak için kullanılır. Üstelik her bir veri tipi, belirli sınırlamalara sahiptir. İşte MySQL'de kullanılan temel veri tipleri:

Veri Tipi Açıklama
INTEGER Tam sayı değerleri içermek için kullanılır.
FLOAT Çok küçük ve büyük ondalıklı sayıları saklamak için kullanılır.
DOUBLE FLOAT veri tipine benzer şekilde ondalıklı sayıları saklamak için kullanılır. Ancak daha fazla sayısal hassasiyete sahiptir.
VARCHAR En popüler metin veri tipidir. Metinlerin saklanması için kullanılır.
DATE Tarih değerlerini saklamak için kullanılır.

INTEGER veri tipi, yalnızca tam sayı değerleri saklar ve en küçük değeri -2147483648, en büyük değeri ise 2147483647'dir. FLOAT ve DOUBLE veri tipleri, ondalıklı sayıları saklamak için kullanılır. FLOAT veri tipinin yer tutarı daha az fakat hassasiyeti daha azdır. DOUBLE veri tipinin yer tutarı daha fazla ancak hassasiyeti de daha yüksektir. VARCHAR veri tipi, metinleri saklamak için kullanılır ve UTF-8 karakter setinde 65535 karaktere kadar depolama kapasitesine sahiptir. DATE veri tipi, "YYYY-MM-DD" biçiminde tarih değerleri saklar ve 1000-01-01'den 9999-12-31'e kadar olan tarihleri destekler.


Diğer Veri Tipleri

MySQL veri tabanında BOOLEAN, ENUM, SET, TEXT ve BLOB gibi birçok diğer veri tipi bulunmaktadır. BOOLEAN, yalnızca doğru ya da yanlış sonuçlar döndüren bir şart ifadesi içermektedir. ENUM ise içinde belirli değerlerin bulunduğu bir listeye benzer yapıdadır.

SET, ENUM'un birçok seçeneği olan kardeşi olarak tanımlanabilir. SET veri tipi, birkaç seçenek arasından birden fazla seçim yapılmasına izin verir. TEXT ve BLOB veri tipleri, karakter dizisi ya da büyük dosyaların depolanması için kullanılır. TEXT, uzun karakter dizilerini depolarken BLOB ise özellikle resim, video ya da ses dosyaları gibi daha büyük boyutlu binary verilerin gerektiği durumlarda kullanılır.

Veri Tipi Kullanım Alanı
BOOLEAN Doğru/Yanlış sonuçlarını depolamak için
ENUM Belirli değerlerin bulunduğu bir liste için
SET Birkaç seçenek arasından birden fazla seçim yapılması gereken durumlar için
TEXT Uzun karakter dizilerini depolama için
BLOB Büyük boyutlu binary verilerin depolanması için

Her bir veri tipi, veri tabanı uygulamalarının belirli ihtiyaçlarını karşılamak için kullanılır. Text ve BLOB veri tipleri gibi büyük boyutlu veri tipleri, yüksek miktarda veri gerektiren uygulamalar için idealdir. ENUM ve SET veri tipleri ise birkaç opsiyon arasında seçim yapılması gereken uygulamalar için daha uygundur. Veri tabanı terminolojisi ve farklı veri tipleri hakkında bilgi sahibi olmak, veri tabanı uygulamalarınızı daha verimli hale getirmenize yardımcı olabilir.


ENUM Veri Tipi

ENUM veri tipi, belirli bir veri kümesinde seçenekler sağlayarak kullanıcıya kısıtlama ve esneklik sunan bir MySQL veri tipidir. ENUM tipindeki veriler, bir kolonda sadece belirtilen değerlerin kullanılmasına izin verir ve bu değerler açıkça tanımlanır.

ENUM'ın özellikleri şunlardır:

  • ENUM tipinin boyutu, belirlenen seçenek sayısına bağlıdır; daha az seçenek, daha küçük boyutta ENUM tipi sağlar ve daha fazla seçenek, daha büyük boyutta ENUM tipi sağlar.
  • Bir ENUM tipi, sadece belirtilen değerlerden birinin seçilmesine izin verir. Örneğin, haftanın günlerini bir ENUM tipi kullanarak tanımlayabilirsiniz: ('Pazartesi', 'Salı', 'Çarşamba', 'Perşembe', 'Cuma', 'Cumartesi', 'Pazar').
  • Bir ENUM tipi tanımlandıktan sonra, belirtilen seçeneklerden başka bir değer kullanılamaz. Bu, belirli bir veri kümesine sıkı sıkıya bağlı olduğu anlamına gelir.

ENUM tipi, özellikle sınırlı ve önceden belirlenmiş seçeneklerin mevcut olduğu durumlarda oldukça kullanışlıdır. Örneğin, "cinsiyet" adlı bir sütunu ENUM tipi olarak tanımlayabilir ve sadece "erkek" veya "kadın" değerlerini kabul edebilirsiniz.

Aşağıdaki örnek, "cinsiyet" sütununu ENUM tipi olarak tanımlar:

CREATE TABLE Kullanicilar ( KullaniciID INT PRIMARY KEY,
Ad CHAR(50), Cinsiyet ENUM('Erkek', 'Kadın')
);

Yukarıdaki tabloda "Cinsiyet" sütunu, ENUM tipinde tanımlanmıştır ve belirtilen sadece iki seçenek (Erkek veya Kadın) kabul eder.

ENUM tipi, veri kümeleri arasındaki farklılıkları analiz etmek ve belirtilen seçeneklerin dışındaki yanlış verileri önlemek için de oldukça kullanışlıdır. Bu özellikle veri doğruluğunun önemli olduğu durumlarda önemlidir.


SET Veri Tipi

SET veri tipi, birkaç farklı seçeneğin bir arada tutulabileceği bir tiptir. Bu nedenle, bir sütunda birden fazla seçenek olması gerektiğinde kullanışlıdır. SET veri tipi, ENUM veri tipine benzer görünür, ancak ENUM'un yalnızca bir seçenek içerdiği bir veri tipidir, SET veri tipi ise birden çok seçeneği barındırabilir.

SET veri tipi için belirlenebilecek en fazla seçenek sayısı, sırasıyla MySQL sürümlerine göre farklılık göstermektedir. Örneğin, MySQL 5.6'da en fazla 64 seçenek belirlenebilirken, MySQL 8.0'da bu sayı 8192'ye kadar çıkarılabilmektedir.

Bir SET sütunu tanımlamak için, sütun tipi SET olarak belirtilir ve bir SET listesi belirtilir. Örneğin, bir madde için renk seçenekleri tanımlamak istiyorsak, sorgu şu şekilde yazılabilir:
CREATE TABLE madde (
id INT NOT NULL AUTO_INCREMENT,
isim VARCHAR(60) NOT NULL,
renk SET('kırmızı', 'mavi', 'yeşil', 'sarı') NOT NULL,
PRIMARY KEY (id)
);

Bir SET değerine sorgu yazarken, seçenekleri virgülle ayrılmış bir şekilde kullanabilirsiniz. Örneğin, bir sütunda kırmızı ve yeşil olanlar için bir sorgu yazmak isterseniz, sorgu aşağıdaki gibi olur:
SELECT * FROM madde WHERE renk IN ('kırmızı','yeşil');

SET veri tipi, ENUM veri tipi ile benzer olduğu için, erişilebilirlik ve performans açısından aynı kuralları paylaşır. Ancak, bir SET sütunu, bir ENUM sütununa göre daha fazla bellek harcar. Bu nedenle, sadece birkaç seçenek için SET veri tipi kullanmanız önerilir.


TEXT ve BLOB Veri Tipleri

MySQL veritabanlarında kullanılan TEXT ve BLOB veri tipleri, metin ve veri depolama alanı gerektiren verileri tutmak için kullanılır. TEXT veri tipi, karakter dizisi (string) verilerini, BLOB veri tipi ise ikili (binary) verileri depolamak için kullanılır. TEXT veri tipinin maksimum boyutu 65,535 bayt, BLOB veri tipinin maksimum boyutu ise 65,535 bayttan küçük ancak MEDIUMBLOB ve LONGBLOB veri tiplerinde sırasıyla 16 MB ve 4 GB olarak arttırılabilir.

TEXT ve BLOB veri tiplerinin select sorgularında kullanılması, diğer veri tiplerine göre biraz daha farklıdır. Bu veri tiplerine yapılan select sorgularında dosya boyutu gibi büyük verilerin toplam alanı gerektirir. Bu nedenle bu veri tiplerinin kullanımından önce boyutu kontrol etmek ve gerekirse boyut sınırlaması yapmak önemlidir. Ayrıca TEXT ve BLOB veri tiplerinin tarayıcılarda görüntülenebilir olması için bazı format dönüşümleri de yapılmalıdır. Örneğin, bir resim BLOB veri tipiyle depolanıyorsa, bu veriyi yinelemeli (recursive) bir yapıda dönüştürerek resim formatına uygun silsileyi meydana getirmek gerekmektedir.

TEXT ve BLOB veri tipleri, özellikle web uygulamalarında kullanımları nedeniyle önemlidir. Görsellerin, dosyaların ve belgelerin depolanabilmesi için bu veri tiplerinin kullanılması gerekebilir. Ancak, veri tabanı boyutu ve sorgu hızı gibi veritabanı performansı üzerinde etkili olan diğer faktörler göz önüne alınarak, bu veri tiplerinin uygun şekilde kullanılması gerekmektedir.


BOOLEAN Veri Tipi

BOOLEAN veri tipi, yalnızca iki değer alabilen bir değer tipidir: "True" ve "False" veya "1" ve "0". Diğer bir deyişle, bir verinin bir koşulu karşılayıp karşılamadığını belirlemek için bu tip kullanılabilir. Örneğin, bir kullanıcının giriş yapmış olup olmadığını belirlemek için BOOLEAN veri tipi kullanılabilir.

BOOLEAN veri tipinin kullanımı, özellikle sorgulama işlemlerinde oldukça yaygındır. Sorgulama sonuçları, bir koşulu karşılayıp karşılamadığına göre "True" ya da "False" değerini döndürebilir.

BOOLEAN veri tipi, WHERE ve HAVING koşulları içinde ve boolean operatörleri (AND, OR, NOT) ile birlikte kullanılabilir. Ayrıca, tablolarda veya görüntülerde, veri türünün sütunları "0" ve "1" olarak gösterilebilir.


Sınırlamalar

MySQL veri tabanı yönetim sistemi, veri tiplerinin yanı sıra sınırlamaları da destekler. Bu sınırlamalar, veri tiplerinin saklanmasına ve işlenmesine yönelik çeşitli kısıtlamalar koymaktadır.

Örneğin, bir CHAR veya VARCHAR türündeki veri alanı, maksimum karakter sayısına sahip olabilir. Benzer şekilde, bir INTEGER tipinde bir sütun, sadece pozitif veya negatif tamsayıları depolayabilir. Sınırlamalar, verilerin tutarlı ve doğru bir şekilde saklanmasını sağlayarak veri bütünlüğünü korur.

MySQL veri tiplerinin büyük çoğunluğu sınırlamalarla birlikte kullanılabilir. Örneğin, bir DATE türü, tarihin yalnızca belirli bir yıl aralığında olduğunu belirten bir sınır eklenebilir.

Sınırlamalar ayrıca veri tabanı tasarımında önemli bir rol oynamaktadır. Keyfi sınırlama eklemek yerine, sınırlamaların kullanıcının gereksinimlerine uygun olarak düzenlenmesi gerekmektedir. Sorgulama yapıldığında sınırlamaların da dikkate alınması ve verilerin doğru şekilde sorgulanması sağlanmalıdır. Bunun için, PRIMARY KEY ve FOREIGN KEY gibi sınırlama türleri kullanılabilir.

PRIMARY KEY, bir sütunun benzersiz tanımlayıcısıdır ve sütunda saklanan verinin benzersiz olduğunu garanti eder. Bu, sorgulama yaparken tekil veri kayıtlarını seçmeyi kolaylaştırır. Sıralama ve indeksleme işlemleri için de kullanılır.

FOREIGN KEY, bir tablodaki sütunun başka bir tablolardaki sütunlara nasıl bağlandığını gösteren bir sınırlandırmadır. Bu, verilerin ilişkisel bir yapıda saklanmasını sağlar. Sorgulama yaparken, bu sınırlama ile birlikte, otomatik olarak birden fazla tabloda veri arama işlemi gerçekleştirilebilir.

MySQL veri tiplerinin sınırlamaları hakkında doğru bilgi sahibi olmak, veri tabanı işlemlerini daha kolay ve verimli hale getirmenize yardımcı olacaktır. Tabloların sınırlamaları ile birlikte tasarlanması ve oluşturulması, verilerin doğru şekilde saklanmasına ve veri bütünlüğünü korumaya yardımcı olacaktır.


Primary Key

MySQL'de, bir tablodaki her satırın benzersiz bir şekilde tanımlanması gerekiyorsa, bir Primary Key tanımlanması gerekir. Primary Key, ilgili alanları tekil hale getirir ve verilerin hızlı bir şekilde tanımlanmasını ve sorgulanmasını sağlar.

Bir Primary Key, bir veya daha fazla sütunu birleştirmek için kullanılabilir. Bu, sütunun diğer sütunlarla birleştirildiğinde benzersiz olmasını garanti eder.

Primary Key oluşturmak için, bir tablodaki bir veya daha fazla sütun belirlenir ve PRIMARY KEY anahtar kelimesi kullanılarak tanımlanır. Tabloda yalnızca bir Primary Key olabilir.

Örnek bir Primary Key oluşturma SQL komutu:

Örnek Açıklama
CREATE TABLE öğrenciler (
öğrenci_id INT AUTO_INCREMENT,
adı VARCHAR(50),
soyadı VARCHAR(50),
PRIMARY KEY(öğrenci_id));
Öğrenci tablosunda, öğrenci_id sütunu Primary Key olarak tanımlanmıştır.

Primary Key kullanışlı bir sınırlama olmasına rağmen, bazen tek bir sütun kullanmak yerine, birden fazla sütunun birleştirilmesi gerekebilir. Örneğin, öğrenciler tablosunda, aynı isme sahip öğrencileri ayırt etmek için ad ve soyadı sütunları birleştirilebilir. Birden fazla sütunun birleştirilmesi, karmaşık bir Primary Key oluşturarak kullanıcının yapabileceği hataları azaltabilir.


Foreign Key

Foreign Key, bir tabloda bulunmayan ancak başka bir tabloda yer alan bir sütunun, birincil anahtar sütunlarının belirli bir değerine sahip olması gerektiğinde kullanılır. Bu sınırlama, verileri daha düzgün ve organize edilmiş hale getirmekte ve ilişkisel olarak bağlanan veritabanlarında önemli bir rol oynamaktadır.

Bir Foreign Key'i tanımlarken, öncelikle bu anahtara sahip olan tablo ve sütunların belirtilmesi gerekmektedir. Ardından, bu anahtarın hedef sütunu belirtilir. Hedef sütun, birincil anahtarı olan tablodaki bir sütunu ifade eder. Bu doğru bir şekilde belirlendiğinde, FOREIGN KEY sınırlaması, veritabanındaki ilişkili tablolar arasındaki tutarlılığı koruyacaktır.

Foreign Key sınırlaması sorgulama esnasında da dikkatle kullanılmalıdır. İç içe geçmiş sorgular, bu anahtarın doğru kullanımını zorlaştırabilir. Ancak doğru bir şekilde kullanıldığında, sorgular daha verimli ve tutarlı hale gelebilir.

Bir tablodaki birincil anahtarlar, başka bir tabloda birincil anahtar olarak kullanılabilirler. Bu, bir ilişkisel veritabanında görülen en yaygın anahtar ilişkilerinden biridir.

Bununla birlikte, bir tablodaki bir sütunun benzersiz değerlere sahip olması gerektiğinde ve başka bir tabloda Foreign Key olarak kullanılması gerektiğinde, UNIQUE sınırlaması kullanılabilir. Bu, birincil anahtar sınırlamasına benzer şekilde işlev görür ancak daha az sık kullanılır.


İşleştirilebilecek Diğer Veri Tipleri

JSON Veri Tipi:

JSON (JavaScript Object Notation), basit bir okunabilir veri formatıdır ve verilerin değiş tokuşu için kullanılır. Genellikle, client-server uygulamalarında kullanılır. JSON, verileri mantıksal bir şekilde gruplandırmak için nesneler ve listeler kullanır. Nesneler, anahtar-değer çiftleri olarak adlandırılan veri öğelerinin koleksiyonudur. Listeler, veri öğelerinin sıralanmış bir koleksiyonudur.

XML Veri Tipi:

XML (Extensible Markup Language), HTML ile benzer bir formatta veri saklar. Verileri HTML veya XHTML gibi dokümanlara eklemek için kullanılan bir işaretleme dilidir. XML, yapısal bir veri formatıdır ve verileri nesne hiyerarşileri, kümeleme, gruplama ve sıralama yoluyla düzenler. XML verisi, etiketlerin açılış ve kapanış eklerini içeren bir metin bloğu olarak temsil edilir.

GIS Veri Tipi:

GIS (Geographic Information System) veri tipi, haritalama ve coğrafi bilgi işleme için kullanılır. Bu veri tipi, konum verilerini içeren coğrafi nesneleri yönetmek için kullanılır. Koordinat verileri veya adresler, GIS verilerinde kullanılabilir ve daha sonra coğrafi bilgi sistemleri tarafından yüksek doğruluklu coğrafi veri tabanlarına dönüştürülür. Bu veri tipi, üç tür veri arasında ayrım yapar: coğrafi veri, çizgisel veri ve noktasal veri.


JSON Veri Tipi

JSON (JavaScript Object Notation), verileri depolamak ve iletmek için kullanılan bir veri formatıdır. JSON, insanlar ve makineler için anlaşılması kolay bir formatta veri sunar ve bu nedenle son yıllarda sayısız veri depolama ve alışveriş sistemi tarafından kullanılmaktadır.

JSON veri tipi, karmaşık yapılardaki verileri kolayca kodlama ve işleme özelliği sağlar. JSON, daha önce XML tarafından yönetilen alanlarda daha fazla kullanılmaktadır. MIME tipi olarak "application/json" olarak belirtildiğinde kullanılabilir. PHP'de json_encode () ve json_decode () işlevleri kullanarak, JSON verileri PHP verilerine dönüştürülebilir ve tam tersi yapılabilir.

Bir JSON nesnesi, anahtar-değer çiftlerinden oluşur. Anahtarlar, tırnak işaretleriyle çevrilmiş bir dize değeri olarak yazılmaktadır. Anahtarlardan sonra çift nokta (:) sembolü gelir ve değerler de belirtilir (dize, sayı, dizeler, nesneler, boolean, null gibi).

Anahtar Değer
"name" "John Doe"
"age" 30
"city" "Istanbul"

Note: JSON tarafından kabul edilen veri tipleri string (metin), number (sayı), object (nesne), array (dizi), true, false ve null'dir.

JSON verileri, RESTful web hizmetleri, Ajax istekleri ve web uygulamalarının arka planı gibi birçok alanda kullanılır. JSON, arka planda çevrimiçi alışveriş sitelerinde ve sosyal medya platformlarında da yer aldığı için, bir örnek olarak Amazon, Twitter, Facebook ve Google gibi birçok popüler web sitesinde kullanılabilir.


XML Veri Tipi

XML, Extensible Markup Language (Genişletilebilir İşaretleme Dili) kısaltmasıdır ve verileri doğru bir şekilde depolamak ve web üzerinden paylaşmak için kullanılır. XML'in veri tipleri içerisinde yer alması, veri tabanı sistemleriyle uyumlu olmasını sağlar.

XML veri tipi, aynı zamanda metin, sayı, tarih, saat ve resimler gibi ayrı veri tiplerini tek bir dosyada taşıyabilir. Bu özellik, veri içeriği yüksek web sitelerinde büyük kolaylık sağlar.

XML veri tipi, veri tabanlarına girmek için bir yol sağlar ve bu sayede veri tabanı yöneticilerine, veri sisteminin sahiplerine ve veri analistlerine verileri daha iyi yönetebilme olasılığı verir. XML dosyaları, yüksek veri hacimlerini işlemede oldukça kullanışlıdır. Veriler, basit bir metin editörü ile bile yönetilebilir. XML verileri, birçok farklı veri sunucusu ile uyumlu olacak şekilde kullanılabilir.

XML veri tipi, HTML veri tipine benzerdir, ancak birkaç pozisyon belirleyici ek olarak gelir. XML, özelleştirilmiş işaretleme etiketleri kullanır, bu da tamamen özelleştirilmiş bir veri yapılandırması sağlar. Bu esnekliği, veri tabanı yöneticileri açısından önemlidir çünkü veri depolama gereksinimlerine uyacak şekilde özelleştirilebilir.


GIS Veri Tipi

GIS (Geographic Information System) çoğu zaman harita verilerini depolamak ve işlemek için kullanılan bir veri tipidir. Bu tür veriler, coğrafi koordinatlar, konum bilgileri ve yukarıdan çekilmiş görüntüler gibi birçok veri türünü içerebilir. Bu veriler birçok işletme ve kamu sektöründe kullanılmaktadır ve gayrimenkul, çevre planlama ve acil durum müdahalelerinde anahtar rol oynamaktadır.

MySQL, veritabanı uygulamalarında kullanılabilecek birkaç GIS veri tipinin depolanmasını desteklemektedir. Bunlar genellikle POINT, LINESTRING ve POLYGON gibi geometrik şekilleri ifade etmek için kullanılır. GIS veri tipleri, diğer veri tiplerinden farklı olarak, işlemek için bir dizi özel işlev gerektirir.

MySQL GIS Veri Tipleri
Veri Tipi Özellikler Açıklama
POINT x ve y koordinatları Tek bir koordinat noktasını işaret eder.
LINESTRING Birden fazla nokta koordinatı Bir çizgi şeklini ifade eder.
POLYGON Birden fazla nokta koordinatı Çokgen şeklini ifade eder.

GIS veri tiplerinde sorgulama yapmak için, birkaç işlev kullanılır. Genellikle koordinatlar arasındaki mesafeyi hesaplamak için kullanılan ST_Distance işlevi gibi özel amaçlı işlevler mevcuttur. Ayrıca, geometrik şekiller üzerinde toplama, çıkarma ve kesişme işlemleri gerçekleştirmek için GIS işlevleri de kullanabilirsiniz.

MySQL'in GIS işlevlerini kullanmak, işletmelerin yenilikçi ve etkili bir şekilde hareket etmesine yardımcı olabilir. Bu veri tiplerinin kullanımı, gayrimenkul planlama, coğrafi veri analizi, hava durumu tahmini ve jeolojik araştırmalar gibi birçok sektörde kullanılmaktadır.