sql >> Databáze >  >> RDS >> Mysql

tinyint(velikost), varchar(velikost):vysvětlení velikosti

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í. *




  1. Odesílání typu NULL při aktualizaci více řádků

  2. Jak nastavit, aby operátor SQLite LIKE rozlišoval malá a velká písmena

  3. MySQL, Chyba 126:Nesprávný soubor klíče pro tabulku

  4. Jak mohu vybrat posledních 5 řádků v tabulce bez řazení?