MySQL: Warum soll die Anzeigebreite ohne Nullfüllung angegeben werden?
Ich habe mich kürzlich mit der aufregenden Welt von SQL befasst. Ich versuche immer noch, mich mit den Konzepten zu beschäftigen. Ich habe Online-Tutorials verfolgt. Viele dieser Tutorials enthalten SQL, um eine solche Tabelle zu erstellen.
CREATE TABLE `users` (
`id` tinyint(4) NOT NULL AUTO_INCREMENT,
`username` varchar(10) NOT NULL,
`password` varchar(100) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
Nachdem ich Linien wie gesehen habeid tinyint(4)
Ich habe mich gefragt, was der Parameter an den Datentyp übergeben hat. Ich dachte "Bedeutet das, dass id eine beliebige Ganzzahl zwischen -128 und 127 sein kann (nicht mehr als 4 Zeichen)?"
Also habe ich die Dokumentation konsultiert. Das ist wasMySQL-Dokumente müssen über Nummerntypattribute sprechen.
Die Anzeigebreite schränkt den Wertebereich, der in der Spalte gespeichert werden kann, nicht ein. Es wird auch nicht verhindert, dass Werte, die breiter als die Spaltenanzeigebreite sind, korrekt angezeigt werden. Beispielsweise hat eine als SMALLINT (3) angegebene Spalte den üblichen SMALLINT-Bereich von -32768 bis 32767, und Werte außerhalb des dreistelligen Bereichs werden vollständig mit mehr als drei Ziffern angezeigt
In Verbindung mit dem optionalen (nicht standardmäßigen) Attribut ZEROFILL wird der Standardabstand von Leerzeichen durch Nullen ersetzt. Beispielsweise wird für eine als INT (4) ZEROFILL deklarierte Spalte der Wert 5 als 0005 abgerufen.
Also, wenn ich das richtig lese, erkläre ich Dinge wieINT(255)
sind nutzlos, es sei denn, Sie verwenden Zerofill. Ok, es ist sinnvoll, einen Datentyp zu deklarieren, für den die Datenbank genügend Speicherplatz reserviert.
Warum schreiben die Leute Code so? Hat es einen Zweck? Bin ich völlig missverstanden?