Zusammenfassung: In diesem Tutorial lernen Sie den MySQL INT
oder Integer-Datentyp kennen und erfahren, wie Sie ihn im Design Ihrer Datenbanktabelle verwenden können. Außerdem zeigen wir Ihnen, wie Sie die Anzeigebreite und die ZEROFILL-Attribute einer Integer-Spalte verwenden können.
Einführung in den MySQL INT-Typ
In MySQL steht INT
für die ganze Zahl, die eine ganze Zahl ist. Eine ganze Zahl kann ohne eine gebrochene Komponente geschrieben werden, z.B. 1, 100, 4, -10, und sie kann nicht 1,2, 5/3, usw. sein. Eine ganze Zahl kann Null, positiv und negativ sein.
MySQL unterstützt alle Standard-SQL-Ganzzahltypen INTEGER
oder INT
und SMALLINT
. Zusätzlich bietet MySQL TINYINT
MEDIUMINT
und BIGINT
als Erweiterungen des SQL-Standards an.
Der MySQL-Datentyp INT
kann vorzeichenbehaftet und vorzeichenlos sein. Die folgende Tabelle veranschaulicht die Eigenschaften der einzelnen Integer-Typen, einschließlich der Speicherung in Bytes, des Mindest- und des Höchstwerts.
Typ | Speicherplatz | Minimalwert | Maximalwert |
---|---|---|---|
(Bytes) | (mit Vorzeichen/ohne Vorzeichen) | (mit Vorzeichen/ohne Vorzeichen) | |
TINYINT | 1 | -128 | 127 |
0 | 255 | ||
SMALLINT | 2 | -32768 | 32767 |
0 | 65535 | ||
MEDIUMINT | 3 | -8388608 | 8388607 |
0 | 16777215 | ||
INT | 4 | -2147483648 | 2147483647 |
0 | 4294967295 | ||
BIGINT | 8 | -9223372036854775808 | 9223372036854775807 |
0 | 18446744073709551615 |
MySQL INT Datentyp Beispiele
Lassen Sie uns einige Beispiele für die Verwendung von Integer-Datentypen ansehen.
A) Beispiel für die Verwendung von MySQL INT für eine Spalte
Da der Integer-Typ exakte Zahlen darstellt, wird er normalerweise als Primärschlüssel einer Tabelle verwendet. Außerdem kann die INT
-Spalte ein AUTO_INCREMENT
-Attribut haben.
Wenn Sie einen NULL
-Wert oder 0 in die INT AUTO_INCREMENT
-Spalte einfügen, wird der Wert der Spalte auf den nächsten Sequenzwert gesetzt. Beachten Sie, dass der Sequenzwert mit 1 beginnt.
Wenn Sie einen Wert, der nicht NULL
oder Null ist, in die Spalte AUTO_INCREMENT
einfügen, nimmt die Spalte den Wert an. Außerdem wird die Reihenfolge auf den nächsten Wert des eingefügten Wertes zurückgesetzt.
Erstellen Sie zunächst eine neue Tabelle mit dem Namen items
und einer Integer-Spalte als Primärschlüssel:
Code language: SQL (Structured Query Language) (sql)
Sie können entweder INT
oder INTEGER
in der obigen CREATE TABLE
-Anweisung verwenden, da sie austauschbar sind. Immer, wenn Sie eine neue Zeile in die Tabelle items
einfügen, wird der Wert der Spalte item_id
um 1 erhöht.
Die folgende INSERT
-Anweisung fügt drei Zeilen in die Tabelle items
ein.
Code language: SQL (Structured Query Language) (sql)
Danach werden mit der folgenden SELECT
-Anweisung Daten aus der Tabelle items
abgefragt:
Code language: SQL (Structured Query Language) (sql)
Danach wird eine neue Zeile eingefügt, deren Wert der Spalte item_id
explizit angegeben wird.
Code language: SQL (Structured Query Language) (sql)
Da der aktuelle Wert der Spalte item_id
10 ist, wird die Reihenfolge auf 11 zurückgesetzt. Wenn Sie eine neue Zeile einfügen, wird die AUTO_INCREMENT
-Spalte 11 als nächsten Wert verwenden.
Code language: SQL (Structured Query Language) (sql)
Schließlich fragen Sie die Daten der items
-Tabelle erneut ab, um das Ergebnis zu sehen.
Code language: SQL (Structured Query Language) (sql)
Beachten Sie, dass die AUTO_INCREMENT
-Spalte ab MySQL 5.1 nur positive Werte akzeptiert und keine negativen Werte zulässt.
B) Verwendung des MySQL INT UNSIGNED-Beispiels
Erstellen Sie zunächst eine Tabelle mit dem Namen classes
, die die Spalte total_member
mit dem Datentyp Ganzzahl ohne Vorzeichen enthält:
Code language: SQL (Structured Query Language) (sql)
Zweitens, fügen Sie eine neue Zeile in die Tabelle classes
ein:
Code language: SQL (Structured Query Language) (sql)
Es funktioniert wie erwartet.
Dritter Versuch, einen negativen Wert in die Spalte total_member
einzufügen:
Code language: SQL (Structured Query Language) (sql)
MySQL gab den folgenden Fehler aus:
Code language: SQL (Structured Query Language) (sql)
MySQL INT mit dem Attribut display width
MySQL bietet eine Erweiterung, mit der Sie die Anzeigebreite zusammen mit dem Datentyp INT
angeben können. Die Anzeigebreite wird in Klammern nach dem Schlüsselwort INT
angegeben, z.B. INT(5)
spezifiziert eine INT
mit einer Anzeigebreite von fünf Ziffern.
Es ist wichtig zu beachten, dass das Attribut display width nicht die Wertebereiche kontrolliert, die die Spalte speichern kann. Das Attribut display width wird in der Regel von den Anwendungen zur Formatierung der Integer-Werte verwendet. MySQL schließt das display width-Attribut als Metadaten der zurückgegebenen Ergebnismenge ein.
MySQL INT mit dem ZEROFILL-Attribut
Zusätzlich zum display width-Attribut bietet MySQL ein nicht standardisiertes ZEROFILL
-Attribut. In diesem Fall ersetzt MySQL die Leerzeichen durch Null. Betrachten Sie das folgende Beispiel.
Erstellen Sie zunächst eine Tabelle mit dem Namen zerofill_tests
:
Code language: SQL (Structured Query Language) (sql)
Zweitens, fügen Sie eine neue Zeile in die Tabelle zerofill_tests
ein.
Code language: SQL (Structured Query Language) (sql)
Drittens, fragen Sie Daten aus der Tabelle zerofill_tests
ab.
Code language: SQL (Structured Query Language) (sql)
Die Spaltev1
hat eine Anzeigebreite von 2 einschließlichZEROFILL.
Ihr Wert ist 1, daher sehen Sie01
in der Ausgabe. MySQL ersetzt das erste Leerzeichen durch 0.
Die Spalte v2 hat eine Anzeigebreite von 3, einschließlich ZEROFILL
. Ihr Wert ist 6, daher sehen Sie 00
als führende Nullen.
Die Spalte v3 hat die Anzeigebreite 5 mit ZEROFILL
, während ihr Wert 9 ist, daher fügt MySQL 0000
am Anfang der Zahl in der Ausgabe ein.
Beachten Sie, dass, wenn Sie das ZEROFILL
-Attribut für eine Integer-Spalte verwenden, MySQL automatisch ein UNSIGNED
-Attribut zur Spalte hinzufügt.
In diesem Tutorium haben Sie gelernt, wie Sie den MySQL INT
-Datentyp für den Entwurf von Datenbanktabellen verwenden.
- War dieses Tutorium hilfreich?
- JaNein