MySQL Veri Tipleri ve Sınırlamaları

MySQL Veri Tipleri ve Sınırlamaları

MySQL veritabanı yönetim sistemiyle kullanılan veri tipleri ve sınırlamaları, veritabanı yapısının iyi bir şekilde oluşturulması için çok önemlidir MySQL'de tamsayı, ondalık sayı, karakter dizisi, boole ve tarih/zaman veri tipleri kullanılır Tamsayılar arasında INTEGER ve BIGINT, ondalık sayılarda FLOAT ve DECIMAL, karakter dizilerinde CHAR, VARCHAR ve TEXT, boole veri tipinde sadece TRUE ve FALSE, tarih/zaman veri tipinde ise DATE, TIME veya DATETIME seçenekleri mevcuttur Sınırlama kuralları arasında NOT NULL, UNIQUE, PRIMARY KEY, FOREIGN KEY, CHECK ve DEFAULT kullanılır Veri tipi seçimi ve sınırlama kuralları, verilerin saklanması ve işlenmesi açısından oldukça önemlidir

MySQL Veri Tipleri ve Sınırlamaları

MySQL, veritabanı yönetim sistemi olarak kullanılan bir yazılımdır. Veritabanlarında kullanılan veri tipleri ve bu veri tiplerine uygulanan sınırlamalar, veritabanının yapısının oluşturulması için oldukça önemlidir.

MySQL'de kullanılan farklı veri tipleri arasında tamsayı, ondalık sayı, karakter dizisi, boole ve tarih/zaman veri tipleri bulunmaktadır. Tamsayı veri tipi, INTEGER ve BIGINT gibi alt türlere sahiptir. Ondalık sayı veri tipi ise DECIMAL ve FLOAT alt türlerine sahiptir. Karakter dizisi veri tipleri arasında CHAR, VARCHAR ve TEXT yer alırken, boole veri tipi sadece TRUE ve FALSE değerleri alır. Tarih/zaman veri tipi ise DATE, TIME veya DATETIME olarak kullanılabilir.

Veri sınırlamaları veya veri doğrulama kuralları da MySQL'de sıkça kullanılmaktadır. NOT NULL sınırlaması verinin boş olmamasını istediğimiz durumlarda kullanılırken, UNIQUE sınırlaması verinin benzersiz olmasını istediğimiz durumlarda kullanılır. PRIMARY KEY sınırlaması bir tablonun anahtar alanını belirtmek için kullanılırken, FOREIGN KEY sınırlaması ise bir tablonun başka bir tabloyla ilişkisini belirlemek için kullanılır. Veri doğrulama için CHECK sınırlaması kullanılırken, DEFAULT sınırlaması veri alanına bir varsayılan değer atanmasını sağlar.


Veri Tipleri

MySQL veritabanında kullanılan veri tipleri, veri alanlarında hangi tür verilerin saklanabileceği konusunda bir yol göstericidir. Veri tiplerinin doğru seçimi, verileri saklama ve işleme açısından oldukça önemlidir. Bu nedenle, MySQL veri tiplerini ve özelliklerini anlamak önemlidir.

MySQL'de birçok veri tipi bulunur ve bu veri tipleri kullanım amaçlarına göre gruplandırılabilir. Bunlar arasında tamsayı, ondalık sayı, karakter dizileri, boole ve tarih/zaman veri tipleri bulunmaktadır.

Tamsayı, MySQL'de kullanılan en temel veri tiplerinden biridir. INTEGER ve BIGINT gibi alt türleri bulunur. INTEGER, 4 byte hafıza kullanarak -2147483648 ile 2147483647 arasındaki tamsayı değerlerini saklayabilir. BIGINT ise 8 byte hafıza kullanarak daha büyük sayıları saklar.

Ondalık sayılar, FLOAT ve DECIMAL olmak üzere ikiye ayrılır. FLOAT, ondalık sayıları saklamak için kullanılır ve 4 byte hafıza kullanarak 7 rakam kadar hassaslıkla değer saklayabilir. DECIMAL ise daha yüksek hassasiyet sunar ve 8 byte hafıza kullanarak ondalık sayıları saklar.

CHAR, VARCHAR ve TEXT gibi karakter dizileri veri tipleri, karakter dizileri için kullanılır. CHAR ve VARCHAR arasındaki fark, saklanan karakter sayısına göre değişir. CHAR, sabit uzunluklu bir karakter dizisi saklamak için kullanılırken VARCHAR, değişken uzunluklu bir karakter dizisini saklamak için kullanılır. TEXT ise, değişken uzunluklu bir karakter dizisi saklamak için kullanılır.

Boole veri tipi, MySQL'de yalnızca TRUE veya FALSE şartlarını alabilen bir veri türüdür. Boole veri tipi, mantıklı sorgular ve karar yapıları için oldukça kullanışlıdır.

