Heim  >  Artikel  >  Datenbank  >  Was ist der Unterschied zwischen MySQL tinyint(1) und tinyint(4)

Was ist der Unterschied zwischen MySQL tinyint(1) und tinyint(4)

WBOY
WBOYnach vorne
2023-06-01 08:31:32998Durchsuche

Was ist tinyint(M)?

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:

- ohne Vorzeichen (ohne Vorzeichen), der Bereich liegt zwischen 0 und 255, die Standardlänge beträgt 3.
- 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

Erstellen Sie zunächst eine Testtabelle und verwenden Sie Zerofill für alle Tinyint-Typen.

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)
rrree

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen