Ich kannte Boolesch in MySQL als tinyint (1)
.
Heute sehe ich eine Tabelle mit definierten eine ganze Zahl wie tinyint(2)
, und auch andere mögen int(4)
, int(6)
...
Was bedeutet die Größe im Feld vom Typ Integer und Winzling?
Ich kannte Boolesch in MySQL als tinyint (1)
.
Heute sehe ich eine Tabelle mit definierten eine ganze Zahl wie tinyint(2)
, und auch andere mögen int(4)
, int(6)
...
Was bedeutet die Größe im Feld vom Typ Integer und Winzling?
Antworten:
Dies bedeutet Anzeigebreite
Ob Sie tinyint (1) oder tinyint (2) verwenden, spielt keine Rolle.
Ich benutze immer tinyint (1) und int (11), ich habe mehrere MySQL-Clients verwendet (Navicat, Sequel Pro).
Es bedeutet überhaupt nichts! Ich habe einen Test durchgeführt, alle oben genannten Clients oder sogar der Befehlszeilenclient scheinen dies zu ignorieren.
Die Anzeigebreite ist jedoch am wichtigsten, wenn Sie die ZEROFILL
Option verwenden. Ihre Tabelle enthält beispielsweise die folgenden zwei Spalten:
Eine winzige Nullfüllung (2)
B tinyint (4) zerofill
Beide Spalten haben den Wert 1, die Ausgabe für Spalte A wäre 01
und 0001
für B , wie im folgenden Screenshot gezeigt :)
Das (m)
gibt die Spaltenanzeigebreite an; Anwendungen wie der MySQL-Client nutzen dies, wenn sie die Abfrageergebnisse anzeigen.
Beispielsweise:
| v | a | b | c |
+-----+-----+-----+-----+
| 1 | 1 | 1 | 1 |
| 10 | 10 | 10 | 10 |
| 100 | 100 | 100 | 100 |
Hier a
, b
und c
verwendet TINYINT(1)
, TINYINT(2)
und TINYINT(3)
jeweils. Wie Sie sehen können, werden die Werte auf der linken Seite anhand der Anzeigebreite aufgefüllt.
Es ist wichtig zu beachten, dass dies keinen Einfluss auf den akzeptierten Wertebereich für diesen bestimmten Typ hat, dh TINYINT(1)
weiterhin akzeptiert [-128 .. 127]
.
mysql> CREATE TABLE tin3(id int PRIMARY KEY,val TINYINT(10) ZEROFILL);
Query OK, 0 rows affected (0.04 sec)
mysql> INSERT INTO tin3 VALUES(1,12),(2,7),(4,101);
Query OK, 3 rows affected (0.02 sec)
Records: 3 Duplicates: 0 Warnings: 0
mysql> SELECT * FROM tin3;
+----+------------+
| id | val |
+----+------------+
| 1 | 0000000012 |
| 2 | 0000000007 |
| 4 | 0000000101 |
+----+------------+
3 rows in set (0.00 sec)
mysql>
mysql> SELECT LENGTH(val) FROM tin3 WHERE id=2;
+-------------+
| LENGTH(val) |
+-------------+
| 10 |
+-------------+
1 row in set (0.01 sec)
mysql> SELECT val+1 FROM tin3 WHERE id=2;
+-------+
| val+1 |
+-------+
| 8 |
+-------+
1 row in set (0.00 sec)
Informationen zu INT, TINYINT ... Dies sind verschiedene Datentypen. INT ist eine 4-Byte-Nummer, TINYINT ist eine 1-Byte-Nummer. Weitere Informationen hier - INTEGER, INT, SMALLINT, TINYINT, MEDIUMINT, BIGINT .
Die Syntax des Datentyps TINYINT lautet TINYINT (M), wobei M die maximale Anzeigebreite angibt (wird nur verwendet, wenn Ihr MySQL-Client dies unterstützt).