webentwicklung-frage-antwort-db.com.de

Gibt es einen Unterschied bei der Verwendung von INT (1) gegenüber TINYINT (1) in MySQL?

Ich gehe davon aus, dass INT (1) genau das gleiche ist wie TINYINT (1), aber ich habe wirklich keine Ahnung. Wann immer ich Werte hatte, die nur eine einzelne ganze Zahl sein können (z. B. ein Wert 0-9), habe ich immer nur INT (1) verwendet, um zu sagen, dass es eine ganze Zahl ist und es nur ein Zeichen sein wird es könnte nur ein Wert von 0 bis 9 sein (bitte erklären Sie mir das, falls ich falsch liege). Ich habe immer nur die anderen INT-Typen ignoriert, unter denen Sie die Nummer als Cast angeben können. Ich bin kein MySQL-Kenner und neige dazu, die komplizierteren Dinge, die Sie damit machen können, zu vermeiden.

Also meine Frage, gibt es einen Unterschied zwischen den verschiedenen Integer-Typen INT, TINYINT, SMALLINT, MEDIUMINT und BIGINT, wenn Sie für jeden Typ eine Länge von 1 definieren ;? Wenn nicht, sollte ich sie trotzdem verwenden (ich kann sehen, dass sie mehr Bedeutung haben, da TINYINT spezifischer als nur INT ist)? Wenn ja, könnte ich (und/oder sollte ich) einfach meine Datenbank durchgehen und alle meine INT (1) -Felder in TINYINT (1) -Felder ändern?

38
animuson

Die Zahl in Klammern für ganzzahlige Spaltentypen ist die "Anzeigebreite". Dies hat keine Auswirkungen auf die Speicheranforderungen, da diese vordefiniert sind.

Lesen Sie weiter

36
Phil

Hier wirst du es besser verstehen!

tinyint: 1 byte, -128 to +127 / 0 to 255 (unsigned)
smallint: 2 bytes, -32,768 to +32,767 / 0 to 65,535 (unsigned)
mediumint: 3 bytes, -8,388,608 to 8,388,607 / 0 to 16,777,215 (unsigned)
int/integer: 4 bytes, -2,147,483,648 to +2,147,483,647 / 0 to 4,294,967,295 (unsigned)
bigint: 8 bytes, -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807 / 0 to 18,446,744,073,709,551,615 (unsigned)
44
Cody

Wie die akzeptierte Antwort erklärte:

Die Zahl in Klammern gibt die Anzahl der Zeichen für die Anzeige dieses Felds an, nicht die Speichergröße des Felds.

Wenn Sie jedoch die Speichergröße wissen möchten, sollten Sie die MySQL-Quelldokumente überprüfen.

Quelle: MySQL Docs: Integer-Typen (genauer Wert) - INTEGER, INT, SMALLINT, TINYINT, MEDIUMINT, BIGINT

[~ # ~] tinyint [~ # ~] : 1 Byte, -128 bis 127 mit Vorzeichen, 0 bis 255 ohne Vorzeichen

[~ # ~] smallint [~ # ~] : 2 Bytes, -32768 bis 32767 mit Vorzeichen, 0 bis 65535 ohne Vorzeichen

[~ # ~] mediumint [~ # ~] : 3 Bytes, -8388608 bis 8388607 mit Vorzeichen, 0 bis 16777215 ohne Vorzeichen

[~ # ~] int [~ # ~] : 4 Byte, -2147483648 bis 2147483647 mit Vorzeichen, 0 bis 4294967295 ohne Vorzeichen

[~ # ~] bigint [~ # ~] : 8 Bytes, -2 ^ 63 bis 2 ^ 63-1 mit Vorzeichen, 0 bis 2 ^ 64 -1 ohne Vorzeichen

1
HoldOffHunger