Tarih/zaman veri tipleri, MySQL'de tarih ve zaman değerlerini saklamak için kullanılır. DATE, yalnızca tarihi saklar. TIME, yalnızca saat, dakika ve saniye değerlerini saklar. DATETIME ise hem tarih hem de saat değerlerini bir arada saklar.


Tamsayı

Tamsayı veri tipi, tam sayıları, yani pozitif ve negatif tam sayıları saklamak için kullanılır. Bu veri tipi, belirli aralıklarda değerler kabul eden alt tipleri ile birlikte kullanılabilir. En sık kullanılan alt tipleri INTEGER ve BIGINT'dir.

Tamsayı Alt TipiBoyutMinimum DeğerMaksimum Değer
INTEGER4 byte-21474836482147483647
BIGINT8 byte-92233720368547758089223372036854775807

INTEGER alt tipi, 4 byte'lık bir boyuta sahiptir ve -2147483648'den 2147483647'ye kadar değerler kabul eder. Bu alt tip, sıklıkla otomatik artan numaraları saklamak için kullanılır. BIGINT alt tipi ise 8 byte'lık bir boyuta sahiptir ve -9223372036854775808'den 9223372036854775807'ye kadar değerler kabul eder. Bu alt tip, büyük veri kümeleri gibi büyük sayılarla çalışmak gerektiğinde kullanışlıdır.


INTEGER

MySQL'de kullanılan tamsayı veri tipi INTEGER, hem pozitif hem de negatif tamsayı değerleri içerebilir. Genellikle bütün sayılar için kullanılır. INT olarak da adlandırılan INTEGER veri tipi, 4 byte ile 11 byte arasında değişen boyutlarda kullanılabilir. INTEGER veri tipinin özellikleri şunlardır:

  • Boş değerler için NULL kullanılabilir.
  • Maksimum ve minimum değerleri sınırlayabilen UNSIGNED ve SIGNED çeşitleri vardır.
  • Artan sıralama (auto-increment) özelliği sayesinde, değerler otomatik olarak birer birer arttırılabilir.

INTEGER veri tipi, özellikle kitaplık sistemlerinde, finans sektöründe, öğrenci numaralarında ve işlem takip uygulamalarında kullanımı yaygındır.


BIGINT

BIGINT, 8 byte'lık bir boyuta sahip tamsayı veri tipidir ve INT veri tipinden daha büyük değerler tutabilir. BIGINT, 2 üzeri 64 adet tam sayı değerini tutabilir. Negatif veya pozitif değer alabilir ve en küçük değeri -9223372036854775808, en büyük değeri ise 9223372036854775807'dir.

BIGINT, çoğunlukla işletmelerle ilgili verilerin takibinde kullanılır. Örneğin, bir firmanın gelir ve giderleri gibi yüksek sayısal değerleri takip etmek için kullanılabilir. Ayrıca, büyük ölçekli finansal verileri depolamak için de idealdir. Ancak, bu veri tipi kullanım sıklığı azaldığından, veritabanı tasarımında en son tercih edilen veri tipidir.


Ondalık Sayı

Ondalık sayı veri tipi, MySQL'de oldukça önemli bir yere sahiptir. Bu veri tipi, sayılarla ilgili işlemler yaparken tam sayıların yetersiz kaldığı yerlerde kullanılır. Ondalık sayı veri tipi de ikiye ayrılır: DECIMAL ve FLOAT.

DECIMAL:

Sütun Açıklama
M Toplam sayısal hane sayısıdır.
D Virgülün sağ tarafındaki rakam sayısıdır.

Örneğin, DECIMAL(5,2) sınırlaması, 5 toplam sayısal hane sayısı ve 2 rakamın virgülün sağ tarafında olduğunu belirtir. Bu, 999.99'a kadar olan sayılar için uygundur.

FLOAT:

FLOAT, ondalık sayı veri tipinin diğer bir alt türüdür. Ancak, DECIMAL'den farklı olarak, sabit bir sayısal hane uzunluğuna sahip değildir. Buna ek olarak, uslu sayıları yaklaşık olarak depolar.

Bir sayıyı FLOAT veri tipinde depolamak için aşağıdaki kod kullanılabilir:

FLOAT

FLOAT veri tipinde sadece bir sayı tutulur. Ancak, bu sayı eksponentiyel formatta ifade edilebilir. Örneğin, 2.12345E+10 sınırlaması, 21,234,500,000 sayısını ifade eder.


DECIMAL

DECIMAL veri tipi, ondalık sayıları saklamak için kullanılan bir veri tipidir. Bu veri tipinde, tam sayı kısım sayısal veri tipine, ondalık kısmı ise DEĞİŞKEN olsa da, çoğunlukla FLOAT veya DOUBLE sayısal veri tiplerine benzer bir şekilde saklanır.

