MySQL INT datatype

author
4 minutes, 5 seconds Read

Summary: I denne tutorial vil du lære om MySQL INT eller heltalsdatatype, og hvordan du bruger den i dit databasetabeldesign. Desuden vil vi vise dig, hvordan du bruger visningsbredde- og ZEROFILL-attributterne for en heltalskolonne.

Indledning til MySQL INT-typen

I MySQL står INT for det hele tal, der er et helt tal. Et heltal kan skrives uden en brøkdelskomponent f.eks. 1, 100, 4, -10, og det kan ikke være 1,2, 5/3, osv. Et heltal kan være nul, positivt og negativt.

MySQL understøtter alle standard SQL-heltalstyper INTEGER eller INT og SMALLINT. Desuden tilbyder MySQL TINYINT MEDIUMINT og BIGINT som udvidelser til SQL-standarden.

MySQL INT datatype kan være signeret og usigneret. Følgende tabel illustrerer egenskaberne for hver enkelt heltalstype, herunder lagring i bytes, minimumsværdi og maksimumsværdi.

Type Lagring Minimalværdi Maksimalværdi Maximalværdi
(Bytes) (Signed/Unsigned) (Signed/Unsigned)
TINYINT 1 -128 127
0 255
SMALLINT 2 -32768 32767
0 65535
MEDIUMINT 3 -8388608 8388607
0 16777215
INT 4 -214748483648 2147483647
0 4294967295
BIGINT 8 -9223372036854775808 9223372036854775807
0 18446744073709551615

MySQL INT datatype eksempler

Lad os se på nogle eksempler på brug af heltalsdatatype.

A) Brug af MySQL INT til et kolonneeksempel

Da heltalstypen repræsenterer nøjagtige tal, bruger du den normalt som primærnøgle i en tabel. Desuden kan INT-kolonnen have en AUTO_INCREMENT attribut.

Når du indsætter en NULL-værdi eller 0 i INT AUTO_INCREMENT-kolonnen, sættes kolonnens værdi til den næste sekvensværdi. Bemærk, at sekvensværdien starter med 1.

Når du indsætter en værdi, som ikke er NULL eller nul, i AUTO_INCREMENT-kolonnen, accepterer kolonnen værdien. Desuden nulstilles sekvensen til den næste værdi af den indsatte værdi.

Først skal du oprette en ny tabel ved navn items med en heltalskolonne som primærnøgle:

Du kan bruge enten INT eller INTEGER i CREATE TABLE-erklæringen ovenfor, fordi de er indbyrdes udskiftelige. Hver gang du indsætter en ny række i tabellen items, øges værdien af kolonnen item_id med 1.

Dernæst indsættes der tre rækker i tabellen items med følgende INSERT-anvisning.

Code language: SQL (Structured Query Language) (sql)

Spørg derefter efter data fra tabellen items med følgende SELECT-anvisning:

Code language: SQL (Structured Query Language) (sql)

Indsæt derefter en ny række, hvis værdi af kolonnen item_id er angivet eksplicit.

Code language: SQL (Structured Query Language) (sql)

Da den aktuelle værdi af kolonnen item_id er 10, nulstilles rækkefølgen til 11. Hvis du indsætter en ny række, vil AUTO_INCREMENT-kolonnen bruge 11 som den næste værdi.

Code language: SQL (Structured Query Language) (sql)

Finalt, forespørg dataene i items-tabellen igen for at se resultatet.

Code language: SQL (Structured Query Language) (sql)

Bemærk, at fra og med MySQL 5.1 accepterer AUTO_INCREMENT-kolonnen kun positive værdier og tillader ikke negative værdier.

B) Brug af MySQL INT UNSIGNED eksempel

Først skal du oprette en tabel kaldet classes, der har kolonnen total_member med datatypen usigneret heltal:

Code language: SQL (Structured Query Language) (sql)

For det andet skal du indsætte en ny række i tabellen classes:

Code language: SQL (Structured Query Language) (sql)

Det virkede som forventet.

Tredje forsøg på at indsætte en negativ værdi i kolonnen total_member:

Code language: SQL (Structured Query Language) (sql)

MySQL udstedte følgende fejl:

Code language: SQL (Structured Query Language) (sql)

MySQL INT med attributten display width

MySQL tilbyder en udvidelse, der gør det muligt at angive displaybredden sammen med datatypen INT. Visningsbredden er pakket ind i parentes efter nøgleordet INT f.eks. INT(5) angiver en INT med en visningsbredde på fem cifre.

Det er vigtigt at bemærke, at attributten visningsbredde ikke kontrollerer de værdiområder, som kolonnen kan lagre. Attributten displaybredde bruges typisk af programmerne til at formatere de heltalsværdier. MySQL inkluderer display width-attributten som metadata for det returnerede resultatsæt.

MySQL INT med ZEROFILL-attributten

Ud over display width-attributten tilbyder MySQL en ikke-standardiseret ZEROFILL-attribut. I dette tilfælde erstatter MySQL mellemrum med nul. Overvej følgende eksempel.

Først opretter du en tabel med navnet zerofill_tests :

Code language: SQL (Structured Query Language) (sql)

For det andet indsætter du en ny række i zerofill_tests-tavlen.

Code language: SQL (Structured Query Language) (sql)

For det tredje forespørger du data fra zerofill_tests -tavlen.

Code language: SQL (Structured Query Language) (sql)


Kolonnenv1har en visningsbredde 2, herunderZEROFILL.Den har værdien 1, og derfor ser du01i output. MySQL erstatter det første mellemrum med 0.

Kolonnen v2 har en visningsbredde med 3 inklusive ZEROFILL. Dens værdi er 6, derfor ser du 00 som de forreste nuller.

Kolonnen v3 har displaybredden 5 med ZEROFILL, mens dens værdi er 9, derfor fylder MySQL 0000 i begyndelsen af tallet i outputtet.

Bemærk, at hvis du bruger ZEROFILL-attributten til en heltalskolonne, vil MySQL automatisk tilføje en UNSIGNED-attribut til kolonnen.

I denne vejledning har du lært at bruge MySQL INT-datatatypen til at designe databasetabeller.

  • Blev denne vejledning nyttig?
  • JaNej

Similar Posts

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.