Computer >> Máy Tính >  >> Lập trình >> MySQL

Độ dài tối đa của cột VARCHAR trong MySQL là bao nhiêu?


Trên thực tế, kiểu dữ liệu VARCHAR lưu trữ dữ liệu ký tự có độ dài thay đổi dưới dạng ký tự byte đơn và ký tự nhiều byte Cú pháp cho kiểu dữ liệu này là VARCHAR (n), trong đó n là số ký tự tối đa và nó phải là được chỉ định trong khi tạo bảng. Trước MySQL 5.03, giá trị của n có thể nằm trong khoảng từ 0 đến 255 nhưng trong và sau MySQL 5.03, giá trị có thể nằm trong khoảng từ 0 đến 65,535.

Số ký tự tối đa được lưu trữ trong VARCHAR phụ thuộc vào kích thước hàng tối đa và bộ ký tự được sử dụng. Nếu chúng ta đang sử dụng bộ ký tự ASCII thì nó có thể lưu trữ 65,535 ký tự vì ASCII sẽ sử dụng 1 byte cho mỗi ký tự. Mặt khác, nếu chúng ta đang sử dụng bộ ký tự utf8 thì giới hạn ký tự sẽ là 21,844 vì utf8 sẽ sử dụng 3 byte cho mỗi ký tự. Giới hạn kích thước hàng tối đa là 65,535 byte, có nghĩa là bao gồm tất cả các cột, nó không được nhiều hơn 65,535 byte.

Ví dụ

mysql> Create Table var_test(FName Varchar(32765) NOT NULL, LName Varchar(32766)
       NOT NULL);
       Query OK, 0 rows affected (0.25 sec)

Truy vấn trên đã tạo một bảng có hai cột, FName Varchar (32765) và LName Varchar (32766). Do đó, tổng độ dài sẽ là 32765 + 2 + 32766 + 2 =65535 (2 byte được sử dụng mỗi cột để lưu trữ độ dài).

mysql> Create Table var_test1(FName varchar(32766) NOT NULL, LName Varchar(32766)
       NOT NULL);
       ERROR 1118 (42000): Row size too large. The maximum row size for the used
       table
       type, not counting BLOBs, is 65535. You have to change some columns to TEXT
       or BLOBs

Bây giờ, khi tăng độ dài thêm 1 byte, MySQL sẽ trả về một lỗi như được hiển thị trong truy vấn ở trên.