Yanıtlar:
TINYINT, 8 bitlik bir tam sayı değeridir, bir BIT alanı 1 bit, BIT (1) ve 64 bit, BIT (64) arasında saklayabilir. Boole değerleri için, BIT (1) oldukça yaygındır.
Gönderen Sayısal Türlerinin Genel Bakış ;
BIT [(M)]
Bir bit alanı türü. M, 1'den 64'e kadar değer başına bit sayısını gösterir. M atlanırsa varsayılan 1'dir.
Bu veri türü MyISAM için MySQL 5.0.3'e eklendi ve 5.0.5'te MEMORY, InnoDB, BDB ve NDBCLUSTER olarak genişletildi. 5.0.3'ten önce, BIT, TINYINT (1) ile eşanlamlıdır.
TINYINT [(M)] [İMZASIZ] [ZEROFILL]
Çok küçük bir tam sayı. İşaretli aralık -128 ila 127'dir. İşaretsiz aralık 0 ila 255'tir.
Ayrıca şunu da göz önünde bulundurun;
BOOL, BOOLE
Bu türler TINYINT (1) ile eşanlamlıdır. Sıfır değeri yanlış kabul edilir. Sıfır olmayan değerler doğru kabul edilir.
boolean
Gerçekten biraz da olsa bir bayt alacağını söylüyorsunuz , yani bir BIT (1) v5.0.3'ten sonra daha iyidir?
BOOL
/ yerine BOOLEAN
takma adlar . Tabii, semantik olarak bir bütün byte karşılık ancak yukarı tüm son çok daha uygun olacaktır. TINYINT(1)
BIT
BIT
Tüm bu teorik tartışmalar harikadır, ancak gerçekte, en azından MySQL kullanıyorsanız ve gerçekten SQLServer için, boole'larınız için ikili olmayan verileri kullanmak en iyisidir Verilerin çıktısını alma, sorgulama vb. MySQL ve SQLServer arasında birlikte çalışabilirliği sağlamaya çalışıyorsanız (yani ikisi arasında verileri senkronize ediyorsanız) özellikle önemlidir, çünkü BIT veri türünün işlenmesi ikisinde farklıdır. Yani pratikte sayısal bir veri tipine bağlı kalırsanız çok daha az sorun yaşarsınız. MySQL'in TINYINT (1) olarak saklanan BOOL veya BOOLEAN ile yapışmasını tavsiye ederim. MySQL Workbench ve MySQL Administrator'ın BIT veri tipini görüntüleme şekli bile hoş değil (ikili veriler için küçük bir sembol).
BIT yalnızca 0 ve 1'e izin vermelidir (ve alan NOT NULL olarak tanımlanmamışsa NULL). TINYINT (1), işaretsiz olup olmamasına bağlı olarak tek bir bayt, -128..127 veya 0..255 olarak saklanabilen herhangi bir değere izin verir (1, yalnızca tek bir rakam kullanmayı düşündüğünüzü gösterir, ancak daha büyük bir değer kaydetmenizi engellemez).
5.0.3 daha eski sürümler için BIT böylece var, TINYINT (1) olarak yorumlanır hiçbir orada farkı.
BIT'de "bu bir boolean" semantik vardır ve bazı uygulamalar TINYINT (1) 'i aynı şekilde dikkate alır (MySQL'in bunu işleme şekli nedeniyle), bu nedenle uygulamalar, türü kontrol ederlerse sütunu bir onay kutusu olarak biçimlendirebilirler ve buna göre bir formata karar verin.
Yanlış olabilir ama:
Tinyint, 0 ile 255 arasında bir tam sayıdır
bit 1 veya 0'dır
Bu nedenle bana göre biraz mantıksal seçim
Tecrübelerime dayanarak size BIT'in linux işletim sistemi türlerinde (örneğin Ubuntu) sorunları olduğunu söylüyorum. Veritabanımı pencerelerde geliştirdim ve her şeyi linux üzerinde konuşlandırdıktan sonra, BIT DATA TYPE olan tablolardan eklenen veya seçilen sorgularla ilgili sorunlar yaşadım.
Bit şimdilik güvenli değil. Tinyint (1) olarak değiştirdim ve mükemmel çalıştım. Demek istediğim, sadece 1 mi yoksa 0 mı olduğunu ayırt etmek için bir değere ihtiyacınız var ve tinyint (1) bunun için uygun