Jaki jest rozmiar kolumny int (11) w mysql w bajtach?

Jaki jest rozmiar kolumny int(11) w mysql w bajtach?

I maksymalna wartość, która może być przechowywana w tych kolumnach?

Author: Gaurav, 2011-04-12

11 answers

An INT zawsze będzie miał 4 bajty bez względu na podaną długość.

  • TINYINT = 1 bajt (8 bit)
  • SMALLINT = 2 bajty (16 bit)
  • MEDIUMINT = 3 bajty (24 bit)
  • INT = 4 bajty (32 bit)
  • BIGINT = 8 bajtów (64 bit).

Długość określa tylko liczbę znaków do wyświetlenia podczas wybierania danych za pomocą klienta wiersza poleceń mysql.

... maksymalna wartość to 2147483647 (Signed) lub 4294967295 (Unsigned)

 533
Author: Matt MacLean,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-18 07:20:31

INT ( somenumber ) wprowadzi różnicę tylko w czasie wyświetlania , to znaczy w liczbie w ' somenumber ' cyfr, a nie tylko 11. Sparujesz go za pomocą ZEROFILL, co będzie poprzedzać zera, aż dopasuje się do Twojej długości

Należy pamiętać, że wartość przechowywana w bazie danych nie ma wpływu, wszelkie obliczenia będą nadal zachowywać się tak, jak jest.

Uwagi:

  • Jeżeli wartość ma mniej cyfr niż ' somenumber', ZEROFILL Wola prepend zer.

    INT (5) ZEROFILL{[6] } o zapisanej wartości 32 pokaże 00032
    INT (5) {[6] } z zapisaną wartością 32 pokaże 32
    INT {[6] } o zapisanej wartości 32 pokaże 32

  • Jeśli wartość ma więcej cyfr niż ' somenumber', zostanie wyświetlona zapisana wartość.

    INT (3) ZEROFILL{[6] } o zapisanej wartości 250000 pokaże 250000
    INT (3) o zapisanej wartości 250000 pokaże 250000
    INT o zapisanej wartości 250000 pokaże 250000

Podobnie jest z BIGINT, MEDIUMINT, SMALLINT i TINYINT.
 106
Author: priyabagus,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-16 08:49:53

Zgodnie z tutaj, int(11) zajmie 4 bajty przestrzeni, czyli 32 bity przestrzeni z 2^(31) = 2147483648 wartością maksymalną i -2147483648wartością minimalną. Jeden kawałek jest na znak.

 97
Author: Santosh Linkha,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-11-05 03:53:24

Jak powiedzieli inni, wartości minimalne/maksymalne, które kolumna może przechowywać i ile miejsca zajmuje w bajtach, są zdefiniowane tylko przez typ, A NIE długość.

Wiele z tych odpowiedzi mówi, że część (11) wpływa tylko na szerokość wyświetlacza, co nie jest do końca prawdą, ale głównie.

Definicja int(2) z bez zerofill określonego będzie:

  • nadal przyjmuj wartość 100
  • nadal wyświetla wartość 100 podczas wyjścia (Nie 0 lub 00)
  • szerokość wyświetlacza będzie szerokością największej wartości wynikającej z zapytania select.

Jedyne, co zrobi (2), to Jeśli podano również zerofill :

  • zostanie wyświetlona wartość 1 01.
  • podczas wyświetlania wartości, kolumna zawsze będzie miała szerokość maksymalnej możliwej wartości, którą kolumna może przyjąć, która wynosi 10 cyfr dla liczby całkowitej, zamiast miniumum szerokości wymagane do wyświetlenia największej wartości, dla której kolumna ma być wyświetlana w danym zapytaniu select, która może być znacznie mniejsza.
  • kolumna może nadal przyjmować i pokazywać wartość przekraczającą długość, ale wartości te nie będą poprzedzone 0s.

Najlepszym sposobem, aby zobaczyć wszystkie niuanse jest uruchomić:

