VARCHAR có giới hạn không?

Trường ký tự varchar, hoặc độ dài thay đổi, là loại trường được sử dụng thường xuyên nhất để lưu trữ văn bản có độ dài dưới 256 ký tự

mã mẫu
$field['fieldname'] = array[
  'type' => 'varchar',
  'length' => 255, //
  'not null' => FALSE, // TRUE or FALSE.
  'default' => 'some default value',
  'description' => t['field fieldname of table tablename.'],
]

Ghi chú. Độ dài bạn đặt ở đây cho biết số lượng ký tự tối đa mà bạn muốn lưu trữ. Loại VARCHAR của MySQL được khai báo với độ dài cho biết số lượng ký tự tối đa mà bạn muốn lưu trữ. Ví dụ: VARCHARCHAR[30] có thể chứa tối đa 30 ký tự

Ánh xạ trường MySQL trong lược đồ. tập tin inc
  'varchar:normal'  => 'VARCHAR'
Ký tự tối đa được phépPhiên bản MySQLKý tự tối đa được phépMySQL 5. 0. 2 trở về trước255 ký tựMySQL 5. 0. 3 trở lên65,535 ký tựThông tin lưu trữ

L + 1 byte nếu giá trị cột yêu cầu 0 − 255 byte, L + 2 byte nếu giá trị có thể yêu cầu nhiều hơn 255 byte trong đó L là L là độ dài byte của chuỗi mà bạn đang lưu trữ và không phải là kích thước tối đa mà bạn đã đặt

Các giá trị trong cột VARCHAR là các chuỗi có độ dài thay đổi. Độ dài có thể được chỉ định dưới dạng giá trị từ 0 đến 65,535. Độ dài tối đa hiệu quả của VARCHAR tùy thuộc vào kích thước hàng tối đa [65.535 byte, được chia sẻ giữa tất cả các cột] và bộ ký tự được sử dụng

Đảm bảo rằng bạn biết về tác dụng của bộ ký tự nhiều byte. VARCHAR[255] lưu trữ 255 ký tự, có thể nhiều hơn 255 byte

Để viết SQL di động, bạn phải sử dụng các kích thước loại CHARVARCHAR không vượt quá giới hạn của nhãn hiệu cơ sở dữ liệu mục tiêu [Informix, Oracle, SQL Server, v.v.]

Loại CHAR là loại đệm trống. Chuỗi "abc" trong cột CHAR[200] trên thực tế sẽ nhận được thêm 197 số trắng ở cuối. Loại VARCHAR được thiết kế để lưu trữ các chuỗi ký tự có độ dài thay đổi. Do đó, loại CHAR[N] nên được sử dụng cho dữ liệu chuỗi có độ dài cố định [chẳng hạn như mã "ABC-123"], trong khi loại VARCHAR[N] nên được sử dụng cho dữ liệu chuỗi có độ dài thay đổi [chẳng hạn như tên và mô tả]. Hơn nữa, với một số thương hiệu cơ sở dữ liệu, trong các giá trị VARCHAR, khoảng trắng ở cuối có ý nghĩa về mặt ngữ nghĩa, trong khi khoảng trống ở cuối của các giá trị SQL CHAR không có ý nghĩa

Với Informix, loại SQL VARCHAR được thiết kế với giới hạn 255 byte. Mặt khác, loại CHAR có giới hạn lớn hơn nhiều là 32767 byte. Trên thực tế, lẽ ra nó phải là cách khác, vì loại CHAR đệm trống phù hợp hơn với dữ liệu có độ dài cố định nhỏ

Đối với các chuỗi ký tự có độ dài thay đổi lớn, Informix đã giới thiệu loại VARCHAR5, lần đầu tiên có giới hạn 2048 byte và trong các phiên bản IDS trẻ hơn có giới hạn 32739 byte

