Zobacz http://dev.mysql.com/doc/ refman/8.0/pl/typy-numeryczne.html
-
INT
jest czterobajtową liczbą całkowitą ze znakiem. -
BIGINT
jest ośmiobajtową liczbą całkowitą ze znakiem.
Każdy z nich akceptuje nie więcej i nie mniej wartości, niż można zapisać w odpowiedniej liczbie bajtów. Oznacza to 2 wartości w INT
i 2 wartości w BIGINT
.
20 w INT(20)
i BIGINT(20)
prawie nic nie znaczy. To podpowiedź dotycząca szerokości wyświetlacza. Nie ma to nic wspólnego z przechowywaniem ani zakresem wartości akceptowanych przez kolumnę.
Praktycznie ma to wpływ tylko na ZEROFILL
opcja:
CREATE TABLE foo ( bar INT(20) ZEROFILL );
INSERT INTO foo (bar) VALUES (1234);
SELECT bar from foo;
+----------------------+
| bar |
+----------------------+
| 00000000000000001234 |
+----------------------+
Częstym źródłem nieporozumień dla użytkowników MySQL jest widok INT(20)
i załóżmy, że jest to limit rozmiaru, coś analogicznego do CHAR(20)
. Tak nie jest.