Was ist die Größe der Spalte von int(11)
in mysql in Bytes?
Und der maximale Wert, der in diesen Spalten gespeichert werden kann?
Was ist die Größe der Spalte von int(11)
in mysql in Bytes?
Und der maximale Wert, der in diesen Spalten gespeichert werden kann?
Eine INT
ist immer 4 Bytes lang, egal welche Länge angegeben wird.
TINYINT
= 1 Byte (8 Bit)SMALLINT
= 2 Bytes (16 Bit)MEDIUMINT
= 3 Bytes (24 Bit)INT
= 4 Bytes (32 Bit)BIGINT
= 8 Bytes (64 Bit).Die Länge gibt nur an, wie viele Zeichen bei der Auswahl von Daten mit dem mysql-Kommandozeilen-Client aufgefüllt werden sollen. 12345 gespeichert als int(3)
wird immer noch als 12345 angezeigt, aber wenn es als int(10)
würde immer noch 12345 angezeigt, aber Sie hätten die Möglichkeit, die ersten fünf Ziffern aufzufüllen. Wenn Sie zum Beispiel Folgendes hinzufügen ZEROFILL
würde sie als 0000012345 angezeigt.
... und der Höchstwert ist 2147483647 (mit Vorzeichen) oder 4294967295 (ohne Vorzeichen)
@experimentX : dann kann der maximale Wert 99999999999 oder etwas anderes sein. bitte geben Sie mir ein Beispiel.
INT( x ) wird einen Unterschied machen nur in Bezug auf die Anzeige das heißt, die Zahl in x Ziffern, und nicht auf 11 beschränkt. Sie koppeln es mit ZEROFILL
die Nullen vorangestellt, bis sie der Länge entspricht.
Für eine beliebige Anzahl von x en INT(x)
ZEROFILL
werden Nullen vorangestellt.INT(5) ZEROFILL mit dem gespeicherten Wert von 32 wird angezeigt 00032
INT(5) mit dem gespeicherten Wert von 32 wird angezeigt 32
INT mit dem gespeicherten Wert von 32 wird angezeigt 32
INT(3) ZEROFILL mit dem gespeicherten Wert von 250000 wird angezeigt 250000
INT(3) mit dem gespeicherten Wert von 250000 wird angezeigt 250000
INT mit dem gespeicherten Wert von 250000 wird angezeigt 250000
Der tatsächlich in der Datenbank gespeicherte Wert ist davon nicht betroffen, die Größe bleibt gleich, und alle Berechnungen verhalten sich normal.
Dies gilt auch für BIGINT
, MEDIUMINT
, SMALLINT
y TINYINT
.
@developerbmw - Richtig. Die Länge macht absolut nichts, es sei denn, Sie verwenden ZEROFILL
.
Según aquí , int(11)
benötigt 4 Byte Speicherplatz, das sind 32 Bits Speicherplatz mit 2^(31) = 2147483648
Maximalwert und -2147483648
Mindestwert. Ein Bit ist für das Vorzeichen.
Ihr Beispiel hat 9 Neunen. Können Sie bitte bestätigen, dass Ihr Beispiel korrekt ist? Wenn ja, warum steht dort 10, wenn es 9 Neunen gibt? Ist es die Anzahl der Ziffern plus eine plus das Vorzeichen?
Nein, die Höchstzahl ist 4294967295 bei unsigned int, d.h. 2^32. Die Zahl in Klammern hat keinen Einfluss auf den Speichertyp. Wenn Sie mehr als 2^32 benötigen, müssen Sie zu bigint wechseln.
+Kieran hat Recht. Die maximale Zahl unterscheidet sich von der in der Antwort. Siehe aquí
Wie bereits gesagt, werden die Mindest-/Maximalwerte, die die Spalte speichern kann, und der Speicherplatz, den sie in Bytes einnimmt, nur durch den Typ und nicht durch die Länge definiert.
Viele dieser Antworten besagen, dass die (11)
Teil wirkt sich nur auf die Anzeigebreite aus, was nicht ganz richtig ist, aber meistens.
Eine Definition von int(2)
con keine Null-Füllung angegeben wird:
100
100
bei der Ausgabe (nicht 0
o 00
)Das einzige, was die (2)
tun wird, ist wenn auch Null-Füllung angegeben ist :
1
wird gezeigt 01
.Der beste Weg, alle Nuancen zu erkennen, ist zu laufen:
CREATE TABLE `mytable` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`int1` int(10) NOT NULL,
`int2` int(3) NOT NULL,
`zf1` int(10) ZEROFILL NOT NULL,
`zf2` int(3) ZEROFILL NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO `mytable`
(`int1`, `int2`, `zf1`, `zf2`)
VALUES
(10000, 10000, 10000, 10000),
(100, 100, 100, 100);
select * from mytable;
was zu einer Ausgabe führt:
+----+-------+-------+------------+-------+
| id | int1 | int2 | zf1 | zf2 |
+----+-------+-------+------------+-------+
| 1 | 10000 | 10000 | 0000010000 | 10000 |
| 2 | 100 | 100 | 0000000100 | 100 |
+----+-------+-------+------------+-------+
Diese Antwort wurde mit MySQL 5.7.12 für Linux getestet und kann sich bei anderen Implementierungen unterscheiden oder auch nicht.
"Beachten Sie, dass die Spalte 'int1' eine viel geringere Anzeigebreite hat als die Spalte 'zerofill2', obwohl die Länge größer ist" ... Das liegt nur daran, dass der Spaltenname "zerofill2" 9 Zeichen lang ist, während "int1" nur 4 Zeichen lang ist.
... ja, also hat die Länge eindeutig keine Auswirkung, auch nicht auf die Anzeigebreite, wenn die Nullfüllung nicht aktiviert ist. Andernfalls wäre int1 mit einer Breite von 10 Zeichen viel breiter.
Eine gute Erklärung mit einem soliden Beispiel. Viel besser als die akzeptierte Antwort. Vielen Dank @Programster.
Was ist die Größe der Spalte int(11) in mysql in Bytes?
(11)
- dieses Attribut von int
Der Datentyp hat nichts mit der Größe der Spalte zu tun. Es handelt sich lediglich um die Anzeigebreite des Ganzzahl-Datentyps. Aus 11.1.4.5. Attribute des numerischen Typs :
MySQL unterstützt eine Erweiterung für die optionale Angabe der Anzeige Breite von Integer-Datentypen in Klammern nach dem Basisschlüsselwort für den Typ. INT(4) spezifiziert zum Beispiel eine INT mit einer Anzeigebreite Breite von vier Ziffern.
Beachten Sie auch, dass die Eigenschaft width seit Version 8.0.17 veraltet ist. dev.mysql.com/doc/refman/8.0/de/numeric-type-attributes.html
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.
2 Stimmen
Mögliches Duplikat von Wie groß ist ein SQL Int(N)?
2 Stimmen
@cellepo eine ist generische Sql die andere ist spezifisch für mysql (plus diese hat viel mehr Ansichten). Wenn Sie auf eine Dupe-Jagd gehen wollen und ich sie schnell mit einer Abstimmung schließen soll, besuchen Sie SOBotics chatten und mich anpingen. Aber derjenige, der schließen soll, muss getaggt sein
mysql
vor meiner Ankunft. Vielen Dank11 Stimmen
Hallo, Leute. Es ist möglicherweise ein Duplikat, aber es ist suchfreundlicher. Die meisten Leute suchen wie diese mit int(11). und es ist die Lösung der Fragen von anderen Menschen. Sie können seine Anzahl der Ansicht im Vergleich zu anderen zu überprüfen. und Benutzer finden Sie mehr detaillierte Antwort hier.