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)
Kolonnenv1
har en visningsbredde 2, herunderZEROFILL.
Den har værdien 1, og derfor ser du01
i 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