DECIMAL veri tipinde bulunan tam sayı ve ondalık sayı kısımları, toplam bölünen haneler arasında yazılır. Bu veri tipinde, hem tam sayı hem de ondalık sayılar için ayrı ayrı başlangıç değerleri atanabilir. Genellikle finansal verilerin saklanmasında kullanılır ve bu nedenle, verinin hassasiyeti için ondalık sayı bölünen hanelerinin miktarı dikkatlice belirlenmelidir.

DECIMAL veri tipi ayrıca temel matematik işlemlerinde son derece doğru sonuçlar üretir. Bu veri tipinde, basamak sayısı arttıkça saklanacak verinin hassasiyeti artar. Örneğin, iki basamaklı bir DECIMAL veri tipi, 99.99'a kadar doğru bir sonuç verebilir.

Veri Tipi Başlangıç Değeri Hassasiyet Boyut
DECIMAL(5,2) 0.00 0.01 3 byte
DECIMAL(8,4) 0.0000 0.0001 4 byte
DECIMAL(10,6) 0.000000 0.000001 5 byte

FLOAT

FLOAT veri tipi, ondalık sayıları depolamak için kullanılan bir veri tipidir. FLOAT, DOUBLE PRECISION ve REAL gibi alt türlere sahiptir. FLOAT veri tipi, büyük sayıların saklanması için tercih edilir. Bu veri tipi ile büyük ondalık sayıları depolamak ve hesaplama yapmak mümkündür. FLOAT veri tipinin özellikleri şunlardır:

  • FLOAT, ondalık sayıları noktadan sonra en fazla 24 basamağa kadar tutabilir.
  • Veri boyutu, saklanacak verinin hassasiyetine göre değişebilir.
  • İşlem hızı, diğer veri tiplerine göre daha düşüktür.

FLOAT veri tipi, sayısal hesaplama gerektiren uygulamalar için idealdir. Örneğin, finansal hesaplamalar ve mühendislik uygulamaları bu veri tipini kullanabilirler. FLOAT veri tipi, bilimsel hesaplama için de kullanışlıdır. Daha hassas sonuçlar için DOUBLE PRECISION veya DECIMAL veri tipleri tercih edilebilir.


Karakter Dizileri

Karakter dizileri, MySQL'de sıklıkla kullanılan veri tiplerinden biridir. CHAR, VARCHAR ve TEXT gibi alt türleri bulunmaktadır.

Veri Tipi Maximum Uzunluk Farklılıklar
CHAR Sabit uzunlukta karakter dizisi Tüm saklama alanı kullanılır, hızlı erişim için iyidir
VARCHAR Değişken uzunlukta karakter dizisi Sadece girilen karakter dizesi için yer ayırır, uygunluk için iyidir
TEXT Değişken uzunlukta uzun karakter dizisi Uzun metinler için uygun, ancak hafıza verimliliği düşük

CHAR veri tipi, sabit uzunluktaki karakter dizileri için kullanılır. Boyutu belirtilir ve bu boyutta saklama alanı ayrılır. VARCHAR veri tipi ise değişken uzunluktaki karakter dizileri için kullanılır. Burada, sadece yazılan karakter dizisi için gerekli olan minimum alan ayrılır. Bu nedenle, VARCHAR veri tipi, veri hareketliliği açısından verimlidir ve hafıza kullanımında daha az yer kaplar. TEXT veri tipi ise, daha uzun metinler için kullanılır. Karakter dizisi boyutu veya sınırı yoktur ve yeterli alan ayrılması gerekmektedir.

CHAR, VARCHAR ve TEXT gibi karakter dizisi veri tiplerinin kullanımında, veriler için doğrulama kuralları da belirlenebilir. Örneğin, bir şifre alanı, sadece belirli tipte karakterleri kabul edebilir. Benzersiz bir karakter dizisi kullanılmasını sağlayarak, veri bütünlüğü sağlanabilir. Bu yöntem, veri tabanı saldırılarından veri korumada da önemli bir rol oynar.


CHAR

CHAR veri tipi, MySQL'de sık kullanılan karakter dizisi veri tiplerinden biridir. CHAR, sabit uzunlukta karakter dizileri için kullanılır ve birkaç bit daha az bellek kullanır.

CHAR verileri için uzunluk, tablo oluşturulurken belirtilir ve tüm CHAR verileri aynı sabit uzunluğa sahip olur. Örneğin, CHAR(10) deyimi 10 karakterlik bir değer alır.

CHAR veri tipinin kullanım alanları arasında ad, soyad, adres ve benzeri sabit uzunluklu verilerin tutulması yer alır. CHAR verilerinin kullanımı, depolama ve erişim için daha hızlıdır. Ancak, bir değer veritabanına eklenirken belirlenen sabit uzunluktan daha uzunsa, değer kesilir, yani veri kaybı yaşanır.