Hầu hết các thương hiệu cơ sở dữ liệu được Genero hỗ trợ đều có giới hạn cao hơn đối với loại VARCHAR so với loại CHAR. Ví dụ: Oracle DB CHAR có giới hạn là 2000, trong khi VARCHAR9 có giới hạn là 4000 [byte hoặc ký tự, tùy thuộc vào ngữ nghĩa độ dài]

Ghi chú. Giới hạn kích thước loại BDL VARCHAR của Genero là 65524 [giống như loại BDL CHAR], và do đó có thể lưu trữ dữ liệu cột VARCHAR5 của Informix hoặc bất kỳ dữ liệu cột nào của thương hiệu cơ sở dữ liệu ________3____.

Độ dài CHAR nào nên được sử dụng?

Để lưu trữ dữ liệu ký tự ngắn và độ dài cố định, hãy sử dụng cột CHAR[N], trong đó n thường từ 10 đến 100 [byte hoặc ký tự]. Tất cả các thương hiệu cơ sở dữ liệu được Genero hỗ trợ đều có thể hỗ trợ kích thước CHAR như vậy

Độ dài VARCHAR nào nên được sử dụng?

Để lưu trữ các chuỗi ký tự có độ dài thay đổi không vượt quá 255 byte, hãy sử dụng loại VARCHAR[N]. Tất cả các thương hiệu cơ sở dữ liệu được Genero hỗ trợ đều có thể hỗ trợ kích thước VARCHAR như vậy

Varchar trong MySQL là kiểu dữ liệu được sử dụng để lưu trữ văn bản có độ dài tối đa là 65535 ký tự. Các cột varchar trong bảng có chuỗi có độ dài thay đổi có thể chứa số hoặc ký tự hoặc cả hai. Kiểu dữ liệu này chỉ có khả năng lưu trữ 255 ký tự trước phiên bản 5. 0. 3, nhưng với phiên bản này trở đi, nó có thể chứa tới 65535 ký tự. Nó có thể được lưu trữ trong MySQL dưới dạng tiền tố có độ dài 1 byte hoặc 2 byte cộng với kích thước thực

Tiền tố độ dài chỉ định độ dài byte của giá trị chuỗi, không phải kích thước tối đa mà chúng tôi đã đặt. Nếu các giá trị không yêu cầu nhiều hơn 255 byte, một cột sẽ sử dụng tiền tố độ dài cộng với một byte. Nếu các giá trị yêu cầu nhiều hơn 255 byte, một cột sẽ sử dụng tiền tố độ dài cộng với hai byte

Độ dài tối đa của VARCHAR trong MySQL tùy thuộc vào kích thước hàng tối đa là 65.535 byte, được chia sẻ giữa tất cả các cột ngoại trừ cột TEXT/BLOB và bộ ký tự được sử dụng. Nó có nghĩa là tổng số cột không được nhiều hơn 65535 byte

Hãy để chúng tôi hiểu nó với sự giúp đỡ của một ví dụ

Chúng tôi sẽ tạo hai bảng và đặt tên là Test1 và Test2. Cả hai bảng chứa hai cột có tên T1 và T2. Thực hiện câu lệnh sau để tạo bảng "Test1"

Câu lệnh trên đã tạo bảng thành công vì độ dài cột T1 = 32765 cộng 2 byte và T2 = 32766 cộng 2 byte bằng 65535 [32765+2+32766+2]. Vì vậy, chiều dài cột thỏa mãn kích thước hàng tối đa của varchar, là 65535

Bây giờ, chúng ta sẽ xem điều gì sẽ xảy ra nếu kích thước cột vượt quá kích thước tối đa của varchar 65535. Thực hiện câu lệnh dưới đây khi chúng tôi đã tăng kích thước của cột T1 để tạo bảng Test2

Sau khi thực hiện câu lệnh trên, MySQL tạo ra lỗi. Nó có nghĩa là kích thước hàng tối đa không thể vượt quá 65.535 byte. Trong mọi trường hợp, nếu nó tăng lên, câu lệnh không thành công và MySQL sẽ báo lỗi

