Mysql
 sql >> Datenbank >  >> RDS >> Mysql

tinyint(size), varchar(size):Größenerklärung

Ihre Lösung für Verwirrung ist-

In Mysql bedeutet int(6) nicht, dass sie bis zu 6 Ziffern speichern können. nicht mehr als 999999.

Jedoch CHAR(6)Dies bedeutet eine Zeichenspalte mit einer maximalen Länge von 6 Zeichen, wie diese Wörter:

Häuser

Wenn ich versuchen würde, das Wort „special“ in dieser Spalte zu speichern, würde MySQL den Wert auf „specia“ schneiden, da das ursprüngliche Wort 7 Zeichen hat.

Wie auch immer, Integer-Spalten haben alle einen voreingestellten zulässigen Wertebereich. Die Zahl in Klammern gibt nur die Anzeigebreite an.

Das ist wahrscheinlich immer noch verwirrend, also lass es mich weiter erklären…

Die Anzeigebreite ist eine Zahl von 1 bis 255. Sie können die Anzeigebreite einstellen, wenn Sie möchten, dass alle Ihre ganzzahligen Werte ähnlich „erscheinen“:

TINYINT[(M)] [UNSIGNED] [ZEROFILL]

M gibt die maximale Anzeigebreite für Integer-Typen an. Die maximale Anzeigebreite beträgt 255. Die Anzeigebreite hängt nicht vom Wertebereich ab, den ein Typ enthalten kann, . Bei Fließkomma- und Festkommatypen ist M die Gesamtzahl der Ziffern, die gespeichert werden können.

Wenn Sie ZEROFILL für eine numerische Spalte angeben, fügt MySQL automatisch das UNSIGNED-Attribut zur Spalte hinzu.

Die Antwort auf Ihre Frage lautet also

create table foo
(
col2 tinyint(2) unsigned zerofill, col4 tinyint(4) unsigned zerofill, col5notzerofill        tinyint(5)  
)engine=innodb;

insert into foo values (1,2,3),(11,12,14),(123,123,156),(1234,1234,12756);
select * from foo;

OUTPUT :-
+------+------+-----------------+
| col2 | col4 | col5notzerofill |
+------+------+-----------------+
|   01 | 0002 |               3 |
|   11 | 0012 |              14 |
|  123 | 0123 |             127 |
|  255 | 0255 |             127 |
+------+------+-----------------+

*Verstehen Sie also, dass die Anzeigebreite in Mysql nur mit Nullfüllung funktioniert.

*Wenn Sie Zerofill nicht verwenden, ist es nicht effektiv.

Und wenn Sie Zerofill verwenden, prüft mysql die Anzeigebreite, und wenn Sie keine Zuweisung vornehmen, weist mysql dieser Spalte automatisch die Anzeigebreite zu. *