BOINEIN'i TINYINT (1) yerine kullanmanın faydası nedir?


16

MySQL kılavuzundan şöyle diyor:

BOOL, BOOLEAN

Bu tipler TINYINT (1) kelimesinin eş anlamlılarıdır. Sıfır değeri yanlış kabul edilir. Sıfır olmayan değerler doğru kabul edilir:

0Varsayılan değer olarak bir BOOLEAN sütunu oluşturdum . Sonra değeri olarak güncellerim 2. Mantıken, MySQL'in ya 0da 1bir boole olduğu için kabul etmesini beklerim. Ancak, MySQL bir hata vermedi veya güncellemeyi yapmama engel olmadı.

BOOLEAN, TINYINT (1) ile tam olarak aynı şekilde çalışırsa, TINYINT (1) veya BOOLEAN kullanmam fark eder mi?

Yanıtlar:


11

Bu ikisi gerçekten eşanlamlıdır, bu yüzden onları birbirinin yerine kullanabilirsiniz. Aralarında hiçbir fark görmeyeceksiniz.

Yalnızca 0 ve 1'e izin vermek istiyorsanız, bittürü yine de kullanabilirsiniz .


1
@QuestionOverflow BITBir ila altmış dört biti kompakt olarak tutan gerçekten biraz alan olduğunu unutmayın .
David Harkness

2

Başkalarıyla çalışıyorsanız (veya kendinize hatırlatmak istiyorsanız), BOOLEANverilerin yalnızca 1 veya 0 değerini almayı amaçladığını önermek için veri türünü kullanabilirsiniz .


0

Bana öyle geliyor ki bir fark var.

Kullandığım bir tabloda, bir dizin üzerinde bir tinyint olarak tanımlanan bir sütun var. Aşağıdaki sorguyu "sütunun doğru olduğu tablodan select * açıkla" çağırdığımda, tablodaki tüm satırları okuyacağını gösterir ("possible_keys" ve "ref" sütunları, endeksi).

Sorguyu, "olası anahtarlar" ve "ref" sütunlarına atanan değerler ve "satırlar" çok daha düşük bir sayıya ayarlanacak şekilde, sütun = 1 olan tablodan "açıkla seç * olarak değiştirin.

Ayrıca "true" yerine "false" ve 1'i 0 ile değiştirmeyi denedim ve karşılaştırılabilir sonuçlar aldım.

Bir adım ileri gidip bir tinyint'ten int'e geçtim ve hiçbir fark yaratmadı.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.