CHAR veri tipinin özellikleri şunlardır:

Özellik Açıklama
Uzunluk Sabit uzunluklu karakter dizisi
Depolama Daha az bellek kullanır
Kullanım alanı Sabit uzunluklu verilerin saklanması

CHAR veri tipi hakkında daha fazla bilgi için MySQL dokümantasyonuna bakabilirsiniz.


VARCHAR

VARCHAR, karakter dizilimlerinin tutulması için kullanılan bir veri tipidir. Bu veri tipinde alan boyutu belirtilir ve alan boyutu aşılamaz. ARRAY, BINARY, VARBINARY ve BLOB da VARCHAR ile aynı şekilde çalışır.

VARCHAR veri tipi, karakter dizilerini daha az bellek kullanarak depolamak için kullanışlıdır. Bu nedenle, sınırları bilindiği takdirde, karakter dizisi alanının her zaman VARCHAR tipinde tanımlanması önerilir.

VARCHAR, karakter dizisi verilerinin tasarruflu bir şekilde depolanmasını sağlamaktadır. Özellikle verilerin boyutunun değişken olduğu durumlarda mantıklı bir seçenektir. ":" veya "-" gibi öneklerle doğum tarihi, posta kodu gibi bilgileri depolarken VARCHAR kullanmak daha doğru bir tercih olabilir.

Aşağıda, VARCHAR veri tipi için kullanım örnekleri verilmiştir:

  • İsim, soyadı gibi karakter dizileri
  • Email adresleri
  • Telefon numaraları
  • Adresler
  • Şirket isimleri
Veri Alanı Türü Boyutu
isim VARCHAR 50
email VARCHAR 100
adres VARCHAR 200

VARCHAR veri tipinin özellikleri ve kullanım alanları açısından oldukça geniş bir yelpazeye sahiptir. Veri tipleri ile ilgili doğru bir seçim yapmak, veritabanı sisteminin performansı ve verilerin doğruluğu açısından oldukça önemlidir.


TEXT

TEXT veri tipi, karakter dizileri için kullanılan bir veri tipidir. VARCHAR veri tipinde karakter dizilerinin boyutu değişkenken, TEXT veri tipinde boyut sabit değildir. Bu nedenle, özellikle uzun metinlerin saklandığı durumlarda kullanılması önerilir.

TEXT veri tipi, VARCHAR veri tipine göre daha fazla bellek kullanımı gerektirdiği için performans açısından bazı dezavantajları vardır. Ancak, büyük miktarda metnin saklanması gerektiği durumlarda, tercih edilmesi gereken veri tipidir.

TEXT Veri Tipi Sınırlamaları
Maksimum Boyut: 65,535 karakter
Kullanım Alanları: Blog yazıları, makaleler, yorumlar, vb.

Bir örnek vermek gerekirse, bir blog yazısı içeriğinin saklanması için TEXT veri tipi kullanılması doğru bir seçim olacaktır. Böylece, metnin boyutu ne kadar büyük olursa olsun, rahatlıkla saklanabilir.

Tablo oluşturulurken, bir sütunun veri tipi olarak TEXT belirlenebilir. Ayrıca, TEXT veri tipine sınırlama koyulabilir. Örneğin, bir blog sitesinde yorumların maksimum karakter sayısı 500 olabilir ve bu sınırlama, TEXT veri tipine uygulanarak sağlanabilir.

  • TEXT veri tipi, uzun metinlerin saklanması için kullanılan bir veri tipidir.
  • Metnin boyutu değişkenken, boyutu sabit değildir.
  • Büyük miktarda metnin saklanması gerektiği durumlarda tercih edilir.
  • Bir sütunun veri tipi olarak belirlenerek, kullanmak mümkündür.
  • Sınırlama koyarak, metnin maksimum karakter sayısını belirlemek mümkündür.

Boole Veri Tipi

Boole veri tipi, sadece iki değer alabilen, yani doğru veya yanlış ifade eden bir veri tipidir. Bu veri tipi, BOOLEAN veya BOOL olarak tanımlanır. Bu veri tipi, genellikle koşullu ifadelerde, sorgularda ve diğer veri işleme işlemlerinde kullanılır.

Boole veri tipi, mantıksal sorgulamalarda veya koşulların belirlenmesinde oldukça önemli bir rol oynamaktadır. Örneğin, bir işlem belirli bir koşulda gerçekleşecekse, bu koşulun doğru veya yanlış olduğunu belirtmek için boole veri tipi kullanılabilir. Bu veri tipinin kullanımı, sorgu dillerinde ve programlama dillerinde oldukça yaygın bir şekilde kullanılır.

Boole veri tipi, sorgularda veya koşullu ifadelere ek olarak, veritabanı tasarımlarında da kullanılabilir. Örneğin, bir kullanıcının hesabının devre dışı bırakılıp bırakılmayacağına karar vermek için boole veri tipi kullanılabilir. Bu özellikle, büyük ölçekli veritabanları yönetirken oldukça kullanışlıdır.