Trong trường hợp khác, giả sử chúng ta đã tạo một bảng có tên Test3 bằng cách sử dụng câu lệnh bên dưới

Tiếp theo, chèn các giá trị vào bảng bằng cách sử dụng câu lệnh bên dưới

Bây giờ, hãy thực hiện câu lệnh trên. MySQL đưa ra thông báo lỗi. Dữ liệu quá dài đối với cột 'Tên' ở hàng 1. Đầu ra giải thích nó rõ ràng hơn

MySQL VARCHAR và không gian

MySQL không đệm không gian cho các giá trị varchar khi chúng được lưu trữ. MySQL cũng giữ lại các khoảng trắng ở cuối khi chúng lưu trữ hoặc truy xuất các giá trị varchar. Chúng ta có thể hiểu qua ví dụ sau khi câu lệnh chèn thêm giá trị vào cột Tên của bảng Test3

Tiếp theo, thực hiện câu lệnh SELECT để lấy các giá trị

Nó sẽ cho đầu ra sau trong đó MySQL bao gồm khoảng trắng ở cuối khi đếm độ dài vì nó không làm tăng độ dài cột

Tuy nhiên, khi chúng tôi cố gắng chèn một giá trị varchar có khoảng trắng ở cuối vượt quá độ dài cột, MySQL sẽ cắt bớt các khoảng trắng ở cuối. Ngoài ra, MySQL đưa ra cảnh báo. Ví dụ sau giải thích rõ hơn

Câu lệnh trên chèn một giá trị có độ dài là sáu vào cột tên. Giá trị vẫn được chèn vào cột, nhưng MySQL cắt bớt khoảng trắng ở cuối trước khi thêm giá trị. Chúng tôi có thể xác minh bằng truy vấn bên dưới nơi chúng tôi có thể thấy câu lệnh chèn được thêm thành công nhưng có cảnh báo đưa ra. Dữ liệu bị cắt bớt đối với cột 'tên' ở hàng 1

Sự khác biệt giữa Kiểu dữ liệu Char và Varchar

Các kiểu dữ liệu char và varchar đều tuân theo ký tự ASCII. Chúng gần giống nhau nhưng khác nhau ở cách lưu trữ và truy xuất dữ liệu từ cơ sở dữ liệu. Bảng sau đây tóm tắt những khác biệt cơ bản giữa kiểu dữ liệu char và varchar

Giới hạn của VARCHAR là gì?

varchar [ [ n. tối đa ] ] . 1 through 8,000, or use max to indicate a column constraint size up to a maximum storage of 2^31-1 bytes [2 GB].

Chúng tôi có thể sử dụng VARCHAR 1000 không?

Độ dài khóa tối đa là 1000 byte. Điều này cũng có thể được thay đổi bằng cách thay đổi nguồn và biên dịch lại. Đối với trường hợp khóa dài hơn 250 byte, kích thước khối khóa lớn hơn mặc định là 1024 byte được sử dụng. Vì một chỉ mục được tạo cho khóa và vì nó đang hoạt động mà không có chỉ mục, điều này có ý nghĩa

VARCHAR 255 có chiếm nhiều dung lượng hơn không?

VARCHAR cũng phân bổ thêm một chút dung lượng với mỗi giá trị được lưu trữ. Tùy thuộc vào không gian cần thiết để lưu trữ dữ liệu, 1 hoặc 2 byte chi phí sẽ được phân bổ. Nếu dung lượng cần thiết nhỏ hơn 255 byte, tiền tố 1 byte sẽ được thêm vào, nếu không thì tiền tố 2 byte sẽ được sử dụng .

VARCHAR có lãng phí không gian tối đa không?

Ngay cả khi sử dụng varchar[max] cũng không ảnh hưởng đến dung lượng lưu trữ . Thay vào đó, mục tiêu có thể là giới hạn kích thước thực tế của mỗi hàng dữ liệu ở mức ~8000 byte nếu có thể.

Chủ Đề