Vaše řešení zmatku je -
V Mysql int(6) neznamená, že mohou uložit až 6 číslic. ne více než 999999.
Nicméně CHAR(6)To znamená sloupec znaků s maximální délkou 6 znaků, jako jsou tato slova:
domy
Pokud bych se pokusil do tohoto sloupce uložit slovo „special“, MySQL by rozsekalo hodnotu na „specia“, protože původní slovo má 7 znaků.
Všechny sloupce typu integer mají každopádně přednastavený povolený rozsah hodnot. Číslo v závorce udává pouze šířku zobrazení.
To je pravděpodobně stále matoucí, takže mi to dovolte vysvětlit dále…
Šířka zobrazení je číslo od 1 do 255. Šířku zobrazení můžete nastavit, pokud chcete, aby se všechny vaše celočíselné hodnoty „zobrazovaly“ podobně:
TINYINT[(M)] [NESIGNOVANÉ] [ZEROFILL]
M označuje maximální šířku zobrazení pro celočíselné typy. Maximální šířka zobrazení je 255. Šířka zobrazení nesouvisí s rozsahem hodnot, které může typ obsahovat, . Pro typy s pohyblivou řádovou čárkou a pevnou řádovou čárkou je M celkový počet číslic, které lze uložit.
Pokud zadáte ZEROFILL pro číselný sloupec, MySQL automaticky přidá atribut UNSIGNED do sloupce.
Takže odpověď na vaši otázku je
create table foo
(
col2 tinyint(2) unsigned zerofill, col4 tinyint(4) unsigned zerofill, col5notzerofill tinyint(5)
)engine=innodb;
insert into foo values (1,2,3),(11,12,14),(123,123,156),(1234,1234,12756);
select * from foo;
OUTPUT :-
+------+------+-----------------+
| col2 | col4 | col5notzerofill |
+------+------+-----------------+
| 01 | 0002 | 3 |
| 11 | 0012 | 14 |
| 123 | 0123 | 127 |
| 255 | 0255 | 127 |
+------+------+-----------------+
*Takže pochopte, v Mysql funguje šířka displeje pouze s zerofill.
*Pokud používáte nepoužívat zerofill, není to efektivní.
A pokud použijete zerofill, pak mysql zkontroluje šířku zobrazení a pokud ji nepřiřadíte, mysql tomuto sloupci automaticky přiřadí šířku zobrazení. *