CREATE TABLE `mytable` (
    `id` int(11) NOT NULL AUTO_INCREMENT,
    `int1` int(10) NOT NULL,
    `int2` int(3) NOT NULL,
    `zerofill1` int(10) ZEROFILL NOT NULL,
    `zerofill2` int(3) ZEROFILL NOT NULL,
    PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO `mytable` 
(`int1`, `int2`, `zerofill1`, `zerofill2`) 
VALUES
(10000, 10000, 10000, 10000),
(100, 100, 100, 100);

select * from mytable;

Który wyświetli:

+----+-------+-------+------------+-----------+
| id | int1  | int2  | zerofill1  | zerofill2 |
+----+-------+-------+------------+-----------+
|  1 | 10000 | 10000 | 0000010000 |     10000 |
|  2 |   100 |   100 | 0000000100 |       100 |
+----+-------+-------+------------+-----------+

Zauważ, że int1 kolumna ma znacznie mniejszą szerokość wyświetlania niż zerofill2, mimo że długość większe.

Ta odpowiedź jest testowana na MySQL 5.7.12 dla Linuksa i może się różnić w przypadku innych implementacji.

 30
Author: Programster,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-12 08:43:56

Jaki jest rozmiar kolumny int (11) w mysql w bajtach?

(11) - ten atrybut typu danych int nie ma nic wspólnego z rozmiarem kolumny. Chodzi tylko o szerokość wyświetlania typu danych integer. Od 11.1.4.5. Atrybuty Typu Numerycznego :

MySQL obsługuje rozszerzenie do opcjonalnego określania wyświetlania szerokość typów danych integer w nawiasach po słowie kluczowym base za Typ. Na przykład INT (4) określa INT z wyświetlaczem szerokość czterech cyfr.

 29
Author: ks1322,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-03-07 08:46:18

Dobre wyjaśnienie tego można znaleźć tutaj

podsumowując: liczba w nawiasie W int(N) jest często mylona przez maksymalny rozmiar dozwolony dla kolumny, tak jak ma to miejsce w przypadku varchar(N).

ale tak nie jest w przypadku typów danych Integer - Liczba N w nawiasie nie jest maksymalnym rozmiarem kolumny, ale po prostu parametrem informującym MySQL o szerokości wyświetlania kolumny, gdy dane tabeli są przeglądane przez konsolę MySQL (gdy używasz atrybutu ZEROFILL).

Liczba w nawiasach powie MySQL ile zer ma wstawić przychodzące liczby całkowite. Na przykład: jeśli używasz ZEROFILL w kolumnie, która jest ustawiona na INT(5) i wstawiona jest liczba 78, MySQL będzie umieszczać tę wartość zerami, dopóki liczba nie spełni liczby w nawiasach. tj. 78 będzie 00078, a 127 będzie 00127. Podsumowując: liczba w nawiasach jest używana do celów wyświetlania.
W pewnym sensie liczba w nawiasach jest bez użycia atrybutu ZEROFILL.

Tak więc Rozmiar int pozostanie taki sam, tj. -2147483648 do 2147483648 dla signed i 0 do 4294967295 dla unsigned (~ 2,15 miliardów i 4,2 miliardów, jeden z powodów, dla których programiści pozostają nieświadomi historii za liczbą N w nawiasach, ponieważ prawie nie wpływa na bazę danych, chyba że zawiera ponad 2 miliardy wierszy), a pod względem bajtów będzie to 4 bajty.

Aby uzyskać więcej informacji na temat Typy liczb całkowitych rozmiar / zakres, refer MySQL Manual

 13
Author: shashi009,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-27 12:41:58

Choć ta odpowiedź jest mało prawdopodobna, myślę, że warto wyjaśnić:

  • (n) za typem danych integer w MySQL określa szerokość wyświetlania
  • szerokość wyświetlania nie ogranicza długości liczby zwracanej z zapytania
  • szerokość wyświetlacza ogranicza liczbę zer wypełnionych dla kolumny wypełnionej zerem, więc całkowita liczba odpowiada szerokości wyświetlacza (o ile rzeczywista liczba nie przekracza szerokości wyświetlacza, w w którym przypadku liczba jest pokazana jako jest)
  • szerokość wyświetlacza jest również użytecznym narzędziem dla programistów, aby wiedzieć, jaka długość powinna być wyściełana

TROCHĘ SZCZEGÓŁÓW
widocznie szerokość wyświetlacza ma na celu dostarczenie metadanych o liczbie zer do wyświetlenia w liczbie wypełnionej zerem.
W rzeczywistości nie ogranicza długości liczby zwracanej z zapytania, jeśli liczba ta przekracza określoną szerokość wyświetlacza.
Wiedzieć co długość / szerokość jest rzeczywiście dozwolone dla typu danych integer w MySQL Zobacz listę & link: (typy: tinyint, SMALLINT, MEDIUMINT, INT, BIGINT);
Tak więc, biorąc pod uwagę powyższe, można oczekiwać, że szerokość wyświetlania nie będzie miała wpływu na wyniki standardowego zapytania, chyba że kolumny są określone jako ZEROFILL columns
Lub
w przypadku, gdy dane są pobierane do aplikacji i Ta aplikacja zbiera szerokość wyświetlacza, aby użyć do innego rodzaju wyściółka.

Odniesienie podstawowe: https://blogs.oracle.com/jsmyth/entry/what_does_the_11_mean

 10
Author: MER,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-01-16 21:34:54

W MySQL integer int(11) ma rozmiar 4 bajtów, co równa się 32 bit.

Podpisana wartość to:- 2^(32-1) to 0 to 2^(32-1)-1 = -2147483648 to 0 to 2147483647

Unsigned wartości to: 0 to 2^32-1 = 0 to 4294967295

 5
Author: Sachin Agrawal,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-12-20 18:22:57

int(11) oznacza to, że w MySQL kolumna int może przechowywać maksymalną wartość całkowitą o długości 11 cyfr. Nie jest to jednak prawdą. W int (11), 11 jest display width kolumny integer, w przeciwieństwie do kolumn znaków, gdzie liczba oznacza liczbę znaków, które można zapisać. Kliknij tutaj, aby przeczytać więcej

 1
Author: viju,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-31 04:16:51

Myślę, że maksymalna wartość int(11) to 4294967295

 -4
Author: Samuel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-01-15 03:58:24

4294967295 jest odpowiedzią, ponieważ int(11) pokazuje maksymalnie 11 cyfr IMO

 -9
Author: Dudee,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-03-05 03:06:53