Aina ya Data ya MySQL INT Imeelezwa: Thamani ya Juu, Safu, Ukubwa wa Hifadhi & Mabadiliko ya Kutelekezwa (MySQL 8+)

1. Utangulizi

MySQL ni mfumo maarufu wa usimamizi wa hifadhidata wa uhusiano unaotumika sana katika programu nyingi za wavuti na mifumo ya hifadhidata. Kati ya aina zake za data, aina ya INT ni moja ya zinazotumika zaidi kwa kushughulikia thamani za nambari. Makala hii inatoa maelezo ya kina kuhusu aina ya INT ya MySQL. Haswa, tutachunguza thamani za juu zinazoungwa mkono na aina ya INT na jinsi ya kuitumia kwa ufanisi. Kwa kusoma makala hii, utapata maarifa yanayohitajika kutumia kwa usahihi aina ya INT katika MySQL.

2. Maelezo ya Msingi ya Aina ya INT

Thamani za Juu na Chini za INT

Aina ya INT ya MySQL hutumia bajti 4 (bits 32) ya hifadhi, na safu ya thamani ambazo inaweza kuhifadhi ni kama ifuatavyo:

  • Signed (SIGNED) :
  • Thamani ya chini: -2,147,483,648
  • Thamani ya juu: 2,147,483,647
  • Unsigned (UNSIGNED) :
  • Thamani ya chini: 0
  • Thamani ya juu: 4,294,967,295

Ukubwa wa Hifadhi wa INT

Aina ya INT daima hutumia bajti 4 za hifadhi. Ukubwa huu unabaki thabiti bila kujali thamani iliyohifadhiwa. Kwa hivyo, ikiwa huna haja ya kushughulikia safu kubwa ya nambari, ni bora kuzingatia aina ndogo za data (kwa mfano, TINYINT au SMALLINT).

Matumizi ya INT

Aina ya INT hutumika mara nyingi katika hali zifuatazo:

  • Thamani za kuongeza kiotomatiki (kwa mfano, vitambulisho vya watumiaji, nambari za maagizo)
  • Data ya integer inayotumika katika mahesabu au usindikaji wa takwimu (kwa mfano, hesabu za hesabu, hesabu za mibofyo)
  • Data inayowakilishwa ndani ya safu iliyowekwa (kwa mfano, umri au alama za mtihani)

Katika matumizi haya, ni muhimu kuzingatia safu ya nambari inayohitajika na ufanisi wa kumbukumbu.

3. M Inamaanisha Nini katika INT(M)?

Upana wa Kuonyesha (M) Ni Nini?

Katika MySQL, M katika INT(M) inawakilisha “upana wa kuonyesha.” Haina athari kwenye thamani halisi ya nambari iliyohifadhiwa katika hifadhidata; badala yake, inaelezea jinsi thamani inavyopangwa wakati wa kuonyeshwa. Kwa mfano, ikiwa imefafanuliwa kama INT(5), nambari itaonyeshwa kwa upana wa tarakimu 5.

Hata hivyo, upana wa kuonyesha M una maana tu katika hali ifuatayo:

  • Wakati chaguo la ZEROFILL limewezeshwa
  • Mfano: Kwa INT(5) ZEROFILL , ikiwa thamani ni 123 , itaonyeshwa kama 00123 .

Vidokezo Muhimu Kuhusu ZEROFILL

Unapotumia chaguo la ZEROFILL, tabia zifuatazo zinatumika:

  1. Nambari za sifuri mwanzo zinaongezwa kiotomatiki upande wa kushoto.
  2. Sifa ya UNSIGNED inatumiwa kiotomatiki.

Kwa hiyo, ikiwa unahitaji kuhifadhi thamani hasi, huwezi kutumia ZEROFILL.

Kufafanua Uelewa wa Kawaida

Wanafunzi wengi wanaamini kimakosa kwamba M inazuia thamani ya juu inayoweza kuhifadhiwa. Hata hivyo, M inaathiri tu muundo wa kuonyesha na haina athari yoyote kwenye safu halisi ya hifadhi.

4. Ulinganisho na Aina Nyingine za Integer

Aina za Aina za Data za Integer na Safu Zao

MySQL hutoa aina zifuatazo za integer:

