Sind die Wertebereiche von int(3) und int(10) in MySQL gleich?

Sind die Wertebereiche von int(3) und int(10) in MySQL gleich?

Frage:

Haben die MySQL-Felder unsigned int(3) und unsigned int(6) den gleichen Wertebereich? Wenn unterschiedlich, wie groß sind sie?

Antwort:

Anders: int(3) kann bis zu 3 Ziffern vorzeichenloser Ganzzahlen anzeigen, und int(6) kann bis zu 6 Ziffern vorzeichenloser Ganzzahlen anzeigen.

Wenn Ihre Antwort die gleiche ist wie oben, herzlichen Glückwunsch, Sie haben den gleichen Fehler gemacht wie ich.

Wirklichkeit:

Ein Integer vom Typ int belegt 4 Bytes. Der Bereich eines vorzeichenbehafteten Integers ist: -2^31 ~ 2^31-1, und der Bereich eines vorzeichenlosen Integers ist: 0 ~ 2^32-1. Da es sich bei allen um vorzeichenlose Integer handelt, ist der Speicherbereich derselbe. int(6) füllt die Zahl einfach mit 0 auf, wenn sie weniger als 6 Ziffern hat. Wenn sie mehr als 6 Ziffern hat, ist kein Auffüllen erforderlich.

Wir erstellen folgende Tabelle:

Tabelle löschen, falls vorhanden, Test;
CREATE TABLE `test` (
  `id` int(11) NICHT NULL AUTO_INCREMENT,
  `a` int(11) NICHT NULL,
  `b` int(11) unsigned zerofill NICHT NULL,
  `c` int(5) DEFAULT NULL,
  `d` int(5) unsigned zerofill NICHT NULL,
  `e` int(15) DEFAULT NULL,
  PRIMÄRSCHLÜSSEL (`id`)
)ENGINE=InnoDB STANDARD-CHARSET=utf8mb4;

Nachdem Sie einige Daten eingegeben haben, verwenden Sie die cmd-Befehlszeile zum Anzeigen von:

mysql> wähle * aus Test;
+----+------------+----------+------------+------------+------------+
| Ich würde | a | b | c | d | e |
+----+------------+----------+------------+------------+------------+
| 1 | 1 | 00000000001 | 1 | 00001 | 1 |
| 2 | 1234567890 | 01234567890 | 1234567890 | 1234567890 | 1234567890 |
+----+------------+----------+------------+------------+------------+

Es wurde festgestellt, dass sowohl int(3) als auch int(6) ganze Zahlen mit mehr als 6 Ziffern anzeigen können. Wenn die Zahl jedoch weniger als 3 oder 6 Ziffern hat, wird sie am Anfang mit Nullen aufgefüllt.

Hinweis: Wenn Sie ein Tool wie Navicat zur Anzeige verwenden, wird 0 nicht hinzugefügt. Es kann sein, dass es verarbeitet wurde. Sie müssen die MySQL-Befehlszeile verwenden, um diesen Effekt zu sehen.

Schauen Sie im Handbuch nach, die Erklärung lautet:

MySQL unterstützt auch die Möglichkeit, die Anzeigebreite von Integer-Werten in Klammern hinter dem Typ-Schlüsselwort anzugeben (beispielsweise INT(4)). Diese optionale Anzeigebreite gibt an, dass die Anzeigebreite von links aus aufgefüllt werden soll, wenn sie kleiner als die angegebene Spaltenbreite ist. Die Anzeigebreite schränkt weder den Wertebereich ein, der in der Spalte enthalten sein kann, noch schränkt sie die Anzeige von Werten ein, die die angegebene Breite der Spalte überschreiten.

Mit anderen Worten, die Länge von int hat keinen Einfluss auf die Speichergenauigkeit der Daten. Die Länge bezieht sich nur auf die Anzeige. Um es klarer zu machen, haben wir im obigen Beispiel in der Anweisung zur Tabellenerstellung Zerofill verwendet.

Wissenspunkte

Das M in int (M) gibt die maximale Anzeigebreite an. Die maximal gültige Anzeigebreite beträgt 255, und die Anzeigebreite hat nichts mit der Speichergröße oder dem im Typ enthaltenen Wertebereich zu tun.

Lassen Sie uns zunächst über die numerischen Typen von MySQL sprechen. MySQL unterstützt alle standardmäßigen numerischen SQL-Datentypen. Zu diesen Typen gehören strenge numerische Datentypen (INTEGER, SMALLINT, DECIMAL und NUMERIC) und ungefähre numerische Datentypen (FLOAT, REAL und DOUBLE PRECISION). Das Schlüsselwort INT ist ein Synonym für INTEGER und das Schlüsselwort DEC ist ein Synonym für DECIMAL.

Der BIT-Datentyp speichert Bitfeldwerte und wird von MyISAM-, MEMORY-, InnoDB- und BDB-Tabellen unterstützt. Als Erweiterung des SQL-Standards unterstützt MySQL auch die Integer-Typen TINYINT, MEDIUMINT und BIGINT. In der folgenden Tabelle sind der für jeden Ganzzahltyp erforderliche Speicher und Bereich aufgeführt.

abschließend:

Unabhängig davon, ob es sich um unsigned int(3) oder unsigned int(6) handelt, wird eine 4 Byte große vorzeichenlose Ganzzahl gespeichert, also 0~2^32.

Zusammenfassen

Dies ist das Ende dieses Artikels darüber, ob der Wertebereich von int(3) und int(10) in MySQL derselbe ist. Weitere Informationen zum Wertebereich von mysql int(3) und int(10) finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

Das könnte Sie auch interessieren:
  • Unterschied zwischen int(10) und int(11) in MySQL
  • Was bedeutet das n nach int(n) in MySQL?
  • Detaillierte Erklärung des Unterschieds zwischen MySQL int(3) und int(11)
  • Eine kurze Diskussion über den Unterschied zwischen int(1) und int(10) in MySQL

<<:  Zusammenfassung des fragmentierten Wissens zum Docker-Management

>>:  Detaillierte Erläuterung der CSS-Randüberlappung und Lösungssuche

Artikel empfehlen

Einführung und Zusammenfassung der MySQL 8.0-Fensterfunktionen

Vorwort Vor MySQL 8.0 war es ziemlich mühsam, Dat...

Hinweise zur Groß-/Kleinschreibung bei MySQL

Inhaltsverzeichnis Die Groß-/Kleinschreibung von ...

Axios storniert wiederholte Anfragen

Inhaltsverzeichnis Vorwort 1. So stornieren Sie e...

Beispiel für die Konfiguration von nginx zur Implementierung von SSL

Umgebungsbeschreibung Serversystem: Ubuntu 18.04 ...

Beschreiben Sie kurz den Unterschied zwischen Redis und MySQL

Wir wissen, dass MySQL ein persistenter Speicher ...

Beispielcode des Vue-Symbolselektors

Quelle: http://www.ruoyi.vip/ Vue von „vue“ impor...