Lassen Sie uns zunächst den Unterschied zwischen dem String-Typ varchar(M) und dem numerischen Typ tinyint(M) in MySQL verstehen?
String-Spaltentyp: In Bezug auf varchar(M) ist M die maximale Zeichenlänge, die im Feld gespeichert werden kann, also die Feldlänge. Abhängig von den Einstellungen erhalten Sie wahrscheinlich eine Fehlermeldung, wenn Sie Daten eingeben, die die Feldlänge überschreiten, und selbst wenn Sie keine Fehlermeldung erhalten, werden die von Ihnen eingegebenen Daten automatisch gekürzt, um sie an die vordefinierte Länge des Felds anzupassen. Daher sind varchar(20) und varchar(40) unterschiedlich, was wirklich die Länge der Daten widerspiegelt, die das Feld speichern kann .
Numerischer Spaltentyp: Sein Längenmodifikator stellt die maximale Anzeigebreite dar und hat nichts mit der physischen Speicherung des Feldes zu tun. Mit anderen Worten, der numerische Bereich, den tinyint(1) und tinyint(4) speichern können, ist -128...127 (oder für vorzeichenlose Werte 0...255). Natürlich sind sie derselbe , es gibt immer noch einen kleinen Unterschied. Nachfolgend finden Sie Anweisungen. Für den Datentyp tinyint
belegt er nur 1 Byte:
- signiert, der Bereich liegt zwischen -128 und 127, die Standardlänge ist 4.Bereichsalgorithmus
: tinyint belegt 1 Byte, und ein Byte besteht aus 8 Bits, also 1*8=8. Die Anzahl der darstellbaren Zahlen beträgt 2 hoch 8 (2^8 = 256 Zahlen). ).
Unterschied: Wenn Zerofill verwendet wird und die tatsächliche Länge die angegebene Anzeigelänge nicht erreicht, wird sie mit 0 vorne aufgefüllt. (Kurz gesagt besteht die Funktion von Zerofill darin, Nullen einzugeben)Test
CREATE TABLE `pre_demo` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键', `unsigned_t` tinyint(3) unsigned zerofill NOT NULL DEFAULT '000', `signed_t` tinyint(4) unsigned zerofill NOT NULL DEFAULT '0000', `t1` tinyint(1) unsigned zerofill NOT NULL DEFAULT '0', `t2` tinyint(2) unsigned zerofill NOT NULL DEFAULT '00', `t3` tinyint(3) unsigned zerofill NOT NULL DEFAULT '000', `t4` tinyint(4) unsigned zerofill NOT NULL DEFAULT '0000', `t5` tinyint(5) unsigned zerofill NOT NULL DEFAULT '00000', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
Dann geben Sie die Testdaten ein.
NSERT INTO pre_demo VALUES(NULL,8,8,8,8,8,8,8); INSERT INTO pre_demo VALUES(NULL,123,123,123,123,123,123,123);
Abschließend fragen Sie die Daten in der Datentabelle ab.
mysql> SELECT * FROM pre_demo; +----+------------+----------+-----+-----+-----+------+-------+ | id | unsigned_t | signed_t | t1 | t2 | t3 | t4 | t5 | +----+------------+----------+-----+-----+-----+------+-------+ | 1 | 008 | 0008 | 8 | 08 | 008 | 0008 | 00008 | | 2 | 123 | 0123 | 123 | 123 | 123 | 0123 | 00123 | +----+------------+----------+-----+-----+-----+------+-------+ 2 rows in set (0.00 sec)
Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen MySQL tinyint(1) und tinyint(4). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!