Tworzę formularz do wysyłania prywatnych wiadomości i chcę ustawić maxlength
wartość pola tekstowego odpowiednią do maksymalnej długości text
pola w mojej tabeli bazy danych MySQL. Ile znaków może przechowywać pole tekstowe typu?
Jeśli dużo, czy byłbym w stanie określić długość w polu typu tekstu bazy danych, tak jak w przypadku varchar?
Odpowiedzi:
Zobacz dla maksymalnych liczb: http://dev.mysql.com/doc/refman/5.0/en/storage-requirements.html
L to liczba bajtów w polu tekstowym. Zatem maksymalna liczba znaków dla tekstu wynosi 2 16 -1 (przy użyciu znaków jednobajtowych). Oznacza 65 535 znaków (przy użyciu znaków jednobajtowych).
Kodowanie UTF-8 / MultiByte : przy użyciu kodowania MultiByte każdy znak może zajmować więcej niż 1 bajt miejsca. W przypadku UTF-8 zużycie miejsca wynosi od 1 do 4 bajtów na znak.
źródło
TINYTEXT: 256 bajtów
TEKST: 65 535 bajtów
MEDIUMTEXT: 16 777
215 bajtów LONGTEXT: 4 294 967 295 bajtów
źródło
Uwaga: W przypadku używania znaków wielobajtowych (takich jak arabski, gdzie każdy znak arabski zajmuje 2 bajty), kolumna „Dopuszczalna dokładna maksymalna długość”
TINYTEXT
może zawierać maksymalnie 127 znaków arabskich (Uwaga: spacja, myślnik, podkreślenie i inne takie znaki , to znaki 1-bajtowe).Zasadniczo wygląda to tak:
„Dopuszczalna dokładna maksymalna długość” = „Przybliżona długość” w bajtach - 1
źródło
Zgodnie z http://dev.mysql.com/doc/refman/5.0/en/storage-requirements.html limit wynosi
L + 2 bytes, where L < 2^16
64k.Nie powinieneś przejmować się ograniczaniem go, jest on automatycznie dzielony na kawałki, które są dodawane wraz ze wzrostem łańcucha, więc nie zawsze ślepo używa 64k.
źródło
Zgodnie z dokumentacją, jeśli zestaw znaków to UTF8, możesz użyć maksymalnie 21 844 znaków
Nie musisz określać długości. Jeśli potrzebujesz więcej znaków, użyj typów danych MEDIUMTEXT lub LONGTEXT. W VARCHAR określona długość nie jest wymagana do przechowywania, dotyczy tylko sposobu pobierania danych z bazy danych.
źródło
TINYTEXT
to ciąg danych typu, który może przechowywać do255
znaków.TEXT
to ciąg danych typu, który może przechowywać do65,535
znaków.TEXT
jest powszechnie używany do krótkich artykułów.LONGTEXT
to ciąg danych o maksymalnej długości4,294,967,295
znaków. Użyj,LONGTEXT
jeśli chcesz przechowywać duży tekst, na przykład rozdział powieści.źródło
TEXT
to ciąg danych typu, który może przechowywać do 65 535 znaków. Ale jeśli chcesz przechowywać więcej danych, zmień typ danych naLONGTEXT
ALTER TABLE
name_tabel
ZMIANAtext_field
longtext CHARACTER SETutf8
UKŁADAJutf8_general_ci
NOT NULL;źródło
Dla MySql w wersji 8.0.
Wymagania numeryczne dotyczące przechowywania
Wartości kolumn DECIMAL (i NUMERIC) są reprezentowane przy użyciu formatu binarnego, który zawiera dziewięć cyfr dziesiętnych (podstawa 10) w cztery bajty. Pamięć dla liczb całkowitych i ułamkowych części każdej wartości określa się osobno. Każda wielokrotność dziewięciu cyfr wymaga czterech bajtów, a cyfry „pozostałe” wymagają ułamka czterech bajtów. Wymagane miejsce na nadmiar cyfr podano w poniższej tabeli.
Data i godzina Typ Wymagania dotyczące pamięci W przypadku kolumn TIME, DATETIME i TIMESTAMP, pamięć wymagana dla tabel utworzonych przed MySQL 5.6.4 różni się od tabel utworzonych od 5.6.4. Wynika to ze zmiany w 5.6.4, która pozwala tym typom mieć część ułamkową, która wymaga od 0 do 3 bajtów.
Począwszy od MySQL 5.6.4, pamięć na ROK i DATĘ pozostaje niezmieniona. Jednak TIME, DATETIME i TIMESTAMP są reprezentowane inaczej. DATETIME jest pakowany bardziej wydajnie, wymagając 5 zamiast 8 bajtów dla części niefrakcyjnej, a wszystkie trzy części mają część ułamkową, która wymaga od 0 do 3 bajtów, w zależności od precyzji przechowywanych wartości w ułamku sekundy.
Na przykład CZAS (0), CZAS (2), CZAS (4) i CZAS (6) używają odpowiednio 3, 4, 5 i 6 bajtów. CZAS i CZAS (0) są równoważne i wymagają tej samej pamięci.
Aby uzyskać szczegółowe informacje na temat wewnętrznej reprezentacji wartości czasowych, zobacz MySQL Internals: Ważne algorytmy i struktury.
Wymagania dotyczące przechowywania ciągów znaków W poniższej tabeli M reprezentuje zadeklarowaną długość kolumny w znakach dla niebinarnych typów ciągów i bajtów dla ciągów binarnych. L reprezentuje rzeczywistą długość w bajtach danej wartości ciągu.
źródło