Boole veri tipi, sadece doğru ve yanlış değerlerinden oluştuğu için, diğer veri tiplerine göre daha az yer kaplar ve bu nedenle veritabanının boyutunu küçültür. Ayrıca bu veri tipi, veritabanında belirli bir alanda belirli bir koşulu doğrulamak için oldukça yararlıdır.

Boole veri tipi için bir örnek sorgu, “SELECT * FROM employees WHERE is_active = true” gibi olabilir. Bu sorgu, aktif çalışanları seçmek için kullanılır. Bu sorguda, "is_active" sütunu boole veri tipini temsil eder.

Boole veri tipi, veri işleme yönünden oldukça önemlidir. MySQL'de kullanımı oldukça yaygın olan bu veri tipinin kullanım alanları oldukça geniş ve çeşitlidir. Özellikle büyük ölçekli veritabanlarında, veri işleme işlemlerini kolaylaştırmak için boole veri tipinin kullanılması şiddetle önerilir.


Tarih/Zaman Veri Tipi

MySQL'de kullanılan tarih/zaman veri tipleri, verilerin belirtilen tarih ve saat değerlerini tutabilmesi için kullanılır. Bu veri tipleri arasında DATE, TIME ve DATETIME bulunur. Bu veri tipleri aynı şekilde kullanılsa da, farklı amaçlar için tercih edilirler.

DATE veri tipi, yalnızca bir tarihi depolamak için kullanılır. Veri, "YYYY-MM-DD" formatında kaydedilir. Örneğin, "2022-05-27" bir DATE verisi olabilir. TIME veri tipi ise yalnızca bir saat veya zaman aralığını depolamak için kullanılır. Veri, "HH:MM:SS" formatında kaydedilir. Örneğin, "13:45:00" bir TIME verisi olabilir.

Veri TipiAçıklamaÖrnek
DATE"YYYY-MM-DD" formatında sadece bir tarih değeri tutar.2022-05-27
TIME"HH:MM:SS" formatında sadece bir zaman değeri tutar.13:45:00
DATETIMEHem tarih hem de zaman değerlerini ("YYYY-MM-DD HH:MM:SS" formatında) birleştirir.2022-05-27 13:45:00

DATETIME veri tipi, tarih ve zamanı aynı anda tutmak için kullanılır. "YYYY-MM-DD HH:MM:SS" formatında veri kaydedilir. Örneğin, "2022-05-27 13:45:00" bir DATETIME verisi olabilir. Bu veri tipi, özellikle tabloda tarih ve saat verilerinin birlikte takip edilmesi gerektiğinde kullanılır.

Siz de MySQL'de kullanılan tarih/zaman veri tiplerini doğru bir şekilde kullanarak, verilerinizi doğru bir şekilde takip edebilirsiniz. Veri tipleri hakkında daha fazla bilgiye sahip olmak ve farklı veri tiplerini doğru bir şekilde kullanabilmek için MySQL belgelerine göz atabilirsiniz.


DATE

MySQL'de DATE veri tipi, yıl, ay ve gün değerlerini içeren tarihleri temsil etmek için kullanılır. DATE veri tipindeki tarih değerleri 'yyyy-mm-dd' formatında saklanır. Bu veri tipi, tarih değerleri söz konusu olduğunda, sadece tarih değeri gerektiğinde kullanılır ve saat bilgisini içermez.

DATE veri tipi için kullanılabilen sınırlamalar, veri Türkiye saati ile UTC arasındaki farkı göz önünde bulundurarak değerlendirir. Bu nedenle, bir hesaplamada ilgili zamana göre bir tarih belirtilmelidir.

DATE veri tipi, takvim uygulamaları ve randevu sistemleri gibi birçok uygulamanın gereksinimlerine uygun olarak kullanılabilir. Örneğin, bir satış kaydında, satış tarihi belirtilirken DATE veri tipi kullanılabilir.


TIME

MySQL'de kullanılan bir veri tipi de zaman veri tipi olan TIME'dır. TIME, saati, dakikayı ve saniyeyi temsil edebilecek şekilde 'HH:MM:SS' biçiminde depolanır. Bu veri tipi, DATE veri tipi gibi sadece zamanı temsil eder.

TIME veri tipi, özellikle saat aralıklarının hesaplanması ve zamanın ölçülmesi gerektiği durumlarda kullanılabilir. TIME veri tipindeki sınırlamalar şunlardır:

  • TIME veri tipi, 8 bit ile depolanır. Yani 00:00:00'dan önceki ve sonraki zamanlar depolanamaz.
  • TIME veri tipi, sadece pozitif aralıkları temsil edebilir. Negatif zamanları temsil etmek için INTERVAL veri tipi kullanılmalıdır.
  • TIME veri tipi, yalnızca saat, dakika ve saniye başına 0'dan 59'a kadar olan değerleri kabul eder.

