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

Die Hook-Funktion von Vue-Router implementiert Routing Guard

Inhaltsverzeichnis Überblick Globale Hook-Funktio...

Schritte zur Bereitstellungsmethode für Docker Stack für Webcluster

Docker wird immer ausgereifter und seine Funktion...

Installieren Sie Apache2.4+PHP7.0+MySQL5.7.16 auf macOS Sierra

Obwohl Mac-Systeme mit PHP und Apache ausgeliefer...

Der Unterschied zwischen Float- und Positionsattributen im CSS-Layout

CSS-Layout – Positionseigenschaft Das Positionsat...

So ändern Sie die Ali-Quelle in Ubuntu 20.04

Beachten Sie, dass dieser Artikel Ihnen nicht ein...

Eine kurze Analyse zum Upgrade von PHP 5.4 auf 5.6 in CentOS 7

1. Überprüfen Sie die PHP-Version nach dem Aufruf...

Tutorial zu HTML-Formular-Tags (3): Eingabe-Tag

Tutorial zu HTML-Formular-Tags. In diesem Abschni...

Referenz zur Webseitenerstellung im IE6 - Standardstil im IE6

Dies ist eigentlich kein offizielles Dokument des ...

Beispiel für die Implementierung von QR-Code-Scaneffekten mit CSS3

Online-Vorschau https://jsrun.pro/AafKp/ Erster B...

Vue+thinkphp5.1+axios zum Realisieren des Datei-Uploads

In diesem Artikel erfahren Sie, wie Sie mit think...

Prozess des Klassenlademechanismus von Tomcat und Quellcodeanalyse

Inhaltsverzeichnis Vorwort 1. Strukturdiagramm de...

4 Scan-Tools für den Linux-Desktop

Obwohl die papierlose Welt noch nicht angebrochen...