Ich frage mich , was der Unterschied zwischen BigInt
, MediumInt
und Int
sind ... wäre es offensichtlich scheinen , dass sie für größere Zahlen ermöglichen; Ich kann jedoch ein Int(20)
oder ein machen BigInt(20)
und das würde den Anschein erwecken, dass es nicht unbedingt um Größe geht.
Ein Einblick wäre großartig, nur ein bisschen neugierig. Ich benutze MySQL seit einer Weile und versuche, Geschäftsanforderungen bei der Auswahl von Typen anzuwenden, aber ich habe diesen Aspekt nie verstanden.
bar INT ZEROFILL(20)
. Es wäre viel klarer gewesen. Diese Entscheidung wurde jedoch vor langer Zeit getroffen, und eine Änderung würde Millionen von Datenbankinstallationen beschädigen.Die Zahl in Klammern in einer Typdeklaration ist die Anzeigebreite , die nicht mit dem Wertebereich zusammenhängt, der in einem Datentyp gespeichert werden kann. Nur weil Sie deklarieren können,
Int(20)
heißt das nicht, dass Sie Werte bis zu 10 ^ 20 darin speichern können:Eine Liste der Maximal- und Minimalwerte, die in jedem MySQL-Datentyp gespeichert werden können, finden Sie hier .
quelle
Zitat :
quelle
Soweit ich weiß, gibt es nur einen kleinen Unterschied, wenn Sie versuchen, einen Wert einzufügen, der außerhalb des Bereichs liegt.
INT(20)
für das System haben, bedeutet dies, mindestens 20 Bit im Speicher zuzuweisen. Wenn Sie jedoch einen Wert einfügen, der größer als ist2^20
, wird er nur dann erfolgreich gespeichert, wenn er kleiner alsINT(32) -> 2147483647
(oder2 * INT(32) -> 4294967295
fürUNSIGNED
) ist.Beispiel:
BIGINT(20)
für das System haben, bedeutet dies, mindestens 20 Bit im Speicher zuzuweisen. Wenn Sie jedoch einen Wert einfügen, der größer als ist2^20
, wird er erfolgreich gespeichert, wenn er kleiner alsBIGINT(64) -> 9223372036854775807
(oder2 * BIGINT(64) -> 18446744073709551615
fürUNSIGNED
) ist.Beispiel:
quelle
Ich wollte noch einen Punkt hinzufügen: Wenn Sie eine wirklich große Zahl wie 902054990011312 speichern, kann man den Unterschied von
INT(20)
und leicht erkennenBIGINT(20)
. Es ist ratsam, in zu speichernBIGINT
.quelle
Geben wir ein Beispiel für int (10) eins mit dem Schlüsselwort zerofill, eins nicht, die Tabelle sieht so aus:
Fügen wir einige Daten ein:
Dann
Wir können das sehen
Mit dem Schlüsselwort
zerofill
wird num kleiner als 10 0 füllen, ohnezerofill
jedoch nichtZweitens mit Schlüsselwort
zerofill
int_10_with_zf der Int-Typ ohne Vorzeichen. Wenn Sie ein Minus einfügen, wird eine Fehlermeldung angezeigtOut of range value for column.....
. Sie können jedoch ein Minus in int_10 einfügen. Auch wenn Sie 4294967291 in int_10 einfügen, wird eine Fehlermeldung angezeigtOut of range value for column.....
Fazit:
int (X) ohne Schlüsselwort
zerofill
entspricht dem int-Bereich -2147483648 ~ 2147483647int (X) mit dem Schlüsselwort
zerofill
, das Feld entspricht dem vorzeichenlosen int-Bereich 0 ~ 4294967295, wenn die Länge von num kleiner als X ist, wird 0 links gefülltquelle