1. Úvod
MySQL je populární relační systém pro správu databází, který se široce používá v mnoha webových aplikacích a databázových systémech. Mezi jeho datové typy patří typ INT, který je jedním z nejčastěji používaných pro práci s číselnými hodnotami. Tento článek poskytuje podrobný popis typu INT v MySQL. Konkrétně se podíváme na maximální hodnoty podporované typem INT a jak jej efektivně využívat. Po přečtení tohoto článku získáte potřebné znalosti pro správné používání typu INT v MySQL.
2. Základní specifikace typu INT
Maximální a minimální hodnoty typu INT
Typ INT v MySQL používá 4 bajty (32 bitů) úložiště a rozsah hodnot, které může uložit, je následující:
- Signed (SIGNED) :
- Minimální hodnota: -2 147 483 648
- Maximální hodnota: 2 147 483 647
- Unsigned (UNSIGNED) :
- Minimální hodnota: 0
- Maximální hodnota: 4 294 967 295
Velikost úložiště typu INT
Typ INT vždy používá 4 bajty úložiště. Tato velikost zůstává konstantní bez ohledu na uloženou hodnotu. Proto pokud nepotřebujete pracovat s velmi velkým číselným rozsahem, je efektivnější zvolit menší datové typy (např. TINYINT nebo SMALLINT).
Příklady použití typu INT
Typ INT se běžně používá v následujících situacích:
- Automaticky inkrementované hodnoty (např. ID uživatelů, čísla objednávek)
- Celá čísla používaná ve výpočtech nebo statistickém zpracování (např. počty zásob, počty kliknutí)
- Data reprezentovaná v pevně daném rozsahu (např. věk nebo výsledky testů)
V těchto případech je důležité zvážit požadovaný číselný rozsah a efektivitu paměti.
3. Co znamená M v INT(M)?
Co je šířka zobrazení (M)?
V MySQL M v INT(M) představuje „šířku zobrazení“. Nemá vliv na skutečnou číselnou hodnotu uloženou v databázi; místo toho určuje, jak bude hodnota formátována při výpisu. Například pokud je definováno INT(5), číslo bude při výpisu zobrazeno s šířkou 5 číslic.
Šířka zobrazení M má však smysl pouze v následujícím případě:
- Když je povolena volba ZEROFILL
- Příklad:
INT(5) ZEROFILL, pokud je hodnota123, bude zobrazena jako00123.
Důležité poznámky k ZEROFILL
Při použití volby ZEROFILL platí následující charakteristiky:
- Na levé straně jsou automaticky přidány úvodní nuly.
- Atribut
UNSIGNEDje automaticky aplikován.
Proto pokud potřebujete ukládat záporné hodnoty, nemůžete použít ZEROFILL.
Vyjasnění běžných nedorozumění
Mnoho začátečníků mylně předpokládá, že M omezuje maximální ukládanou hodnotu. Ve skutečnosti M ovlivňuje pouze formátování výstupu a nemá žádný vliv na skutečný rozsah úložiště.
4. Porovnání s ostatními celočíselnými typy
Typy celočíselných datových typů a jejich rozsahy
MySQL poskytuje následující celočíselné typy:
| Type Name | Bytes | Signed Range | Unsigned Range |
|---|---|---|---|
| TINYINT | 1 byte | -128 to 127 | 0 to 255 |
| SMALLINT | 2 bytes | -32,768 to 32,767 | 0 to 65,535 |
| MEDIUMINT | 3 bytes | -8,388,608 to 8,388,607 | 0 to 16,777,215 |
| INT | 4 bytes | -2,147,483,648 to 2,147,483,647 | 0 to 4,294,967,295 |
| BIGINT | 8 bytes | -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807 | 0 to 18,446,744,073,709,551,615 |
Kritéria výběru
Při výběru vhodného datového typu v návrhu databáze použijte následující vodítka:
- Pokud je rozsah malý: použijte
TINYINTneboSMALLINTpro úsporu paměti. - Pokud je potřeba extrémně velký rozsah: použijte
BIGINT. - Pro obecné použití:
INTje obvykle optimální.
5. Změny od MySQL 8.0.17
Opuštění šířky zobrazení (M)
Od verze MySQL 8.0.17 byla „šířka zobrazení (M)“ pro celočíselné typy označena jako zastaralá. Tato změna byla zavedena společně s deprecací volby ZEROFILL a může být v budoucích verzích MySQL odstraněna.
Důvody pro deprecaci šířky zobrazení jsou následující:
- Způsobovala nedorozumění:
- Mnoho uživatelů mylně předpokládalo, že
Movlivňuje maximální ukládanou hodnotu nebo počet číslic.
- Omezené praktické využití:
- Protože
Mkontrolovalo pouze formátování výstupu, formátování se nyní běžně provádí na straně aplikace, což snižuje jeho nutnost.
Opuštění ZEROFILL
The ZEROFILL option was also deprecated in the same version. Although ZEROFILL was convenient for padding numbers with leading zeros, it is no longer recommended for the following reasons:
- Widespread alternative approaches:
- Zero-padding can now be easily handled in the application or UI layer.
- Avoiding confusion:
- The automatic application of the
UNSIGNEDattribute when usingZEROFILLcaused confusion for beginner users.
How to Adapt to the Deprecation
In response to these deprecations, consider the following approaches in database design:
Handle formatting in the application layer:
* Perform zero-padding and formatting in the application or presentation layer.
* Example: Implement zero-padding using PHP or JavaScript.Adopt a design that does not rely on display width:
* Define theINTtype without specifyingMand focus on data accuracy rather than display formatting.
6. Practical FAQ Section
Frequently Asked Questions
Q1. What happens if I store a value exceeding the maximum of the INT type?
A. In MySQL, attempting to store a value outside the range of the INT type will result in an error. You must either choose a value within the supported range or switch to a data type with a larger range (for example, BIGINT).
Q2. What is the difference between INT and BIGINT?
A. The BIGINT type uses twice the storage of INT (8 bytes) and provides a much wider numeric range. For example, the signed range of BIGINT exceeds ±9 quintillion, making it suitable for handling very large datasets.
Q3. After ZEROFILL is deprecated, how should I implement zero-padded display?
A. It is recommended to handle zero-padding in the application layer. For example, in PHP you can use the str_pad() function, and in JavaScript you can use the padStart() method to implement zero-padding.
Q4. How should I choose between INT and other integer types?
A. Select the type based on the data range. Small numeric values (for example, age or scores) are suitable for TINYINT, medium-scale data (for example, user IDs) are suitable for INT, and very large values (for example, financial transaction data) are suitable for BIGINT.
7. Conclusion
In this article, we provided a detailed explanation of the MySQL INT data type. The key points are as follows:
- Understanding the differences between signed and unsigned maximum and minimum values of the
INTtype forms the foundation of proper data design. - It is important to understand alternative approaches to the deprecated “display width (M)” and “ZEROFILL” options and design databases that can adapt to future MySQL updates.
- Select the appropriate integer type based on data characteristics to build an efficient and maintainable database.
Use this article as a reference to optimize your use of the INT type and further improve efficiency in MySQL database design.


