2009-10-27 19 views
39

Artık INT'nin işleyebileceğinden daha büyük sayılara sahibim.BIGINT (8) en büyük tam sayı mysql saklayabilir mi?

Bu biraz çekicidir, fakat BIGINT'in (8) ne anlama geldiğini tam olarak bilmiyorum. 8, maksimum bit değeri mi yoksa maksimum uzunluk mu?

Yani BIGINT (1) sadece bir basamak olabilir mi? Yoksa BIGINT (1) başka bir şey mi? Sanırım minik (1) max 127, bu nasıl oluyor?

BIGINT yapabilirim en büyük nedir? MySQL'de tam sayı olarak depolayabileceğim en büyük numara nedir?

+0

Aynı cevabın 5 dakikası, neredeyse aynı sonuçlar ile :) – Abel

+1

Ya, ben sadece bir cevap seçebildiğimden beri herkesi tereddüt ettim :) – Citizen

cevap

35

Bu numara nasıl görüntülendiğini gösterir - verilerin nasıl saklandığını etkilemez. the manual kaynaktan

:

başka uzantı isteğe türü için ana anahtar kelime sonra parantez içinde tamsayı veri türleri görüntü genişliğini belirlemek için MySQL ile desteklenen (örneğin, INT (4)). Bu isteğe bağlı ekran genişliği, boşluklarla sol doldurma yoluyla sütun için belirtilen genişlikten daha az bir genişliğe sahip tamsayı değerlerini görüntülemek için uygulamalar tarafından kullanılabilir. (Yani, bu genişlik, sonuç kümeleriyle döndürülen meta verilerde bulunur. Kullanılsın ya da kullanılmasın, uygulamanın başına kadar.)

Görüntü genişliği, sütunda saklanabilecek değerler aralığını kısıtlamaz. sütun için belirtilen değeri aşan bir genişliğe sahip değerler için görüntülenen basamakların sayısı. Örneğin, SMALLINT (3) olarak belirtilen bir sütunda, normal SMALLINT aralığı -32768 ila 32767 arasındadır ve üç karakterden izin verilen aralık dışındaki değerler üçten fazla karakter kullanılarak görüntülenir.

bir BIGINT her 8 bayt ve (işaretli) -9223372036854775808 9223372036854775807 depolamak ya da 0 18446744073709551615 için (işaretsiz) olabilir.

10

Yanıtınız this overview. Bir BIGINT aslında 8 bayttır. Bir TinyInt sadece 1.

Btw, -92233720368547758089223372036854775807 için çok utanç verici olduğunu düşünmüyorum, +/- 2^63 :).

4

Köşeli parantezler arasındaki sayı 'görüntü genişliği' dir ve veri tipinin gerçekte depolayabileceği sayı aralığıyla ilgisizdir.

bir bigint en aralık imzasız aralık Daha fazla bilgiyi burada bulabilirsiniz 0

18446744073709551615. etmektir -9223372036854775808 9223372036854775807. şudur: http://dev.mysql.com/doc/refman/5.4/en/numeric-type-overview.html

2

128 bitlik tamsayı depolamak için, bir ikili kullanabilirsiniz (16).252 için

:

SEC HAKKI (CONCAT (TEKRAR ("\ 0", 16), UNHEX (CONV (252,10,16))), 16);

veya eşdeğer:

SEC UNHEX (SAĞ (CONCAT (TEKRAR ("0", 32), HEX (252)), 32));

da

bakın son IPv6 fonksiyonları INET6_ATON() ve INET6_NTOA(), http://dev.mysql.com/doc/refman/5.6/en/miscellaneous-functions.html#function_inet6-aton (ancak MySQL tamsayı hesaplamaları 64 bit) ve onlar olur.Sıd (16) nasıl kullandıklarını.