MySQL veritabanı yönetim sistemi, farklı veri tiplerini barındırmak için çeşitli veri tipi seçenekleri sunar Bu veri tipleri; sayısal, tarih-zaman ve metinsel veri tipleri olarak üç ana kategoride incelenebilir Sayısal veri tiplerinin INT, FLOAT, DOUBLE, DECIMAL gibi özellikleri ve sınırlamaları, tarih-zaman veri tiplerinin DATE, TIME, DATETIME, TIMESTAMP gibi kullanım örnekleri ve metinsel veri tiplerinin CHAR, VARCHAR, TEXT, BLOB gibi karşılaştırmaları ve kullanım örnekleri bu kategorilere dahildir
Ayrıca, veritabanındaki verilerin daha etkili bir şekilde organize edilmesi için veri tipleri farklı sınırlamalara sahip olabilir Bu sınırlamalar arasında sütun boyutu, maksimum değer, minimum değer gibi sütun sınırlamaları ve primary key, unique, foreign key, not null gibi kısıtlamalar yer alabilir Bu veri tipleri ve sınırlamalar, bir veri tabanı uygulamasının verim

MySQL veritabanı yönetim sistemi, farklı veri tiplerini barındırmak için çeşitli veri tipi seçenekleri sunar. Bu veri tipleri; sayısal, tarih-zaman ve metinsel veri tipleri olarak üç ana kategoride incelenebilir. Sayısal veri tiplerinin INT, FLOAT, DOUBLE, DECIMAL gibi özellikleri ve sınırlamaları, tarih-zaman veri tiplerinin DATE, TIME, DATETIME, TIMESTAMP gibi kullanım örnekleri ve metinsel veri tiplerinin CHAR, VARCHAR, TEXT, BLOB gibi karşılaştırmaları ve kullanım örnekleri bu kategorilere dahildir.
Ayrıca, veritabanındaki verilerin daha etkili bir şekilde organize edilmesi için veri tipleri farklı sınırlamalara sahip olabilir. Bu sınırlamalar arasında sütun boyutu, maksimum değer, minimum değer gibi sütun sınırlamaları ve primary key, unique, foreign key, not null gibi kısıtlamalar yer alabilir. Bu veri tipleri ve sınırlamalar, bir veri tabanı uygulamasının verimliliğini ve doğruluğunu artırmada önemli bir rol oynar.
Sayısal Veri Tipleri
Sayısal veri tipleri, MySQL'de sıklıkla kullanılan ve sayısal değerlerin depolanmasında kullanılan veri tipleridir. INT, FLOAT, DOUBLE ve DECIMAL gibi sayısal veri tipleri, özellikleri ve sınırlamaları açısından birbirinden farklıdır.
INT: Tamsayıları depolanmak için kullanılır ve en yaygın kullanılan sayısal veri tipidir. INT, -2147483648 ila 2147483647 arasındaki tam sayıları depolayabilir.
FLOAT: Ondalıklı sayıları depolamak için kullanılır. FLOAT, 0.000000 ile 3.402823466E+38 arasındaki sayıları depolayabilir. Ancak, FLOAT'un doğruluğu, sınırların ötesine geçtikçe azalabilir.
DOUBLE: FLOAT ile benzer özelliklere sahiptir ancak daha yüksek bir doğruluk sağlar. DOUBLE, 0.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 ile 1.7976931348623157E+308 arasındaki sayıları depolayabilir.
DECIMAL: Çok büyük sayılar veya hassas parametreler gerektiren finansal uygulamalar için tercih edilir. DECIMAL, birçok sayıyı depolayabilir ve bu sayılar noktadan önce veya sonra ondalık basamaklar içerebilir.
Veri Tipi | Minimum Değer | Maksimum Değer |
---|---|---|
INT | -2147483648 | 2147483647 |
FLOAT | 0.000000 | 3.402823466E+38 |
DOUBLE | 0.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 | 1.7976931348623157E+308 |
DECIMAL | -10^38 + 1 | 10^38 - 1 |
Sayısal veri tipleri kullanılmadan önce, ilgili tablonun gereksinimlerine bağlı olarak en uygun veri tipinin seçilmesi önemlidir. Bu, veritabanının doğruluğunu korumak ve veri bütünlüğünü sağlamak için gereklidir.
Tarih ve Zaman Veri Tipleri
Tarih ve zaman veri tipleri, verileri tarih ve zaman formatında depolamak için kullanılır. Bu veri tipleri, DATE, TIME, DATETIME ve TIMESTAMP olarak adlandırılır. DATE veri tipi, formatında tarih bölümü (yıl-ay-gün) olan verileri tutar. TIME veri tipi, saat, dakika ve saniye bölümlerini içeren zamanı depolar. DATETIME veri tipi, hem tarih hem de zamanı içeren verileri tutar. TIMESTAMP veri tipi ise genellikle bir olayın zaman damgasını tutmak için kullanılır.
Birçok uygulama, özellikle rezervasyon ve randevu sistemleri gibi, tarih ve zaman veri tiplerini kullanarak verileri birleştirir ve saklar. Tarih ve zaman veri tipleri yalnızca belirli değerler aralığında saklandığından diğer veri tiplerinden daha fazla sınırlamaya sahiptirler. Örneğin, DATE veri tipi, yılın 9999'a veya günün 31'ine kadar olan tarihleri desteklemez.
Veri Tipi | Sınırlama |
---|---|
DATE | 1000-01-01'den 9999-12-31'e kadar olan tarihler |
TIME | '-838:59:59' ile '838:59:59' aralığındaki zamanlar |
DATETIME | 1000-01-01 00:00:00'dan 9999-12-31 23:59:59'a kadar olan tarih/zamanlar |
TIMESTAMP | 1970-01-01 00:00:01'den 2038-01-19 03:14:07'a kadar olan tarih/zamanlar |
Özetle, tarih ve zaman veri tipleri, verileri tarih ve zaman formatında depolamak için kullanılır ve belirli sınırlamalara sahiptir. İyi bir veritabanı tasarımı için doğru tarih ve zaman veri tipini seçmek önemlidir.
Metinsel Veri Tipleri
MySQL'de metin ve karakter verileri saklamak için dört farklı veri tipi vardır. Bunlar, CHAR, VARCHAR, TEXT ve BLOB'dur.
Veri Tipi | Özellikleri |
---|---|
CHAR | Sabit uzunluklu bir karakter dizisi alır. Boşlukları da dahil olmak üzere belirtilen uzunluğa sıkıştırılır. |
VARCHAR | Değişken uzunluklu bir karakter dizisi alır. Belirtilen uzunlukta karakterleri saklar. |
TEXT | Değişken uzunluklu bir metin alır. Maksimum uzunluğu yaklaşık 65,000 ila 4 milyar arasında değişebilir. |
BLOB | Binary Large Object (BLOB) olarak adlandırılan bu veri tipi, özellikle resim, video ve diğer büyük dosyaları saklamak için kullanılır. |
CHAR ve VARCHAR arasındaki en büyük fark, CHAR'ın sabit uzunluğa sahip olmasıdır. Bu nedenle, saklanan tüm veriler belirtilen uzunluğa sıkıştırılır. Diğer yandan, VARCHAR değişken uzunluklu bir veri tipidir ve belirtilen uzunlukta karakterleri saklar.
TEXT daha büyük uzunluklar için idealdir. Herhangi bir boyutta metin alabilir ve birçok karakter dizisi saklayabilir. BLOB ise, özellikle görsel verileri saklamak için kullanılır. En büyük boyutta olabilir ve değişken uzunluklu bir veri tipidir.
Veri tipleri, hangisinin kullanılacağına karar vermeden önce dikkatle düşünülmelidir. Kullanılacak metnin uzunluğu, verinin türü ve depolanacak verilerin büyüklüğü gibi faktörler göz önünde bulundurulmalıdır.
MySQL veritabanında veri tipleri, verilerin türüne göre kendilerine özgü sınırlamalara sahiptir. Bu nedenle, doğru veri tipi seçmek ve verileri düzenlemek son derece önemlidir. Veritabanlarında, veri tiplerinin sınırları bir tablodaki sütunların standartlarını belirler. Sütun sınırları iki şekildedir: boyut ve maksimum / minimum değerleri.
Örneğin, bir sütunun boyutu, bu sütunda depolanabilecek verinin maksimum uzunluğunu belirler. Aynı şekilde, bir değişkenin minimum ve maksimum değerleri atanır. Bu değerler, sütunun türü ve sınırlama değerleriyle tutarlı olmalıdır.
Ayrıca, 'kısıtlama' konsepti de önemlidir. 'Kısıtlama' deyimi, verilerin bütünlüğünü korumak için kullanılır. Bu kısıtlamalar 'primary key, unique, foreign key' ve 'not null' gibi değerlerdir. Primary key, bir tablonun her satırını eşsiz bir şekilde tanımlar ve yalnızca bir kez kullanılabilir. Unique kısıtlaması, bir sütunun yalnızca benzersiz, tekrar etmeyen değerleri içermesini gerektirir. Burada kullanıcılar tarafından veri girilirken veri bütünlüğünü koruyan bir özelliğe sahiptir. Foreign key veya dış anahtar, farklı tablolardaki kayıtları birbirine bağlamak için kullanılır.
Ayrıca, 'not null' kısıtlaması, sütunun boş olamayacağını belirtir. Yani verilerin mutlaka bir değere sahip olması gerektiği anlamına gelir. Verileri işlerken bu sınırlamaların dikkate alınması, veritabanının doğru şekilde oluşturulması ve veri bütünlüğünün korunması açısından son derece önemlidir.
Sütun Sınırlamaları
MySQL veritabanlarında sütunların sınırlanması, verilerin doğruluğunu ve bütünlüğünü korumak açısından oldukça önemlidir. Sütun boyutu, maksimum değer ve minimum değer gibi sınırlamalar, veri tipine göre farklılık gösterebilir.
İlk olarak sütun boyutu sınırlamaları ele alınabilir. Örneğin, bir kullanıcının adı ve soyadı bilgileri için ayrılan sütunlar, genellikle VARCHAR veri tipiyle oluşturulur. Bu sütunların boyutu, kaç karakterlik bir veri alacağına karar veren bir PARAMETER ile belirlenir. Örneğin, VARCHAR(50) belirtilen bir sütun, en fazla 50 karakterlik bir veri alabilir.
Ayrıca, sütunlara maksimum ve minimum değerler atanabilir. Bu sınırlamalar, sayısal veri tipleri için oldukça kullanışlıdır. Örneğin, bir kullanıcının yaşı için ayrılan sütun, INT veri tipiyle oluşturulabilir ve minimum değeri 18, maksimum değeri ise 120 olarak belirlenebilir. Bu sınırlamalar, yanlış veri girişlerini engelleyerek veri doğruluğunu sağlar.
Sınırlamaların ayarlanması, SQL kodlaması sırasında gerçekleşir. Örneğin, aşağıdaki kod bloğundaki "CHECK" deyimi, sütunun alabileceği değer aralığını sınırlar:
CREATE TABLE ogrenci ( ogrenci_id INT PRIMARY KEY, ogrenci_ad VARCHAR(50), yas INT CHECK (yas BETWEEN 18 AND 120));
Bu örnekte, "yas" sütunu, 18 ve 120 arasındaki değerleri alabilir.
Sonuç olarak, sütun sınırlamaları veritabanlarının güvenilirliğini arttırır. Sınırlamaları belirlerken, veri tipi ve verinin yapısı göz önünde bulundurulmalıdır. Bu sayede, veritabanındaki verilerin doğruluğu ve bütünlüğü korunmuş olur.
Kısıtlamalar
MySQL veritabanı oluşturma ve yönetme süreçlerinde veri tipleri kadar verinin sınırlanması ve korunması da oldukça önemlidir. Bu nedenle, MySQL'de kullanılan sütun sınırlamaları ve kısıtlamaları göz önünde bulundurmak gereklidir.
Primary key, unique, foreign key, not null gibi kısıtlamalar sütunlardaki verilerin belli sınırlar içerisinde olmasını sağlar. Örneğin, primary key kısıtlaması belirli bir tablodaki satırların benzersiz bir şekilde tanımlanmasını ve böylece veri bütünlüğünün korunmasını sağlar. Unique kısıtlaması ise farklı satırların aynı değere sahip olmasını engeller. Foreign key kısıtlaması, bir tablodaki sütunun diğer bir tablodaki bir primary key'e bağlanmasını sağlar ve böylece veri bütünlüğü sağlar.
Not null kısıtlaması ise bir sütunun boş bırakılamayacağını belirler. Örneğin, bir kullanıcının kayıt formunda e-posta adresi vermesi zorunlu ise, e-posta sütunu not null kısıtlaması ile tanımlanabilir.
Veri tipleri ve kısıtlamaların doğru bir şekilde kullanımı, veritabanı yapılarının düzgün çalışmasını sağlar ve veri kayıplarını önler. Özellikle büyük ve karmaşık veritabanlarında bu sınırlamaların doğru bir şekilde uygulanması oldukça önemlidir.
Primary Key
Primary key, bir veri tabanında bulunan kayıtların benzersiz olarak tanımlanması için kullanılan bir sınırlamadır. Bu sınırlama, bir veya birden fazla sütunda tanımlanabilir. Örneğin, bir müşteri tablosunda müşteri numarası sütunu primary key olarak tanımlanarak, her müşterinin benzersiz bir numarası olması sağlanabilir.
Bir veri tabanında, primary key sayesinde bir kaydın benzersiz olarak tanımlanması mümkün hale gelir. Bu sayede kayıtlar arasında karışıklık oluşması engellenir ve verilerin doğru şekilde işlenebilmesi sağlanır. Ek olarak, primary key sayesinde veri tabanında arama ve sıralama işlemleri daha hızlı ve etkili bir şekilde gerçekleştirilebilir.
- Tek sütunlu primary key: Veri tablolarında sadece bir sütunun primary key olarak tanımlanması yaygın bir kullanım şeklidir. Örneğin, bir sipariş tablosunda sipariş numarası sütunu primary key olarak tanımlanabilir.
- Çok sütunlu primary key: Bazı durumlarda, sadece bir sütunun primary key olarak yeterli olmadığı durumlar oluşabilir. Bu durumda, birden fazla sütunun birleştirilmesi ile oluşan primary key kullanılabilir. Örneğin, bir ürün tablosunda ürün kodu ve renk sütunları birleştirilerek primary key olarak tanımlanabilir.
- Otomatik artan primary key: Birçok veri tabanı programı, kayıtlar için otomatik bir primary key oluşturma özelliği sunar. Bu özellik sayesinde, her yeni kayıt birbirinden farklı bir primary key değeri alır.
Foreign Key
Foreign Key Nedir?
MySQL'deki veritabanlarındaki ilişkisel tablolar arasında bir bağlantı veya bağıntı oluşturmak için kullanılan bir özelliktir. Foreign key, bir tablodaki bir sütuna referans alarak, diğer bir tablodaki sütunun tekil değerlerine bağlanır. Bu özellik, bir tablonun veri bütünlüğünü koruduğu için oldukça önemlidir.
Veri Bütünlüğü Açısından Önemi
Veri bütünlüğü, veritabanı tablolarındaki verilerin doğruluğunu ve tutarlılığını garanti etmek için kullanılan bir kavramdır. Foreign key kullanarak, bir tablodaki bir sütunun tekil değerlerine bağlanarak, veri bütünlüğü korunabilir. Diyelim ki, bir tablodaki sütunda bir kullanıcının benzersiz kimlik numarası var ve başka bir tabloda bu kimlik numarasına göre kullanıcının siparişleri depolanıyor. Eğer bir kullanıcının kimliği bir tablodan silinirse, foreign key kullanımı sayesinde, diğer tablodaki kullanıcının siparişleri de otomatik olarak silinir ve veri bütünlüğü korunur.
Kullanım Örnekleri
Foreign key kullanarak, ilişkisel tablolar arasında bağlantı veya bağıntı oluşturmak, gerektiği kadar yararlıdır. Aşağıda, foreign key kullanımının bazı örnekleri verilmiştir:
- Bir tabloda herhangi bir ürünün ID'si depolanırken, başka bir tabloda bu ürünlerin stok miktarları depolanabilir. ID, foreign key olarak kullanılabilir.
- Bir tabloda kullanıcı bilgileri depolanırken, diğer bir tabloda bu kullanıcıların sipariş bilgileri depolanabilir. Kullanıcı kimliği, foreign key olarak kullanılabilir.
- Bir tabloda herhangi bir departmanın ID'si depolanırken, başka bir tabloda bu departmanlarda çalışanların bilgileri depolanabilir. Departman ID'si, foreign key olarak kullanılabilir.
Foreign key, veritabanı tasarımını büyük ölçüde iyileştiren bir özelliktir. Verilerin doğruluğunu ve tutarlılığını korumak, veritabanlarındaki veri bütünlüğü açısından son derece önemlidir.
Unique
Unique kısıtlaması nedir ve nasıl kullanılır, nasıl farklılaştırılır, örnekler ile açıklama
Unique kısıtlaması, bir sütundaki verilerin yalnızca bir kez görünmesini sağlayan bir sınırlamadır. Bu, sütundaki tüm verilerin birbirinden farklı olmasını garanti eder. Veri bütünlüğünü korumak için kullanılır ve veri tabanındaki verilerin tutarlı kalmasını sağlar. Ayrıca, veritabanındaki birden fazla kaydın birbirinden farklı olduğundan emin olmak için de kullanılır.
MySQL'de, unique özelliğinin kullanımı oldukça basittir. Bir tablo oluşturulurken sütuna "unique" özelliği eklenir. Örneğin, bir kullanıcı tablosunda kullanıcı adlarının yalnızca bir kez kullanılmasını istiyorsak, kullanıcı adı sütununa unique özelliği ekleyebiliriz.
Kullanıcı ID | Kullanıcı Adı | |
---|---|---|
1 | john_doe | john_doe@example.com |
2 | jane_smith | jane_smith@example.com |
3 | john_doe | john_doe@example.com |
Yukarıdaki tabloda, 1. ve 2. kullanıcılar farklı olduğu için kaydedildiler. Ancak John Doe adına sahip ikinci bir kullanıcı eklersek, unique sınırlaması nedeniyle eklenemez ve hata iletisi alırız.
Unique sınırlaması ayrıca sütunlara ekstra özelliklerle de uygulanabilir. Örneğin, bir sütunun yalnızca NULL olmayan, yani boş olmayan değerler almasını isterseniz, "NOT NULL" ile unique sınırlamasını birleştirebilirsiniz. Bu, hem veri bütünlüğünü hem de kaynakların en iyi şekilde kullanımını sağlar.
Not Null
MySQL'de Not Null sütun sınırlaması, bir sütunun mutlaka değer içermesi gerektiğini belirtir. Böylece, bir sütunun değeri her zaman girilir ve null değerleri kullanılamaz. Bu sınırlama, tablodaki verilerin bütünlüğünü korumaya yardımcı olur ve hatalı veya eksik veri girişlerini azaltır.
Not Null sınırlaması özellikle Primary Key, Foreign Key veya UNIQUE kısıtlamaları ile birlikte kullanılır. Örneğin, bir kullanıcının kaydı oluşturulurken, kullanıcı adı veya şifre gibi zorunlu alanlara Not Null kısıtlamaları eklenir. Böylece, gerekli bilgilerin eksiksiz girilmesi sağlanır ve veri bütünlüğü korunur.
Not Null sınırlaması, CREATE TABLE veya ALTER TABLE yoluyla eklenir. Aşağıdaki örnek ile sütun düzenlemesi yapılabilir:
Sütun Adı | Veri Tipi | Not Null |
---|---|---|
id | INT | Not Null |
username | VARCHAR(50) | Not Null |
password | VARCHAR(50) | Not Null |
Bu örnekte, id, username ve password sütunlarına Not Null kısıtlaması eklenmiştir. Kullanıcı adı ve şifre, zorunlu alanlar olduğu için, null değerleri kabul edilmez.
Not Null sınırlaması, veritabanı uygulamalarında oldukça önemlidir ve veri bütünlüğünü sağlamada büyük bir role sahiptir. Bu sınırlama ile yanlış veya eksik veri girişleri azaltılabilir ve veritabanı güvenliği artırılabilir.
Örnek Senaryolar
MySQL veri tipleri, geniş bir yelpazede kullanım örnekleri sunar. İster küçük bir blog sitesi, ister büyük bir e-ticaret platformu olsun, veri tabanlarından verilerin doğru şekilde işlenmesi, depolanması, sorgulanması ve birleştirilmesi hayati önem taşır. İşte, farklı senaryolarda veri tiplerinin kullanım örnekleri ve sınırlamalarının uygulanması:
- Bir müzik mağazası, müşterilerin albümleri arayabileceği ve satın alabileceği bir web sitesi oluşturmak istiyor. Albümleri oluşturmak için, VARCHAR veri tipi ile albüm adı, INT veri tipi ile üretim yılı ve DOUBLE veri tipi ile fiyat kullanılır. Bu senaryoda, albüm adı ve fiyat değişebilirken, üretim yılı değişmez. Yani, bu sütunlar VARCHAR ve DOUBLE için null olabilirken, INT için not null olacak şekilde sütun sınırlamaları getirilebilir.
- Bir otel, müşterilerin rezervasyon yapabileceği bir web sitesi istiyor. Rezervasyonlar iki tarihi arasında ve oda tipine göre değişiyor. Bu senaryoda, tarih sütunları DATE ve TIME veri tipleri kullanarak kaydedilebilir. Oda tipi içinse VARCHAR kullanılabilir. Sınırlamalar olarak, oda tipi sütunu unique olmalıdır ve tarih sütunları için minimum değer olarak sadece günümüzdeki ve sonraki tarihler kabul edilebilir.
Müşteri Adı | Email Adresi | Şifre | Doğum Tarihi | Telefon Numarası |
---|---|---|---|---|
Ahmet | ahmet@mail.com | password | 2000-01-01 | 123456789 |
Mehmet | mehmet@mail.com | strongpassword | 1995-05-10 | 987654321 |
Bir kullanıcı giriş sistemine sahip bir web sitesi, müşterilerin kullanıcı adı ve şifresini kaydetmek zorundadır. Bu senaryoda, VARCHAR veri tipi ile kullanıcı adı ve şifre kaydedilebilir. Ancak, şifre en az 8 karakter olmalıdır ve not null sınırlaması getirilmelidir. Ayrıca, doğum tarihi sütunu için minimum değer olarak, en küçük yaş sınırını geçmiş tarih verilmelidir. Telefon numarası sütunu için ise, değerin sadece rakamlardan oluşması sağlanmalıdır.