Ich erstelle ein Formular zum Senden privater Nachrichten und möchte den maxlength
Wert eines Textbereichs entsprechend der maximalen Länge eines text
Felds in meiner MySQL-Datenbanktabelle festlegen. Wie viele Zeichen kann ein Textfeld speichern?
Wenn viel, könnte ich die Länge im Feld für den Datenbanktexttyp angeben, wie ich es mit varchar tun würde?
Antworten:
Die maximale Anzahl finden Sie unter: http://dev.mysql.com/doc/refman/5.0/en/storage-requirements.html
L ist die Anzahl der Bytes in Ihrem Textfeld. Die maximale Anzahl von Zeichen für Text beträgt also 2 16 -1 (unter Verwendung von Einzelbytezeichen ). Bedeutet 65 535 Zeichen (unter Verwendung von Einzelbytezeichen).
UTF-8 / MultiByte-Codierung : Bei Verwendung der MultiByte-Codierung belegt jedes Zeichen möglicherweise mehr als 1 Byte Speicherplatz. Für UTF-8 beträgt der Speicherplatzverbrauch zwischen 1 und 4 Byte pro Zeichen.
quelle
TINYTEXT: 256 Bytes
TEXT: 65.535 Bytes
MEDIUMTEXT: 16.777.215 Bytes
LONGTEXT: 4.294.967.295 Bytes
quelle
Hinweis: Bei Verwendung von Multibyte-Zeichen (wie Arabisch, bei dem jedes arabische Zeichen 2 Byte benötigt) kann die Spalte "Genaue maximale zulässige Länge"
TINYTEXT
bis zu 127 arabische Zeichen enthalten (Hinweis: Leerzeichen, Bindestrich, Unterstrich und andere solche Zeichen) sind 1-Byte-Zeichen).Im Grunde ist es wie:
"Exakte maximale Länge zulässig" = "Ungefähre Länge" in Byte - 1
quelle
Laut http://dev.mysql.com/doc/refman/5.0/en/storage-requirements.html ist das Limit
L + 2 bytes, where L < 2^16
.Sie sollten sich nicht darum kümmern müssen, es einzuschränken. Es wird automatisch in Blöcke zerlegt, die hinzugefügt werden, wenn die Zeichenfolge wächst, sodass 64k nicht immer blind verwendet werden.
quelle
Laut Dokumentation können Sie maximal 21.844 Zeichen verwenden, wenn der Zeichensatz UTF8 ist
Sie müssen die Länge nicht angeben. Wenn Sie mehr Zeichen benötigen, verwenden Sie die Datentypen MEDIUMTEXT oder LONGTEXT. Bei VARCHAR gilt die angegebene Länge nicht für die Speicheranforderungen, sondern nur für das Abrufen der Daten aus der Datenbank.
quelle
TINYTEXT
ist ein String-Datentyp, der bis zu255
Zeichen speichern kann .TEXT
ist ein String-Datentyp, der bis zu65,535
Zeichen speichern kann .TEXT
wird häufig für kurze Artikel verwendet.LONGTEXT
ist ein String-Datentyp mit einer maximalen Zeichenlänge4,294,967,295
. VerwendenLONGTEXT
Sie diese Option, wenn Sie großen Text speichern müssen, z. B. ein Kapitel eines Romans.quelle
TEXT
ist ein Zeichenfolgendatentyp, der bis zu 65.535 Zeichen speichern kann. Wenn Sie jedoch mehr Daten speichern möchten, ändern Sie den Datentyp inLONGTEXT
ALTER TABLE
name_tabel
CHANGEtext_field
LONG CHARACTER SETutf8
COLLATEutf8_general_ci
NOT NULL;quelle
Für die MySql Version 8.0.
Speicheranforderungen für numerische Typen
Werte für DECIMAL- (und NUMERIC-) Spalten werden in einem Binärformat dargestellt, das neun Dezimalstellen (Basis 10) in vier Bytes packt. Die Speicherung für die ganzzahligen und gebrochenen Teile jedes Werts wird separat bestimmt. Jedes Vielfache von neun Ziffern erfordert vier Bytes, und die "verbleibenden" Ziffern erfordern einen Bruchteil von vier Bytes. Der für überschüssige Ziffern erforderliche Speicher ist in der folgenden Tabelle angegeben.
Speicheranforderungen für Datums- und Uhrzeittyp Für die Spalten TIME, DATETIME und TIMESTAMP unterscheidet sich der für Tabellen, die vor MySQL 5.6.4 erstellt wurden, erforderliche Speicher von den ab 5.6.4 erstellten Tabellen. Dies ist auf eine Änderung in 5.6.4 zurückzuführen, die es diesen Typen ermöglicht, einen Bruchteil zu haben, der 0 bis 3 Bytes erfordert.
Ab MySQL 5.6.4 bleibt der Speicher für YEAR und DATE unverändert. TIME, DATETIME und TIMESTAMP werden jedoch unterschiedlich dargestellt. DATETIME wird effizienter gepackt und benötigt 5 statt 8 Bytes für den nicht gebrochenen Teil, und alle drei Teile haben einen Bruchteil, der 0 bis 3 Bytes erfordert, abhängig von der Sekundenbruchteilgenauigkeit der gespeicherten Werte.
Beispielsweise verwenden TIME (0), TIME (2), TIME (4) und TIME (6) jeweils 3, 4, 5 und 6 Bytes. TIME und TIME (0) sind äquivalent und erfordern denselben Speicher.
Ausführliche Informationen zur internen Darstellung von Zeitwerten finden Sie unter MySQL-Interna: Wichtige Algorithmen und Strukturen.
Speicheranforderungen für Zeichenfolgentypen In der folgenden Tabelle gibt M die deklarierte Spaltenlänge in Zeichen für nicht-binäre Zeichenfolgentypen und Bytes für binäre Zeichenfolgentypen an. L repräsentiert die tatsächliche Länge eines gegebenen Zeichenfolgenwerts in Bytes.
quelle