Type NameBytesSigned RangeUnsigned Range
TINYINT1 byte-128 to 1270 to 255
SMALLINT2 bytes-32,768 to 32,7670 to 65,535
MEDIUMINT3 bytes-8,388,608 to 8,388,6070 to 16,777,215
INT4 bytes-2,147,483,648 to 2,147,483,6470 to 4,294,967,295
BIGINT8 bytes-9,223,372,036,854,775,808 to 9,223,372,036,854,775,8070 to 18,446,744,073,709,551,615

Vigezo vya Uchaguzi

Tumia miongozo ifuatayo unapochagua aina sahihi ya data katika usanifu wa hifadhidata:

  • Ikiwa safu ni ndogo: Tumia TINYINT au SMALLINT ili kuokoa kumbukumbu.
  • Ikiwa safu kubwa sana inahitajika: Tumia BIGINT .
  • Ikiwa unataka matumizi ya jumla: INT kawaida ni bora.

5. Mabadiliko Tangu MySQL 8.0.17

Kuondolewa kwa Upana wa Kuonyesha (M)

Kuanzia MySQL 8.0.17, “upana wa kuonyesha (M)” kwa aina za integer umeondolewa. Mabadiliko haya yalilekezwa pamoja na kuondolewa kwa chaguo la ZEROFILL, na yanaweza kuondolewa katika matoleo ya baadaye ya MySQL.

Sababu za kuondolewa kwa upana wa kuonyesha ni kama ifuatavyo:

  1. Imesababisha kutoelewana: * Watumiaji wengi walikosea kufahamu kwamba M ilihusisha thamani ya juu inayoweza kuhifadhiwa au idadi ya tarakimu.
  2. Matumizi ya vitendo yaliyopunguzwa: * Kwa kuwa M ilidhibiti tu muundo wa kuonyesha, muundo sasa unashughulikiwa kwa kawaida upande wa programu, na kupunguza umuhimu wake.

Kuondolewa kwa 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 UNSIGNED attribute when using ZEROFILL caused confusion for beginner users.

Jinsi ya Kuendana na Kuwekwa Kwenye Hifadhi

In response to these deprecations, consider the following approaches in database design:

  1. Shughulikia muundo katika safu ya programu:
  • Perform zero-padding and formatting in the application or presentation layer.
  • Example: Implement zero-padding using PHP or JavaScript.
  1. Kubali muundo usiitegemea upana wa onyesho:
  • Define the INT type without specifying M and focus on data accuracy rather than display formatting.

6. Sehemu ya Maswali Yanayoulizwa Mara kwa Mara (FAQ) ya Kivitendo

Maswali Yanayoulizwa Mara kwa Mara

Q1. Nini kinatokea ikiwa nitahifadhi thamani inayozidi kiwango cha juu cha aina ya INT?
A. Katika MySQL, kujaribu kuhifadhi thamani nje ya safu ya INT kutaongeza kosa. Lazima uchague thamani ndani ya safu inayokubalika au ubadilishe kwa aina ya data yenye safu kubwa zaidi (kwa mfano, BIGINT).

Q2. Ni tofauti gani kati ya INT na BIGINT?
A. Aina ya BIGINT inatumia hifadhi mara mbili ya INT (baiti 8) na hutoa safu ya nambari pana zaidi. Kwa mfano, safu ya alama ya BIGINT inazidi ±9 quintillion, na hivyo inafaa kwa kushughulikia seti za data kubwa sana.

Q3. Baada ya ZEROFILL kufutwa, nitakuwaje kutekeleza onyesho la kujaza sifuri?
A. Inapendekezwa kushughulikia kujaza sifuri katika safu ya programu. Kwa mfano, katika PHP unaweza kutumia kazi ya str_pad(), na katika JavaScript unaweza kutumia njia ya padStart() kutekeleza kujaza sifuri.

Q4. Nitachagua vipi kati ya INT na aina nyingine za integer?
A. Chagua aina kulingana na safu ya data. Thamani ndogo za nambari (kwa mfano, umri au alama) zinafaa kwa TINYINT, data za kiwango cha kati (kwa mfano, vitambulisho vya watumiaji) zinafaa kwa INT, na thamani kubwa sana (kwa mfano, data za miamala ya kifedha) zinafaa kwa BIGINT.

7. Hitimisho

Katika makala hii, tulitoa maelezo ya kina kuhusu aina ya data ya MySQL INT. Vidokezo muhimu ni vifuatavyo:

  • Understanding the differences between signed and unsigned maximum and minimum values of the INT type 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.