MySQL

MySQL ENUM Kullanımı

Özet: bu yazıda, numaralandırma değerlerini kapsayan sütunları tanımlamak için MySQL ENUM veri türünü nasıl kullanacağınızı öğreneceksiniz.

MySQL ENUM veri türüne giriş

MySQL’de bir ENUM, değeri sütun oluşturma sırasında tanımlanan izin verilen değerler listesinden seçilen bir dize nesnesidir.

ENUM veri türü aşağıdaki avantajları sağlar:

  • Kompakt veri depolama. MySQL ENUM, dize değerlerini temsil etmek için sayısal dizinleri (1, 2, 3,…) kullanır.
  • Okunabilir sorgular ve çıktılar.

Bir ENUM sütunu tanımlamak için aşağıdaki söz dizimini kullanırsınız:

Bu sözdiziminde üçten fazla numaralandırma değerine sahip olabilirsiniz. Ancak, numaralandırma değerlerinin sayısını 20’nin altında tutmak iyi bir uygulamadır.

Aşağıdaki örneği görelim.

Biliyoruz ki, cinsiyetlerde iki tane veriyi saklarız. KADIN yada ERKEK değerleri için ENUM kullanabiliriz.

Cinsiyet sutunu yanlızca erkek yada kadın değerlerini kabul eder. Fakat MySQL arkaplanda bu değerleri sayısal değerler ile eşleştirir. KADIN -> 1, ERKEK ->2, şeklinde eşleştirecektir.

MySQL ENUM değerlerini ekleme

Bir ENUM sütununa veri eklemek için, önceden tanımlanmış listedeki numaralandırma değerlerini kullanırsınız. Örneğin, aşağıdaki ifade kisiler tablosuna yeni bir satır ekler.

Numaralandırma değerlerinin yanı sıra, bir ENUM sütununa veri eklemek için numaralandırma elemanının sayısal dizinini de kullanabilirsiniz. Örneğin, aşağıdaki ifade KADIN değerine sahip yeni bir kişi ekler:

MySQL ENUM değerlerini filtreleme

Aşağıdaki açıklama tüm kadın değerlerini seçer:

Numaralandırma üyesi ‘KADIN’ ile eşlendiğinden, aşağıdaki sorgu aynı sonuç kümesini döndürür:

MySQL ENUM dezavantajları

MySQL ENUM aşağıdaki dezavantajlara sahiptir:

  • Numaralandırma üyelerini değiştirmek, kaynaklar ve zaman açısından maliyetli olan ALTER TABLE ifadesini kullanarak tüm tablonun yeniden oluşturulmasını gerektirir.
  • Numaralandırma listesinin tamamını almak karmaşıktır çünkü information_schema veritabanına erişmeniz gerekir:
  • ENUM SQL standardı olmadığı ve pek çok veritabanı sisteminin desteklemediği için diğer RDBMS’ye bağlantı yapılması sorun olabilir.
  • Numaralandırma listesine daha fazla özellik eklemek mümkün değildir. Her bir öncelik için örneğin Yüksek (24 saat), Orta (1-2 gün), Düşük (1 hafta) bir hizmet sözleşmesi eklemek istediğinizi varsayalım, ENUM ile mümkün değildir. Bu durumda, öncelikler listesini (örneğin öncelikler (id, isim, siralama, aciklama) saklamak için ayrı bir tabloya sahip olmanız gerekir.
  • Arama tablosu ile karşılaştırıldığında (cinsiyet), bir numaralandırma listesi tekrar kullanılamaz. Örneğin, musteriler adında yeni bir tablo oluşturmak ve cinsiyet listesini yeniden kullanmak istiyorsanız, bu mümkün değildir.
    Bu yazıda, size MySQL ENUM Nedir sorusuna cevap verip, veri türünü ve numaralandırma değerlerini depolayan sütunları tanımlamak için nasıl kullanılacağını açıkladık.

 

1 Yorum

Yorum yapmak için tıklayın