int(11)
Mysql cinsinden sütunun bayt cinsinden büyüklüğü nedir ?
Ve bu sütunlarda saklanabilecek maksimum değer?
int(11)
Mysql cinsinden sütunun bayt cinsinden büyüklüğü nedir ?
Ve bu sütunlarda saklanabilecek maksimum değer?
Yanıtlar:
Bir INT
uzunluk belirtilirse her zaman 4 bayt olur.
TINYINT
= 1 bayt (8 bit)SMALLINT
= 2 bayt (16 bit)MEDIUMINT
= 3 bayt (24 bit)INT
= 4 bayt (32 bit)BIGINT
= 8 bayt (64 bit).Uzunluk, mysql komut satırı istemcisiyle veri seçerken kaç karakter kullanılacağını belirtir. 12345 int(3)
, hala 12345 olarak gösterilir, ancak int(10)
hala 12345 olarak görüntüleniyorsa depolanırsa , ilk beş basamağı doldurma seçeneğiniz olur. Örneğin, eklediyseniz ZEROFILL
0000012345 olarak görüntülenir.
... ve maksimum değer 2147483647 (İmzalı) veya 4294967295 (İmzasız) olacaktır
INT ( x ) sadece gösterim açısından fark yaratacaktır , yani sayıyı x hanede gösterecek ve 11 ile sınırlandırılmayacaktır. Bunu kullanarak eşleştirin ZEROFILL
.
Yani, herhangi bir sayıdaki x içinINT(x)
depolanmış değer daha az basamak eğer x , ZEROFILL
sıfır başa eklemek olacaktır.
INT (5) zerofill gösterecektir 32 saklanan değeri ile 00.032
INT (5) 32 saklanan değeri ile gösterilir 32
INT gösterecektir 32 depolanmış değerle 32
saklanan değerin x değerinden daha fazla basamağı varsa, olduğu gibi gösterilir.
INT (3) zerofill gösterir 250000 depolanan değeri ile 250000
INT (3) gösterir 250000 depolanan değeri ile 250000
INT gösterir 250000 depolanan değeri ile 250.000
Veritabanında saklanan gerçek değer etkilenmez, boyut hala aynıdır ve herhangi bir hesaplama normal şekilde davranacaktır.
Bu, BIGINT, MEDIUMINT, SMALLINT ve TINYINT için de geçerlidir.
ZEROFILL
.
Buraya göre , maksimum değer ve min değeri int(11)
olan 32 bit alan olan 4 bayt alan alacaktır . Bir bit işareti içindir.2^(31) = 2147483648
-2147483648
Diğerlerinin de söylediği gibi, sütunun depolayabileceği minimum / maksimum değerler ve baytlarda ne kadar depolama alanı alacağı, yalnızca tipe göre belirlenir, uzunluk değil.
Bu yanıtların çoğu, (11)
parçanın yalnızca tam olarak doğru olmayan, ancak çoğunlukla ekran genişliğini etkilediğini söylüyor .
Bir tanım int(2)
ile belirtilen hiçbir zerofill yapacaktır:
100
100
ne zaman çıkışı (değil 0
veya 00
)Sıfır dolgu da belirtilirse(2)
yapılacak tek şey :
1
gösterilecektir 01
.Tüm nüansları görmenin en iyi yolu koşmaktır:
CREATE TABLE `mytable` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`int1` int(10) NOT NULL,
`int2` int(3) NOT NULL,
`zf1` int(10) ZEROFILL NOT NULL,
`zf2` int(3) ZEROFILL NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO `mytable`
(`int1`, `int2`, `zf1`, `zf2`)
VALUES
(10000, 10000, 10000, 10000),
(100, 100, 100, 100);
select * from mytable;
hangi çıktı:
+----+-------+-------+------------+-------+
| id | int1 | int2 | zf1 | zf2 |
+----+-------+-------+------------+-------+
| 1 | 10000 | 10000 | 0000010000 | 10000 |
| 2 | 100 | 100 | 0000000100 | 100 |
+----+-------+-------+------------+-------+
Bu yanıt Linux için MySQL 5.7.12'ye göre test edilmiştir ve diğer uygulamalar için değişebilir veya değişmeyebilir.
Mysql cinsinden int (11) sütununun bayt cinsinden boyutu nedir?
(11)
- int
veri türünün bu özelliğinin sütun boyutuyla ilgisi yoktur. Sadece tamsayı veri türünün görüntüleme genişliğidir. Gönderen 11.1.4.5. Sayısal Tür Nitelikleri :
MySQL, isteğe bağlı olarak, türün temel anahtar sözcüğünü izleyen parantez içindeki tamsayı veri türlerinin görüntüleme genişliğini belirtmek için bir uzantıyı destekler. Örneğin, INT (4), ekran genişliği dört basamaklı bir INT belirtir.
Bunun için iyi bir açıklama burada
bulunabilir
: Özetlemek gerekirse: int (N) cinsinden N sayısı, varchar (N) durumunda olduğu gibi, genellikle sütun için izin verilen maksimum boyutla karıştırılır.
Ancak, Tamsayı veri türlerinde durum böyle değildir - parantez içindeki N sayısı sütun için maksimum boyut değildir, ancak MySQL'e tablonun verileri MySQL aracılığıyla görüntülendiğinde sütunun hangi genişlikte görüntüleneceğini gösteren bir parametredir. konsolu (ZEROFILL özelliğini kullanırken).
Köşeli parantez içindeki sayı, MySQL'e gelen tamsayıların kaç tane sıfırlanacağını bildirir. Örneğin: INT (5) olarak ayarlanmış bir sütunda ZEROFILL kullanıyorsanız ve 78 sayısı eklenmişse, sayı köşeli parantez içindeki sayıyı karşılayana kadar MySQL bu değeri sıfırlarla doldurur. yani 78 00078, 127 ise 00127 olacaktır. Özetlemek gerekirse: Parantez içindeki sayı gösterim amacıyla kullanılır.
Bir şekilde, ZEROFILL özelliğini kullanmadığınız sürece parantez içindeki sayı işe yaramaz.
Yani int için boyut aynı kalır, yani imzalı için -2147483648 ila 2147483648 ve imzasız için 0 ila 4294967295(~ 2.15 milyar ve 4.2 milyar, bu da geliştiricilerin 2 milyardan fazla satır içermedikçe veritabanını etkilemediği için parantez içindeki N Numara'nın arkasındaki hikayeden habersiz kalmasının nedenlerinden biridir) ve bayt olarak olurdu 4 bayt .
Tamsayı Türlerinin boyutu / aralığı hakkında daha fazla bilgi için MySQL Kılavuzuna bakın
Bu cevabın görülmesi olası olmasa da, aşağıdaki açıklamaların yapılmaya değer olduğunu düşünüyorum:
DETAY BİTİĞİ
ekran genişliği, görünüşe göre, sıfır doldurulmuş bir sayıda kaç tane sıfır gösterileceğiyle ilgili bazı meta veriler sağlamayı amaçlamaktadır.
Bu sayı, belirtilen görüntüleme genişliğinin üzerine çıkarsa, sorgudan döndürülen sayının uzunluğunu sınırlamaz. MySQL'de
bir tamsayı veri türü için gerçekte hangi uzunluk / genişliğe izin verildiğini bilmek için listeye ve bağlantıya bakın: ( türler: TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT );
Yukarıda belirtilenleri söyledikten sonra, sütunlar ZEROFILL sütunları olarak
VEYA
verilerin bir uygulamaya çekilmesi ve uygulamanın toplanması durumunda, görüntüleme genişliğinin standart bir sorgudan elde edilen sonuçlar üzerinde herhangi bir etkisi olmasını bekleyebilirsiniz . başka bir tür dolgu için kullanılacak ekran genişliği.
Birincil Referans: https://blogs.oracle.com/jsmyth/entry/what_does_the_11_mean
n
harflerle silmeyi başaramadım, bu yüzden ... evet, bu bullcrap. Sadece sıfır dolgulu her şeyi yapar.
MySQL tamsayı int(11)
boyutu 32 bit eşit 4 bayt vardır.
İmzalanan değer: - 2^(32-1) to 0 to 2^(32-1)-1
= -2147483648 to 0 to 2147483647
İmzasız değerler: 0 to 2^32-1
= 0 to 4294967295
bu kitaba göre :
MySQL, INT (11) gibi tamsayı türleri için bir “genişlik” belirlemenizi sağlar. Bu, çoğu uygulama için anlamsızdır: yasal değer aralığını kısıtlamaz, ancak MySQL'in etkileşimli araçlarının görüntüleme amacıyla ayıracağı karakter sayısını belirtir. Depolama ve hesaplama amaçlı olarak INT (1), INT (20) ile aynıdır.