TIME veri tipi, özellikle fatura işlemleri, müşterilerin takibi, rezervasyon ve randevu işlemleri gibi birçok alanda sıkça kullanılmaktadır. Örneğin, bir otomasyon yazılımında çalışan personelin çalışmaya başlama saatini ve sonlandırma saatini tutmak için TIME veri tipi kullanılabilir.


DATETIME

DATETIME veri tipi, tarih ve zaman bilgilerini aynı anda depolamak için kullanılır. Bu veri tipi, YYYY-MM-DD hh:mm:ss biçimindeki tarih ve saat bilgilerini saklar. DATETIME veri tipi, MySQL'de en sık kullanılan veri tiplerinden biridir ve özellikle zaman bilgisinin önemli olduğu uygulamalarda sıkça tercih edilir.

DATETIME veri tipi kullanırken dikkat edilmesi gereken bazı noktalar vardır. İlk olarak, bu veri tipi sadece belirli bir süre aralığındaki tarih ve saatleri depolayabilir. Bu süre aralığı MySQL sürümüne göre değişebilir, ancak çoğu sürümde 1000 yıl kadar bir zaman aralığı desteklenmektedir.

Bir diğer dikkat edilmesi gereken nokta ise zaman dilimleri konusudur. DATETIME veri tipi, tarih ve saat bilgisini yerel saate göre saklar. Bu nedenle, farklı ülkelerdeki kullanıcılar arasında veri depolama ve işleme sürecinde sorunlar yaşanabilir. Bu sorunun çözümü için, tarih ve saat bilgisinin UTC veya başka bir standart zaman dilimi kullanılarak saklanması önerilir.

DATETIME veri tipi kullanımına örnek olarak, bir web sitesinde üye kaydı işlemi yapılırken kullanıcının kayıt tarihini ve saatinin de kaydedilmesi verilebilir. Böylece, kullanıcının ne zaman üye olduğu ve üyelik süresi gibi bilgilere kolayca erişilebilir.


Veri Sınırlamaları ve Doğrulama Kuralları

MySQL'de kullanılan veri sınırlamaları ve doğrulama kuralları, veritabanı tasarımının temel unsurlarından biridir. Bu kurallar, veritabanı işlemleri sırasında veri güvenliğini sağlamak için kullanılır. İşte, MySQL'de kullanılan bazı veri sınırlamaları ve doğrulama kuralları:

NULL değerinin kabul edilemez olduğu durumlarda kullanılır. Örneğin, kullanıcıların adlarını ve e-posta adreslerini girmeleri gereken bir formda, ad ve e-posta alanlarına NOT NULL sınırlaması ekleyebilirsiniz. Böylece, kullanıcılar bu alanları boş bırakamazlar ve veritabanına boş değerler girilmesi engellenir.

Bir alanın benzersiz olduğu durumlarda kullanılır. Örneğin, kullanıcıların bir web sitesine kaydolurken kullandıkları e-posta adresleri benzersiz olmalıdır. Bu durumda, e-posta alanına UNIQUE sınırlaması ekleyebilirsiniz. Böylece, aynı e-posta adresiyle birden fazla kullanıcı kaydedemez ve veritabanında birden fazla kayıt oluşmasının önüne geçersiniz.

Bir tablodaki benzersiz alanı belirlemek için kullanılır. Örneğin, bir kullanıcılar tablosunda kullanıcıların benzersiz olduğu alanlar, örneğin kullanıcı adları veya kullanıcı kimlikleri PRIMARY KEY olarak belirlenebilir. Böylece, kullanıcıların sadece bir kaydı olabilir ve veritabanında aynı kullanıcıya ait birden fazla kayıt oluşmasının önüne geçilir.

Farklı tablolar arasındaki ilişkileri tanımlamak için kullanılır. Örneğin, bir kullanıcılar ve bir gönderiler tablosu varsa, gönderiler tablosundaki kullanıcı_id alanı, kullanıcılar tablosundaki kullanıcı adı alanıyla FOREIGN KEY olarak tanımlanabilir. Böylece, kullanıcılar ve gönderiler arasındaki ilişki belirlenir ve veritabanında tutarlılık sağlanır.

Belirli bir koşulu yerine getirmesi gereken veriler için kullanılır. Örneğin, bir ürün satışı tablosunda, fiyat alanına CHECK sınırlaması ekleyerek, fiyatın sıfırdan büyük olması gerektiğini belirtebilirsiniz.

Veri alanına bir varsayılan değer atanmasını sağlar. Örneğin, kullanıcıların yaşını belirten bir alan varsa, DEFAULT sınırlaması ekleyerek, kullanıcıların yaş belirtmediği durumlarda varsayılan bir yaş değeri atayabilirsiniz.


