Sammanfattning: I den här handledningen kommer du att lära dig om MySQL INT
eller heltalsdatatyp och hur du använder den i din databastabelldesign. Dessutom kommer vi att visa hur du använder attributen visningsbredd och ZEROFILL för en heltalskolumn.
Introduktion till MySQL INT-typ
I MySQL står INT
för heltal som är ett heltal. Ett heltal kan skrivas utan en bråkdel, t.ex. 1, 100, 4, -10, och det kan inte vara 1,2, 5/3 osv. Ett heltal kan vara noll, positivt och negativt.
MySQL har stöd för alla standard SQL heltalstyper INTEGER
eller INT
och SMALLINT
. Dessutom tillhandahåller MySQL TINYINT
MEDIUMINT
och BIGINT
som tillägg till SQL-standarden.
MySQL INT
datatyp kan vara signerad och osignerad. Följande tabell illustrerar egenskaperna för varje heltalstyp, inklusive lagring i bytes, lägsta värde och högsta värde.
Type | Storage | Minimum Value | Maximum Value |
---|---|---|---|
(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-datatypen exempel
Vi ska titta på några exempel på hur man använder heltalsdatatypen.
A) Användning av MySQL INT för en kolumn exempel
Då heltalstypen representerar exakta tal, använder man den vanligtvis som primärnyckel i en tabell. Dessutom kan INT
-kolonnen ha ett AUTO_INCREMENT
attribut.
När du infogar ett NULL
-värde eller 0 i INT AUTO_INCREMENT
-kolonnen sätts kolonnens värde till nästa sekvensvärde. Observera att sekvensvärdet börjar med 1.
När du infogar ett värde, som inte är NULL
eller noll, i kolumnen AUTO_INCREMENT
accepterar kolumnen värdet. Dessutom återställs sekvensen till nästa värde för det infogade värdet.
Skapa först en ny tabell som heter items
med en heltalskolumn som primärnyckel:
Code language: SQL (Structured Query Language) (sql)
Du kan använda antingen INT
eller INTEGER
i CREATE TABLE
-angivelsen ovan eftersom de är utbytbara. När du infogar en ny rad i tabellen items
ökas värdet av kolumnen item_id
med 1.
Nästan, följande INSERT
-anvisning infogar tre rader i tabellen items
.
Code language: SQL (Structured Query Language) (sql)
Förfrågan sedan data från tabellen items
med följande SELECT
-anvisning:
Code language: SQL (Structured Query Language) (sql)
Efter det infogar du en ny rad vars värde för kolumnen item_id
specificeras uttryckligen.
Code language: SQL (Structured Query Language) (sql)
Då det aktuella värdet för kolumnen item_id
är 10, återställs ordningen till 11. Om du infogar en ny rad kommer AUTO_INCREMENT
-kolumnen att använda 11 som nästa värde.
Code language: SQL (Structured Query Language) (sql)
Förfrågan slutligen om data i items
-tabellen igen för att se resultatet.
Code language: SQL (Structured Query Language) (sql)
Notera att AUTO_INCREMENT
-kolumnen från och med MySQL 5.1 endast accepterar positiva värden och tillåter inte negativa värden.
B) Använda MySQL INT UNSIGNED exempel
För det första skapar du en tabell som heter classes
som har kolumnen total_member
med datatypen unsigned heltal:
Code language: SQL (Structured Query Language) (sql)
För det andra infogar du en ny rad i tabellen classes
:
Code language: SQL (Structured Query Language) (sql)
Det fungerade som förväntat.
Tredje försöket att infoga ett negativt värde i kolumnen total_member
:
Code language: SQL (Structured Query Language) (sql)
MySQL utfärdade följande fel:
Code language: SQL (Structured Query Language) (sql)
MySQL INT med attributet display width
MySQL tillhandahåller ett tillägg som gör det möjligt att ange display width tillsammans med datatypen INT
. Visningsbredden är inplastad inom parentes efter nyckelordet INT
t.ex. INT(5)
anger en INT
med en visningsbredd på fem siffror.
Det är viktigt att notera att attributet visningsbredd inte kontrollerar de värdeområden som kolumnen kan lagra. Attributet visningsbredd används vanligtvis av programmen för att formatera de heltaliga värdena. MySQL inkluderar display width-attributet som metadata för den returnerade resultatuppsättningen.
MySQL INT med ZEROFILL-attributet
Inom display width-attributet tillhandahåller MySQL ett icke-standardiserat ZEROFILL
-attribut. I det här fallet ersätter MySQL mellanslag med noll. Tänk på följande exempel:
Först skapar du en tabell med namnet zerofill_tests
:
Code language: SQL (Structured Query Language) (sql)
För det andra infogar du en ny rad i tabellen zerofill_tests
.
Code language: SQL (Structured Query Language) (sql)
För det tredje frågar du efter data från tabellen zerofill_tests
.
Code language: SQL (Structured Query Language) (sql)
Kolumnenv1
har en visningsbredd på 2 inklusiveZEROFILL.
Värdet är 1, därför visas01
i utdata. MySQL ersätter det första mellanslaget med 0.
Kolumnen v2 har en visningsbredd på 3 inklusive ZEROFILL
. Dess värde är 6 därför ser du 00
som ledande nollor.
Kolumnen v3 har visningsbredden 5 med ZEROFILL
, medan dess värde är 9. MySQL fyller därför 0000
i början av talet i utmatningen.
Observera att om du använder ZEROFILL
-attributet för en heltalskolumn kommer MySQL automatiskt att lägga till ett UNSIGNED
-attribut till kolumnen.
I den här handledningen har du lärt dig hur du använder MySQL:s INT
-datatyp för att utforma databastabeller.
- Har du nytta av den här handledningen?
- JaNej