Xem http://dev.mysql.com /doc/refman/5.7/en/string-type-overview.html
Về cơ bản, tất cả các loại này ngoại trừ CHAR
là chiều dài thay đổi.
Ví dụ:nếu bạn có VARCHAR(72)
và bạn viết abcd
vào đó, bạn sẽ lưu trữ 5 byte. 4 byte cho mỗi ký tự và tiền tố 1 byte để lưu trữ độ dài của chuỗi (là 4).
Nếu độ dài của chuỗi trên 255 ký tự, thì tiền tố VARCHAR sẽ là 2 byte. Vì vậy, một VARCHAR(300)
với một chuỗi 256 ký tự được lưu trữ trong nó sẽ chiếm 258 byte.
TINYTEXT
luôn có tiền tố 1 byte, vì bạn chỉ có thể lưu trữ 255 ký tự trong đó, vì vậy abcd
sẽ mất 5 byte.
TEXT
có tiền tố 2 byte, vì vậy abcd
sẽ là 6 byte.
LONGTEXT
có tiền tố 4 byte, vì vậy abcd
sẽ là 8 byte.
Cuối cùng, có CHAR
gần như vô dụng gõ phím. A CHAR(72)
sẽ luôn chiếm 72 byte bất kể bạn lưu trữ gì trong đó. Nó thực sự chỉ hữu ích cho các trường siêu ngắn, nơi luôn có cùng một số ký tự chính xác trong trường. Thích Y
hoặc N
sẽ là một CHAR(1)
tốt ứng viên.