NOT NULL

Verilerin boş olmamasını istediğimiz durumlarda NOT NULL sınırlaması kullanılır. Bir alanın NOT NULL olarak tanımlanması, o alanın boş olamayacağı anlamına gelir.

Örneğin, bir kullanıcının adı ve soyadı bilgileri kaydedilir ve bu alanların boş bırakılmaması gerektiği belirtilir. Bu durumda, ad ve soyadı alanları NOT NULL olarak tanımlanır.

NOT NULL sınırlaması, veri girişinin doğru ve eksiksiz olmasını sağlar. Ayrıca, verilerin veritabanında daha tutarlı ve kullanışlı olmasını sağlar.

NOT NULL sınırlaması, tablo oluşturulurken veya mevcut bir tablo değiştirilirken belirtilir. NOT NULL sınırlaması kullanılan bir alan, veri eklenirken boş bırakılamaz ve mevcut veri değiştirilirken boşaltılamaz. NOT NULL sınırlamasının belirlenmesi, veri kaybını önleyerek verilerin güvenilirliğini sağlar.


UNIQUE

Veritabanlarında, bazı durumlarda verinin benzersiz olmasını isteyebiliriz. Bu tür durumlarda UNIQUE sınırlaması kullanılır. UNIQUE sınırlaması, bir alanın değerlerinin birbirinden farklı olmasını sağlar. Örneğin, bir kullanıcının e-posta adresini girerken, UNIQUE sınırlamasını kullanarak her kullanıcının farklı bir e-posta adresi olmasını isteyebiliriz.

UNIQUE sınırlaması, bir tabloda bir veya birden fazla alan için kullanılabilir. Birden fazla alan kullanıldığında, değerlerin birleşimi benzersiz olmalıdır. Bu tür bir sınırlamayı kullanmak, verilerin doğruluğunu sağlamak için oldukça faydalıdır.

Ürün ID Ürün Adı Barkod Kodu
1 Telefon 12345678
2 Bilgisayar 87654321
3 Tablet 12345678

Yukarıdaki tabloda, barkod kodu alanı UNIQUE sınırlamasına sahip olmalıdır. Bu sayede, iki veya daha fazla üründe aynı barkod kodu kullanılamayacaktır. Bu durum, ürünlere benzersiz bir tanımlama sağlar ve verilerin tekrarından kaçınır.


PRIMARY KEY

MySQL'de bir tablonun anahtar alanını belirlemek için kullanılan sınırlama PRIMARY KEY'dir. Bu sınırlama, her bir satırı benzersiz olarak tanımlayan bir veya daha fazla sütuna uygulanır. PRIMARY KEY, bir tablonun herhangi bir sütununa uygulanabilir, ancak her tablo yalnızca bir tane PRIMARY KEY içerebilir.

PRIMARY KEY, tablonun herhangi bir sütununa uygulanabilir, ancak genellikle tek bir sütunda kullanılır. Bunun nedeni, birden fazla sütuna uygulamanın performansı etkileyebileceği ve doğru sorguyu yazmak zorlaştırabileceğidir. Bir sütunda uygulandığında, PRIMARY KEY otomatik olarak BENZERSİZ sınırlamasını da içerir.

PRIMARY KEY sınırlaması ayrıca, yinelenen satırları önlemek için bir koruma görevi de görür. Bir tabloda yinelenen satırların olmasına izin vermek, daha sonra veri analizi, işleme ve raporlama gibi birçok soruna neden olabilir. Böyle bir durumda, yinelenen satırları bulmak ve silmek oldukça zaman alıcı ve zahmetli olabilir. Bu nedenle, PRIMARY KEY sınırlaması, yinelenen satırları önleyerek verilerin bütünlüğünü korumaya yardımcı olur.


FOREIGN KEY

FOREIGN KEY, birçok tablonun kullanıldığı büyük veritabanları için önemli bir kavramdır. FOREIGN KEY, bir tablodaki bir sütunun başka bir tablodaki sütunlarla ilişkilendirilmesini sağlar. Bu nedenle, iki veya daha fazla tablodaki veriler arasında bir bağlantı kurmak istediğimizde bu sınırlama kullanılmalıdır.

Örneğin, bir öğrenci tablosu (students) ve bir okul tablosu (schools) düşünelim. Her öğrenci bir okula kayıtlıdır, ancak bir okuldaki öğrencilerin birden fazla öğrenci numarası olabilir. Bu nedenle, bu iki tablo arasında bir bağlantı kurmak ve her öğrencinin hangi okula kayıtlı olduğunu göstermek için, öğrenci tablosundaki okul sütunu, okul tablosundaki id sütunu ile FOREIGN KEY olarak ilişkilendirilmelidir.

