Saya membuat formulir untuk mengirim pesan pribadi dan ingin menetapkan maxlength
nilai textarea yang sesuai dengan panjang maksimum text
bidang dalam tabel database MySQL saya. Berapa banyak karakter yang dapat disimpan oleh jenis teks?
Jika banyak, apakah saya dapat menentukan panjang di bidang jenis teks basis data seperti yang saya lakukan dengan varchar?
Jawaban:
Lihat untuk angka maksimum: http://dev.mysql.com/doc/refman/5.0/en/storage-requirements.html
L adalah jumlah byte di bidang teks Anda. Jadi jumlah karakter maksimum untuk teks adalah 2 16 -1 (menggunakan karakter byte tunggal). Berarti 65.535 karakter (menggunakan karakter byte tunggal).
Pengkodean UTF-8 / MultiByte : menggunakan pengodean MultiByte, setiap karakter dapat menggunakan lebih dari 1 byte ruang. Untuk konsumsi ruang UTF-8 adalah antara 1 hingga 4 byte per karakter.
sumber
TINYTEXT: 256 byte
TEKS: 65.535 byte
MEDIUMTEXT: 16.777.215 byte
PANJANG: 4.294.967.295 byte
sumber
Catatan: Jika menggunakan karakter multibyte (seperti bahasa Arab, di mana setiap karakter bahasa Arab membutuhkan 2 byte), kolom "Exact Max. Length Allowed" untuk
TINYTEXT
dapat menampung hingga 127 karakter Arab (Catatan: spasi, tanda hubung, garis bawah, dan karakter lain semacam itu , adalah karakter 1-byte).Pada dasarnya, ini seperti:
"Exact Max. Length Allowed" = "Approx. Length" dalam bytes - 1
sumber
Menurut http://dev.mysql.com/doc/refman/5.0/id/storage-requirements.html , batasnya adalah
L + 2 bytes, where L < 2^16
, atau 64k.Anda tidak perlu khawatir dengan membatasi, secara otomatis dipecah menjadi potongan-potongan yang ditambahkan saat string tumbuh, sehingga tidak selalu menggunakan 64k secara membabi buta.
sumber
Menurut Documentation Anda dapat menggunakan maksimum 21.844 karakter jika charset adalah UTF8
Anda tidak perlu menentukan panjangnya. Jika Anda membutuhkan lebih banyak karakter, gunakan tipe data MEDIUMTEXT atau LONGTEXT. Dengan VARCHAR, panjang spesifik bukan untuk persyaratan Penyimpanan, itu hanya untuk bagaimana data diambil dari basis data.
sumber
TINYTEXT
adalah tipe data string yang dapat menyimpan hingga255
karakter.TEXT
adalah tipe data string yang dapat menyimpan hingga65,535
karakter.TEXT
umumnya digunakan untuk artikel singkat.LONGTEXT
adalah tipe data string dengan panjang4,294,967,295
karakter maksimum . GunakanLONGTEXT
jika Anda perlu menyimpan teks besar, seperti bab dari novel.sumber
TEXT
adalah tipe data string yang dapat menyimpan hingga 65.535 karakter. Tapi tetap saja jika Anda ingin menyimpan lebih banyak data maka ubah tipe datanya menjadiLONGTEXT
ALTER TABLE
name_tabel
CHANGEtext_field
SET LONGTEXT CHARACTER SETutf8
LAGIutf8_general_ci
BUKAN;sumber
Untuk versi MySql 8.0.
Persyaratan Penyimpanan Tipe Numerik
Nilai untuk kolom DECIMAL (dan NUMERIC) direpresentasikan menggunakan format biner yang mengemas sembilan angka desimal (basis 10) menjadi empat byte. Penyimpanan untuk bagian bilangan bulat dan pecahan dari masing-masing nilai ditentukan secara terpisah. Setiap kelipatan sembilan digit membutuhkan empat byte, dan digit "sisa" memerlukan beberapa fraksi dari empat byte. Penyimpanan yang diperlukan untuk kelebihan digit diberikan oleh tabel berikut.
Persyaratan Penyimpanan Tipe Tanggal dan Waktu Untuk kolom TIME, DATETIME, dan TIMESTAMP, penyimpanan yang diperlukan untuk tabel yang dibuat sebelum MySQL 5.6.4 berbeda dari tabel yang dibuat dari 5.6.4 pada. Ini disebabkan oleh perubahan pada 5.6.4 yang memungkinkan tipe-tipe ini memiliki bagian fraksional, yang membutuhkan dari 0 hingga 3 byte.
Pada MySQL 5.6.4, penyimpanan untuk YEAR dan DATE tetap tidak berubah. Namun, TIME, DATETIME, dan TIMESTAMP terwakili secara berbeda. DATETIME dikemas lebih efisien, membutuhkan 5 daripada 8 byte untuk bagian yang tidak praktis, dan ketiga bagian memiliki bagian fraksional yang membutuhkan dari 0 hingga 3 byte, tergantung pada ketepatan detik fraksional dari nilai yang disimpan.
Misalnya, TIME (0), TIME (2), TIME (4), dan TIME (6) masing-masing menggunakan 3, 4, 5, dan 6 byte. TIME dan TIME (0) sama dan membutuhkan penyimpanan yang sama.
Untuk detail tentang representasi internal nilai temporal, lihat MySQL Internal: Algoritma dan Struktur Penting.
Persyaratan Penyimpanan Tipe String Dalam tabel berikut, M menunjukkan panjang kolom yang dinyatakan dalam karakter untuk tipe string non-biner dan byte untuk tipe string biner. L mewakili panjang aktual dalam byte dari nilai string yang diberikan.
sumber