Vorwort: Integer ist einer der am häufigsten verwendeten Feldtypen in MySQL und wird normalerweise zum Speichern von Ganzzahlen verwendet. Int ist der am häufigsten verwendete Ganzzahltyp. Verstehen Sie den Int-Typ wirklich? Dieser Artikel macht Sie mit den Kenntnissen des int-Typs vertraut und stellt Ihnen auch die Verwendung anderer ganzzahliger Felder vor. 1. Ganzzahlige Klassifizierung und Speicherbereich
Die Tabelle hat vier Spalten: Feldtyp, Anzahl der belegten Bytes, vorzeichenbehafteter Bereich und vorzeichenloser Bereich.
Basierend auf der Tatsache, dass der int-Typ 4 Bytes speichern darf, können wir dann berechnen, dass der Mindestwert, der im int UNSIGNED-Typ gespeichert werden kann, 0 und der Höchstwert 4294967295 ist (d. h. 4B = 32b, der Höchstwert besteht aus 32 1en, d. h. 4294967295 ist in Binärzahlen umgewandelt 32 1en). 2. Speicherreichweitentest mysql> CREATE TABLE test_int ( -> col1 TINYINT, -> col2 SMALLINT, -> col3 MEDIUMINT, -> col4 INT, -> col5 BIGINT -> ) ENGINE = INNODB DEFAULT CHARSET = utf8; Abfrage OK, 0 Zeilen betroffen (0,01 Sek.) mysql> show create table test_int\G**************************** 1. Zeile *************************** Tabelle: test_intTabelle erstellen: CREATE TABLE `test_int` ( `col1` tinyint(4) DEFAULT NULL, `col2` smallint(6) DEFAULT NULL, `col3` mediumint(9) DEFAULT NULL, `col4` int(11) DEFAULT NULL, `col5` bigint(20) DEFAULT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf81 Zeile im Set (0,00 Sek.) mysql> insert into test_int values (1234,123456,12345678,12345678901,12345678901234567890); Abfrage OK, 1 Zeile betroffen, 5 Warnungen (0,00 Sek.) mysql> in test_int-Werte einfügen (-1234,-123456,-12345678,-12345678901,-12345678901234567890); Abfrage OK, 1 Zeile betroffen, 5 Warnungen (0,01 Sek.) mysql> Warnungen anzeigen;+---------+------+----------------------------------------------+| Level | Code | Nachricht |+---------+------+-----------------------------------------------+| Warnung | 1264 | Wert für Spalte „col1“ in Zeile 1 außerhalb des Bereichs || Warnung | 1264 | Wert für Spalte „col2“ in Zeile 1 außerhalb des Bereichs || Warnung | 1264 | Wert für Spalte „col3“ in Zeile 1 außerhalb des Bereichs || Warnung | 1264 | Wert für Spalte „col4“ in Zeile 1 außerhalb des Bereichs || Warnung | 1264 | Wert für Spalte „col5“ in Zeile 1 |+---------+------+----------------------------------------------------------+5 Zeilen im Set (0,01 Sek.) mysql> wähle * von test_int;+------+--------+----------+-------------+--------------+----------------------+| Spalte1 | Spalte2 | Spalte3 | Spalte4 | Spalte5 |+------+--------+----------+-------------+----------------------+| 127 | 32767 | 8388607 | 2147483647 | 9223372036854775807 || -128 | -32768 | -8388608 | -2147483648 | -9223372036854775808 |+------+--------+----------+-------------+----------------------+ Aus dem obigen Test können wir Folgendes erkennen: Wenn für verschiedene Ganzzahltypen ein maximaler Speicherbereich vorhanden ist und die Größe der gespeicherten Zahl nicht im Speicherbereich liegt, generiert MySQL einen Alarm, die Zahl kann jedoch eingefügt werden und der Standardwert wird auf den maximal oder minimal speicherbaren Wert gekürzt. 3. Die Bedeutung von M in int(M) und die Verwendung von Zerofill Wir hören oft diesen Satz: Das M in int(M) steht für die maximale Anzeigebreite. Unsere erste Reaktion auf „maximale Anzeigebreite“ ist die maximale Breite des Wertes, den das Feld speichern kann. Wir denken, dass wir die Daten 10 nicht speichern können, wenn wir int(1) erstellen. Tatsächlich ist das nicht die Bedeutung. mysql> CREATE TABLE test_int_zerofill ( -> col1 INT(5) ZEROFILL, -> col2 INT ZEROFILL, -> col3 INT(5) -> ) ENGINE=InnoDB DEFAULT CHARSET=utf8; Abfrage OK, 0 Zeilen betroffen (0,01 Sek.) mysql> show create table test_int_zerofill\G**************************** 1. Zeile *************************** Tabelle: test_int_zerofillTabelle erstellen: CREATE TABLE `test_int_zerofill` ( `col1` int(5) unsigned zerofill DEFAULT NULL, `col2` int(10) unsigned zerofill DEFAULT NULL, `col3` int(5) DEFAULT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf81 Zeile im Set (0,00 Sek.) mysql> insert into test_int_zerofill values (12,12,12); Abfrage OK, 1 Zeile betroffen (0,00 Sek.) mysql> select * from test_int_zerofill;+-------+------------+------+| col1 | col2 | col3 |+-------+------------+------+| 00012 | 000000012 | 12 |+-------+------------+------+1 Zeile im Set (0,00 Sek.) Einige Schüler fragen sich vielleicht, was die Anwendungsszenarien von Zerofill sind. Am häufigsten sollte vor dem Monat oder Datum eine 0 hinzugefügt werden, damit die Anzeige standardisierter wird CREATE TABLE `t_zerofill` ( `Jahr` Jahr(4) DEFAULT NULL, `Monat` int(2) unsigned zerofill DEFAULT NULL, `Tag` int(2) unsigned zerofill DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8; mysql> in t_zerofill-Werte einfügen (2019,6,5); Abfrage OK, 1 Zeile betroffen (0,01 Sek.) mysql> in t_zerofill-Werte einfügen (2019,6,18); Abfrage OK, 1 Zeile betroffen (0,00 Sek.) mysql> in t_zerofill-Werte einfügen (2019,10,1); Abfrage OK, 1 Zeile betroffen (0,00 Sek.) mysql> in t_zerofill-Werte einfügen (2019,11,11); Abfrage OK, 1 Zeile betroffen (0,01 Sek.) mysql> select * from t_zerofill;+------+-------+------+| Jahr | Monat | Tag |+------+-------+------+| 2019 | 06 | 05 || 2019 | 06 | 18 || 2019 | 10 | 01 || 2019 | 11 | 11 |+------+-------+------+4 Zeilen im Set (0,00 Sek.) 4. Typauswahl Nach der obigen Einführung wird die Auswahl verschiedener ganzzahliger Felder viel einfacher. Im Einklang mit dem Prinzip der Speicherminimierung sollte natürlich TINYINT gegenüber SMALLINT und MEDIUMINT gegenüber INT bevorzugt werden. Allerdings sollte alles unter der Prämisse der geschäftlichen Zufriedenheit erfolgen und der Typ, der weniger Bytes belegt, sollte so weit wie möglich gewählt werden. Für Felder, die nur positive Ganzzahlen speichern sollen, können Sie das unsigned-Attribut hinzufügen, das den Speicherbereich erweitert. Wenn das Feld beispielsweise das AUTO_INCREMENT-Attribut hat, können wir dem int-Typ das unsigned-Attribut hinzufügen. Oben finden Sie den detaillierten Inhalt der vollständigen Analyse des MySQL INT-Typs. Weitere Informationen zum MySQL INT-Typ finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM! Das könnte Sie auch interessieren:
|
<<: Untersuchung der drei zugrunde liegenden Mechanismen der globalen Statusverwaltung von React
>>: Implementierung der Installation und Deinstallation von CUDA und CUDNN in Ubuntu
Versionskette In den Tabellen der InnoDB-Engine g...
Inhaltsverzeichnis Vorwort Die Rolle des Schlüsse...
<br />Mit diesem Tag können Sie ein mehrzeil...
Hintergrund Wenn Sie eine Funktion entwickeln, di...
Vor kurzem traten bei der Bereitstellung der Umge...
Was ich heute teilen möchte, ist die Verwendung v...
1. Installieren Sie cmake 1. Entpacken Sie das ko...
Inhaltsverzeichnis Vorwort Erstellen einer Kompon...
Ich habe mehr als eine Stunde gebraucht, um SSH i...
1|0 Kompilieren Sie den Kernel (1) Führen Sie den...
1. Verwenden Sie das Tag <nobr>, um keinen Z...
In einer ungeordneten Liste ul>li ist das Symb...
In diesem Artikelbeispiel wird der spezifische Co...
Nach der MySQL-Datenbankoptimierung kann nicht nu...
Langsame Protokollabfragefunktion Die Hauptfunkti...