Öğrenci Tablosu (students) Okul Tablosu (schools)
id name id school_name
1 Ahmet 1 Uludağ Üniversitesi
2 Mehmet 2 Boğaziçi Üniversitesi
3 Ali 1 Uludağ Üniversitesi

Yukarıdaki örnekte, öğrenci tablosundaki okul sütunu, okul tablosundaki id sütunuyla FOREIGN KEY olarak ilişkilendirildi. Bu sayede okul tablosundaki Uludağ Üniversitesi'nin id'si 1, Boğaziçi Üniversitesi'nin id'si 2 ve öğrenci tablosundaki öğrencilerin okulları açık bir şekilde belirtildi.


CHECK

MySQL veri tipleri belirli alanlara belirli verilerin girilmesini sağlar. Ancak bu verilerin özellikleri belirli sınırlamalara uymak zorundadır, bu da veri doğruluğunu sağlar. Veri doğruluğunu daha da arttırmak için veri sınırlamaları kullanılır. Bu sınırlamalar arasında CHECK sınırlaması da bulunur.

CHECK sınırlaması, girilen verilerin belirli bir şartı sağlaması gerektiğinde kullanılır. Örneğin, bir tabloya sadece 18 yaşından büyüklerin girebilmesi gerektiğinde CHECK sınırlaması kullanılır. Bu sayede verilerin doğruluğu artar. Bu sınırlama INTEGER, DECIMAL, FLOAT, CHAR, VARCHAR, TEXT ve BOOLEAN gibi veri tipleri için kullanılabilir.

Bir örnek vermek gerekirse, bir tabloda öğrenci isimleri bulunuyorsa ve tüm isimlerin 20 karakteri geçmemesi gerekiyorsa, CHECK sınırlaması aşağıdaki gibi yazılabilir:

Öğrenci İsmi Sınırlama
Ahmet Yılmaz CHECK (LENGTH(Öğrenci İsmi) <= 20)
Mehmet Öztürk CHECK (LENGTH(Öğrenci İsmi) <= 20)
Zeynep Şahin CHECK (LENGTH(Öğrenci İsmi) <= 20)

Bu örnekte, LENGTH() fonksiyonu ile öğrenci isimlerinin karakter sayısı hesaplanır ve 20 karakterden fazla olanlara izin verilmez. Bu sayede tablodaki verilerin doğruluğu arttırılmış olur.

Veri sınırlamaları ile birlikte kullanıldığında CHECK sınırlaması, verilerin doğruluğunu arttıran önemli bir unsurdur ve MySQL'de sıkça kullanılır.


DEFAULT

DEFAULT, bir veritabanı tablosunda bir veri alanının varsayılan değerini belirlemek için kullanılır. Bir veri alanına bir varsayılan değer atanması, kullanıcının veri girişini yapmadığı veya veri girişi yaparken bir değer belirlemediği durumlarda kullanılabilir.

DEFAULT sınırlaması, bir veri tipi ile birlikte kullanılabilir. Örneğin, bir çalışan tablosunda "çalışan yaşam döngüsü" sütununu varsayılan olarak "aktif" olarak ayarlayabilirsiniz. Bu, yeni bir çalışan eklendiğinde veya kullanıcı yanlışlıkla bir çalışanın durumunu boş bıraktığında, varsayılan değer "aktif" olarak ayarlanacaktır.

DEFAULT sınırlaması ayrıca NULL değerleri yerine belirli bir değere atanabilir. Örneğin, bir otomobil veritabanı tablosunda, bir otomobilin rengi, "mavi" olarak varsayılan olarak ayarlanabilir, bu da araç sahibinin renk seçeneği belirtmediği durumlarda kullanılacaktır.

Örnek Açıklama
CREATE TABLE ogrenciler (
id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
ad VARCHAR(50) NOT NULL,
soyad VARCHAR(50) NOT NULL,
notu INT DEFAULT 70);
Bu tabloda, "notu" sütunu varsayılan olarak 70 olarak ayarlanmıştır. Bir öğrencinin notunu belirtmediğinizde veya bir öğrenciye bir not verirken notu belirtmediğinizde, varsayılan notu 70 olacaktır.

Yukarıdaki örnekte, "notu" sütununun DEFAULT sınırlaması 70 olarak ayarlanmıştır. Bir öğrencinin notunu belirtmediğinizde veya bir öğrenciye bir not verirken notu belirtmediğinizde, varsayılan notu 70 olacaktır.

DEFAULT sınırlamasının kullanımı, verilerin doğru bir şekilde depolanmasını sağlarken, aynı zamanda veritabanını anlaşılırlığını arttırabilir ve veri girişindeki hataları azaltabilir. Ancak, DEFAULT sınırlamalarının doğru bir şekilde kullanılması için verilerin tüm yönleriyle dikkatlice incelenmesi ve analiz edilmesi gerekmektedir.